diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-10-18 18:30:10 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2007-10-18 18:30:10 -0400 |
commit | 1c51361a9867021dd7444b56d87834003d4ca67d (patch) | |
tree | 2b14e5a4d85b9d46571c5839bbcce6f90be8b616 | |
parent | ed67b92385a5afddc98d5ff0894b2854c4a54dac (diff) |
ide: add IDE_HFLAG_SERIALIZE host flag
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>
-rw-r--r-- | drivers/ide/pci/aec62xx.c | 10 | ||||
-rw-r--r-- | drivers/ide/pci/cs5530.c | 7 | ||||
-rw-r--r-- | drivers/ide/pci/sc1200.c | 7 | ||||
-rw-r--r-- | drivers/ide/setup-pci.c | 3 | ||||
-rw-r--r-- | include/linux/ide.h | 2 |
5 files changed, 16 insertions, 13 deletions
diff --git a/drivers/ide/pci/aec62xx.c b/drivers/ide/pci/aec62xx.c index be0d077dbbdf..f3912aa8e576 100644 --- a/drivers/ide/pci/aec62xx.c +++ b/drivers/ide/pci/aec62xx.c | |||
@@ -187,11 +187,9 @@ static void __devinit init_hwif_aec62xx(ide_hwif_t *hwif) | |||
187 | 187 | ||
188 | hwif->set_pio_mode = &aec_set_pio_mode; | 188 | hwif->set_pio_mode = &aec_set_pio_mode; |
189 | 189 | ||
190 | if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) { | 190 | if (dev->device == PCI_DEVICE_ID_ARTOP_ATP850UF) |
191 | if(hwif->mate) | ||
192 | hwif->mate->serialized = hwif->serialized = 1; | ||
193 | hwif->set_dma_mode = &aec6210_set_mode; | 191 | hwif->set_dma_mode = &aec6210_set_mode; |
194 | } else | 192 | else |
195 | hwif->set_dma_mode = &aec6260_set_mode; | 193 | hwif->set_dma_mode = &aec6260_set_mode; |
196 | 194 | ||
197 | hwif->drives[0].autotune = hwif->drives[1].autotune = 1; | 195 | hwif->drives[0].autotune = hwif->drives[1].autotune = 1; |
@@ -219,7 +217,9 @@ static ide_pci_device_t aec62xx_chipsets[] __devinitdata = { | |||
219 | .init_chipset = init_chipset_aec62xx, | 217 | .init_chipset = init_chipset_aec62xx, |
220 | .init_hwif = init_hwif_aec62xx, | 218 | .init_hwif = init_hwif_aec62xx, |
221 | .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, | 219 | .enablebits = {{0x4a,0x02,0x02}, {0x4a,0x04,0x04}}, |
222 | .host_flags = IDE_HFLAG_NO_ATAPI_DMA | IDE_HFLAG_OFF_BOARD, | 220 | .host_flags = IDE_HFLAG_SERIALIZE | |
221 | IDE_HFLAG_NO_ATAPI_DMA | | ||
222 | IDE_HFLAG_OFF_BOARD, | ||
223 | .pio_mask = ATA_PIO4, | 223 | .pio_mask = ATA_PIO4, |
224 | .mwdma_mask = ATA_MWDMA2, | 224 | .mwdma_mask = ATA_MWDMA2, |
225 | .udma_mask = ATA_UDMA2, | 225 | .udma_mask = ATA_UDMA2, |
diff --git a/drivers/ide/pci/cs5530.c b/drivers/ide/pci/cs5530.c index 5e77a3d8e6d0..0324a8a88ef4 100644 --- a/drivers/ide/pci/cs5530.c +++ b/drivers/ide/pci/cs5530.c | |||
@@ -245,9 +245,6 @@ static void __devinit init_hwif_cs5530 (ide_hwif_t *hwif) | |||
245 | unsigned long basereg; | 245 | unsigned long basereg; |
246 | u32 d0_timings; | 246 | u32 d0_timings; |
247 | 247 | ||
248 | if (hwif->mate) | ||
249 | hwif->serialized = hwif->mate->serialized = 1; | ||
250 | |||
251 | hwif->set_pio_mode = &cs5530_set_pio_mode; | 248 | hwif->set_pio_mode = &cs5530_set_pio_mode; |
252 | hwif->set_dma_mode = &cs5530_set_dma_mode; | 249 | hwif->set_dma_mode = &cs5530_set_dma_mode; |
253 | 250 | ||
@@ -271,7 +268,9 @@ static ide_pci_device_t cs5530_chipset __devinitdata = { | |||
271 | .name = "CS5530", | 268 | .name = "CS5530", |
272 | .init_chipset = init_chipset_cs5530, | 269 | .init_chipset = init_chipset_cs5530, |
273 | .init_hwif = init_hwif_cs5530, | 270 | .init_hwif = init_hwif_cs5530, |
274 | .host_flags = IDE_HFLAG_POST_SET_MODE | IDE_HFLAG_BOOTABLE, | 271 | .host_flags = IDE_HFLAG_SERIALIZE | |
272 | IDE_HFLAG_POST_SET_MODE | | ||
273 | IDE_HFLAG_BOOTABLE, | ||
275 | .pio_mask = ATA_PIO4, | 274 | .pio_mask = ATA_PIO4, |
276 | .mwdma_mask = ATA_MWDMA2, | 275 | .mwdma_mask = ATA_MWDMA2, |
277 | .udma_mask = ATA_UDMA2, | 276 | .udma_mask = ATA_UDMA2, |
diff --git a/drivers/ide/pci/sc1200.c b/drivers/ide/pci/sc1200.c index 252b12f9c954..2471a6dcf6fa 100644 --- a/drivers/ide/pci/sc1200.c +++ b/drivers/ide/pci/sc1200.c | |||
@@ -362,9 +362,6 @@ static int sc1200_resume (struct pci_dev *dev) | |||
362 | */ | 362 | */ |
363 | static void __devinit init_hwif_sc1200 (ide_hwif_t *hwif) | 363 | static void __devinit init_hwif_sc1200 (ide_hwif_t *hwif) |
364 | { | 364 | { |
365 | if (hwif->mate) | ||
366 | hwif->serialized = hwif->mate->serialized = 1; | ||
367 | |||
368 | hwif->set_pio_mode = &sc1200_set_pio_mode; | 365 | hwif->set_pio_mode = &sc1200_set_pio_mode; |
369 | hwif->set_dma_mode = &sc1200_set_dma_mode; | 366 | hwif->set_dma_mode = &sc1200_set_dma_mode; |
370 | 367 | ||
@@ -381,7 +378,9 @@ static void __devinit init_hwif_sc1200 (ide_hwif_t *hwif) | |||
381 | static ide_pci_device_t sc1200_chipset __devinitdata = { | 378 | static ide_pci_device_t sc1200_chipset __devinitdata = { |
382 | .name = "SC1200", | 379 | .name = "SC1200", |
383 | .init_hwif = init_hwif_sc1200, | 380 | .init_hwif = init_hwif_sc1200, |
384 | .host_flags = IDE_HFLAG_ABUSE_DMA_MODES | IDE_HFLAG_POST_SET_MODE | | 381 | .host_flags = IDE_HFLAG_SERIALIZE | |
382 | IDE_HFLAG_POST_SET_MODE | | ||
383 | IDE_HFLAG_ABUSE_DMA_MODES | | ||
385 | IDE_HFLAG_BOOTABLE, | 384 | IDE_HFLAG_BOOTABLE, |
386 | .pio_mask = ATA_PIO4, | 385 | .pio_mask = ATA_PIO4, |
387 | .mwdma_mask = ATA_MWDMA2, | 386 | .mwdma_mask = ATA_MWDMA2, |
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c index 1da9935ba948..aae4806f0603 100644 --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c | |||
@@ -565,6 +565,9 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int pciirq, a | |||
565 | hwif->host_flags = d->host_flags; | 565 | hwif->host_flags = d->host_flags; |
566 | hwif->pio_mask = d->pio_mask; | 566 | hwif->pio_mask = d->pio_mask; |
567 | 567 | ||
568 | if ((d->host_flags & IDE_HFLAG_SERIALIZE) && hwif->mate) | ||
569 | hwif->mate->serialized = hwif->serialized = 1; | ||
570 | |||
568 | if (hwif->dma_base) { | 571 | if (hwif->dma_base) { |
569 | hwif->swdma_mask = d->swdma_mask; | 572 | hwif->swdma_mask = d->swdma_mask; |
570 | hwif->mwdma_mask = d->mwdma_mask; | 573 | hwif->mwdma_mask = d->mwdma_mask; |
diff --git a/include/linux/ide.h b/include/linux/ide.h index b12510d21f25..659b60abc259 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -1257,6 +1257,8 @@ enum { | |||
1257 | IDE_HFLAG_NO_LBA48_DMA = (1 << 18), | 1257 | IDE_HFLAG_NO_LBA48_DMA = (1 << 18), |
1258 | /* data FIFO is cleared by an error */ | 1258 | /* data FIFO is cleared by an error */ |
1259 | IDE_HFLAG_ERROR_STOPS_FIFO = (1 << 19), | 1259 | IDE_HFLAG_ERROR_STOPS_FIFO = (1 << 19), |
1260 | /* serialize ports */ | ||
1261 | IDE_HFLAG_SERIALIZE = (1 << 20), | ||
1260 | }; | 1262 | }; |
1261 | 1263 | ||
1262 | #ifdef CONFIG_BLK_DEV_OFFBOARD | 1264 | #ifdef CONFIG_BLK_DEV_OFFBOARD |