libata-sff: ap->[last_]ctl are SFF specific
authorTejun Heo <tj@kernel.org>
Mon, 10 May 2010 19:41:37 +0000 (21:41 +0200)
committerJeff Garzik <jgarzik@redhat.com>
Wed, 19 May 2010 17:35:47 +0000 (13:35 -0400)
ap->[last_]ctl are specific to SFF controllers.  Put them inside
CONFIG_ATA_SFF and move initialization into ata_sff_port_init().

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/libata-core.c
drivers/ata/libata-sff.c
include/linux/libata.h

index 200f49d..bf6ffc1 100644 (file)
@@ -5634,10 +5634,8 @@ struct ata_port *ata_port_alloc(struct ata_host *host)
        ap->pflags |= ATA_PFLAG_INITIALIZING;
        ap->lock = &host->lock;
        ap->print_id = -1;
-       ap->ctl = ATA_DEVCTL_OBS;
        ap->host = host;
        ap->dev = host->dev;
-       ap->last_ctl = 0xFF;
 
 #if defined(ATA_VERBOSE_DEBUG)
        /* turn on all debugging levels */
index 6a103b3..8a1396f 100644 (file)
@@ -3074,6 +3074,8 @@ EXPORT_SYMBOL_GPL(ata_pci_bmdma_init);
  */
 void ata_sff_port_init(struct ata_port *ap)
 {
+       ap->ctl = ATA_DEVCTL_OBS;
+       ap->last_ctl = 0xFF;
 }
 
 int __init ata_sff_init(void)
index 19f716e..85b99b8 100644 (file)
@@ -721,10 +721,10 @@ struct ata_port {
 
 #ifdef CONFIG_ATA_SFF
        struct ata_ioports      ioaddr; /* ATA cmd/ctl/dma register blocks */
-#endif /* CONFIG_ATA_SFF */
-
        u8                      ctl;    /* cache of ATA control register */
        u8                      last_ctl;       /* Cache last written value */
+#endif /* CONFIG_ATA_SFF */
+
        unsigned int            pio_mask;
        unsigned int            mwdma_mask;
        unsigned int            udma_mask;
@@ -1435,7 +1435,11 @@ static inline void ata_tf_init(struct ata_device *dev, struct ata_taskfile *tf)
 {
        memset(tf, 0, sizeof(*tf));
 
+#ifdef CONFIG_ATA_SFF
        tf->ctl = dev->link->ap->ctl;
+#else
+       tf->ctl = ATA_DEVCTL_OBS;
+#endif
        if (dev->devno == 0)
                tf->device = ATA_DEVICE_OBS;
        else