ide: add IDE_HFLAG_SERIALIZE host flag
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 18 Oct 2007 22:30:10 +0000 (00:30 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Thu, 18 Oct 2007 22:30:10 +0000 (00:30 +0200)
Add IDE_HFLAG_SERIALIZE host flag to tell ide_pci_setup_ports() to set
hwif/mate->serialized and convert aec62xx, cs5530 and sc1200 host drivers
to use it.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/pci/aec62xx.c
drivers/ide/pci/cs5530.c
drivers/ide/pci/sc1200.c
drivers/ide/setup-pci.c
include/linux/ide.h

index be0d077dbbdf673732dd06c5ec9f1a429df5a88e..f3912aa8e576e5ce0602167b355024d379bbeb28 100644 (file)
@@ -187,11 +187,9 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif)
 
        hwif->set_pio_mode = &aec_set_pio_mode;
 
-       if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) {
-               if(hwif->mate)
-                       hwif->mate->serialized = hwif->serialized = 1;
+       if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF)
                hwif->set_dma_mode = &aec6210_set_mode;
-       else
+       else
                hwif->set_dma_mode = &aec6260_set_mode;
 
        hwif->drives[0].autotune = hwif->drives[1].autotune = 1;
@@ -219,7 +217,9 @@ static ide_pci_device_t aec62xx_chipsets[] __devinitdata = {
                .init_chipset   = init_chipset_aec62xx,
                .init_hwif      = init_hwif_aec62xx,
                .enablebits     = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}},
-               .host_flags     = IDE_HFLAG_NO_ATAPI_DMA | IDE_HFLAG_OFF_BOARD,
+               .host_flags     = IDE_HFLAG_SERIALIZE |
+                                 IDE_HFLAG_NO_ATAPI_DMA |
+                                 IDE_HFLAG_OFF_BOARD,
                .pio_mask       = ATA_PIO4,
                .mwdma_mask     = ATA_MWDMA2,
                .udma_mask      = ATA_UDMA2,
index 5e77a3d8e6d0051d815f80c6bce98fbec1869ca2..0324a8a88ef4dad2d1fbbfe5caabf43f30cc9444 100644 (file)
@@ -245,9 +245,6 @@ static void __devinit init_hwif_cs5530 (ide_hwif_t *hwif)
        unsigned long basereg;
        u32 d0_timings;
 
-       if (hwif->mate)
-               hwif->serialized = hwif->mate->serialized = 1;
-
        hwif->set_pio_mode = &cs5530_set_pio_mode;
        hwif->set_dma_mode = &cs5530_set_dma_mode;
 
@@ -271,7 +268,9 @@ static ide_pci_device_t cs5530_chipset __devinitdata = {
        .name           = "CS5530",
        .init_chipset   = init_chipset_cs5530,
        .init_hwif      = init_hwif_cs5530,
-       .host_flags     = IDE_HFLAG_POST_SET_MODE | IDE_HFLAG_BOOTABLE,
+       .host_flags     = IDE_HFLAG_SERIALIZE |
+                         IDE_HFLAG_POST_SET_MODE |
+                         IDE_HFLAG_BOOTABLE,
        .pio_mask       = ATA_PIO4,
        .mwdma_mask     = ATA_MWDMA2,
        .udma_mask      = ATA_UDMA2,
index 252b12f9c9541dde05c91dcfdf68b1cf8f3c4e11..2471a6dcf6fae2d801ec71fa1335a546ff6ac1f2 100644 (file)
@@ -362,9 +362,6 @@ static int sc1200_resume (struct pci_dev *dev)
  */
 static void __devinit init_hwif_sc1200 (ide_hwif_t *hwif)
 {
-       if (hwif->mate)
-               hwif->serialized = hwif->mate->serialized = 1;
-
        hwif->set_pio_mode = &sc1200_set_pio_mode;
        hwif->set_dma_mode = &sc1200_set_dma_mode;
 
@@ -381,7 +378,9 @@ static void __devinit init_hwif_sc1200 (ide_hwif_t *hwif)
 static ide_pci_device_t sc1200_chipset __devinitdata = {
        .name           = "SC1200",
        .init_hwif      = init_hwif_sc1200,
-       .host_flags     = IDE_HFLAG_ABUSE_DMA_MODES | IDE_HFLAG_POST_SET_MODE |
+       .host_flags     = IDE_HFLAG_SERIALIZE |
+                         IDE_HFLAG_POST_SET_MODE |
+                         IDE_HFLAG_ABUSE_DMA_MODES |
                          IDE_HFLAG_BOOTABLE,
        .pio_mask       = ATA_PIO4,
        .mwdma_mask     = ATA_MWDMA2,
index 1da9935ba9482962b59b90a8951388a791490e24..aae4806f0603888ff561f69c05ec61110a174832 100644 (file)
@@ -565,6 +565,9 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int pciirq, a
                hwif->host_flags = d->host_flags;
                hwif->pio_mask = d->pio_mask;
 
+               if ((d->host_flags & IDE_HFLAG_SERIALIZE) && hwif->mate)
+                       hwif->mate->serialized = hwif->serialized = 1;
+
                if (hwif->dma_base) {
                        hwif->swdma_mask = d->swdma_mask;
                        hwif->mwdma_mask = d->mwdma_mask;
index b12510d21f25e1102cc7c3fdbdb9dd09006dc03d..659b60abc259beb24cd9c06a33f0e581eec9baba 100644 (file)
@@ -1257,6 +1257,8 @@ enum {
        IDE_HFLAG_NO_LBA48_DMA          = (1 << 18),
        /* data FIFO is cleared by an error */
        IDE_HFLAG_ERROR_STOPS_FIFO      = (1 << 19),
+       /* serialize ports */
+       IDE_HFLAG_SERIALIZE             = (1 << 20),
 };
 
 #ifdef CONFIG_BLK_DEV_OFFBOARD