diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-28 17:44:37 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-04-28 17:44:37 -0400 |
commit | c5dd43ec65c1e1e378df043d517d40ed70a32cbe (patch) | |
tree | f2bfaedd3454d163c4792f79d440b344d33fd42a | |
parent | f04ff9cbb6389a6db64659cf917a1b6ac159f9f2 (diff) |
ide: add IDE_HFLAG_MMIO host flag (take 2)
* Add IDE_HFLAG_MMIO host flag and set it for hosts which use
default_hwif_mmiops().
v2:
* Fix kernel panic in pmac host driver (',' should be '|').
Thanks to Kamalesh for reporting it + testing the fix
and to Andrew for hinting me about the source of the issue.
Cc: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r-- | drivers/ide/arm/icside.c | 2 | ||||
-rw-r--r-- | drivers/ide/arm/palm_bk3710.c | 1 | ||||
-rw-r--r-- | drivers/ide/arm/rapide.c | 1 | ||||
-rw-r--r-- | drivers/ide/legacy/ide_platform.c | 4 | ||||
-rw-r--r-- | drivers/ide/mips/swarm.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/sgiioc4.c | 1 | ||||
-rw-r--r-- | drivers/ide/pci/siimage.c | 1 | ||||
-rw-r--r-- | drivers/ide/ppc/pmac.c | 1 | ||||
-rw-r--r-- | include/linux/ide.h | 2 |
9 files changed, 12 insertions, 2 deletions
diff --git a/drivers/ide/arm/icside.c b/drivers/ide/arm/icside.c index 65038ca35e10..061456914ca3 100644 --- a/drivers/ide/arm/icside.c +++ b/drivers/ide/arm/icside.c | |||
@@ -483,7 +483,7 @@ static const struct ide_port_info icside_v6_port_info __initdata = { | |||
483 | .init_dma = icside_dma_off_init, | 483 | .init_dma = icside_dma_off_init, |
484 | .port_ops = &icside_v6_no_dma_port_ops, | 484 | .port_ops = &icside_v6_no_dma_port_ops, |
485 | .dma_ops = &icside_v6_dma_ops, | 485 | .dma_ops = &icside_v6_dma_ops, |
486 | .host_flags = IDE_HFLAG_SERIALIZE, | 486 | .host_flags = IDE_HFLAG_SERIALIZE | IDE_HFLAG_MMIO, |
487 | .mwdma_mask = ATA_MWDMA2, | 487 | .mwdma_mask = ATA_MWDMA2, |
488 | .swdma_mask = ATA_SWDMA2, | 488 | .swdma_mask = ATA_SWDMA2, |
489 | }; | 489 | }; |
diff --git a/drivers/ide/arm/palm_bk3710.c b/drivers/ide/arm/palm_bk3710.c index aaf32541622d..96378ebfb31f 100644 --- a/drivers/ide/arm/palm_bk3710.c +++ b/drivers/ide/arm/palm_bk3710.c | |||
@@ -342,6 +342,7 @@ static const struct ide_port_ops palm_bk3710_ports_ops = { | |||
342 | static const struct ide_port_info __devinitdata palm_bk3710_port_info = { | 342 | static const struct ide_port_info __devinitdata palm_bk3710_port_info = { |
343 | .init_dma = palm_bk3710_init_dma, | 343 | .init_dma = palm_bk3710_init_dma, |
344 | .port_ops = &palm_bk3710_ports_ops, | 344 | .port_ops = &palm_bk3710_ports_ops, |
345 | .host_flags = IDE_HFLAG_MMIO, | ||
345 | .pio_mask = ATA_PIO4, | 346 | .pio_mask = ATA_PIO4, |
346 | .udma_mask = ATA_UDMA4, /* (input clk 99MHz) */ | 347 | .udma_mask = ATA_UDMA4, /* (input clk 99MHz) */ |
347 | .mwdma_mask = ATA_MWDMA2, | 348 | .mwdma_mask = ATA_MWDMA2, |
diff --git a/drivers/ide/arm/rapide.c b/drivers/ide/arm/rapide.c index babc1a5e128d..1747b2358775 100644 --- a/drivers/ide/arm/rapide.c +++ b/drivers/ide/arm/rapide.c | |||
@@ -53,6 +53,7 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
53 | 53 | ||
54 | ide_init_port_hw(hwif, &hw); | 54 | ide_init_port_hw(hwif, &hw); |
55 | 55 | ||
56 | hwif->host_flags = IDE_HFLAG_MMIO; | ||
56 | default_hwif_mmiops(hwif); | 57 | default_hwif_mmiops(hwif); |
57 | 58 | ||
58 | idx[0] = hwif->index; | 59 | idx[0] = hwif->index; |
diff --git a/drivers/ide/legacy/ide_platform.c b/drivers/ide/legacy/ide_platform.c index 8279dc7ca4c0..d3bc3f24e05d 100644 --- a/drivers/ide/legacy/ide_platform.c +++ b/drivers/ide/legacy/ide_platform.c | |||
@@ -101,8 +101,10 @@ static int __devinit plat_ide_probe(struct platform_device *pdev) | |||
101 | 101 | ||
102 | ide_init_port_hw(hwif, &hw); | 102 | ide_init_port_hw(hwif, &hw); |
103 | 103 | ||
104 | if (mmio) | 104 | if (mmio) { |
105 | hwif->host_flags = IDE_HFLAG_MMIO; | ||
105 | default_hwif_mmiops(hwif); | 106 | default_hwif_mmiops(hwif); |
107 | } | ||
106 | 108 | ||
107 | idx[0] = hwif->index; | 109 | idx[0] = hwif->index; |
108 | 110 | ||
diff --git a/drivers/ide/mips/swarm.c b/drivers/ide/mips/swarm.c index 68947626e4aa..712d17bdd470 100644 --- a/drivers/ide/mips/swarm.c +++ b/drivers/ide/mips/swarm.c | |||
@@ -109,6 +109,7 @@ static int __devinit swarm_ide_probe(struct device *dev) | |||
109 | base = ioremap(offset, size); | 109 | base = ioremap(offset, size); |
110 | 110 | ||
111 | /* Setup MMIO ops. */ | 111 | /* Setup MMIO ops. */ |
112 | hwif->host_flags = IDE_HFLAG_MMIO; | ||
112 | default_hwif_mmiops(hwif); | 113 | default_hwif_mmiops(hwif); |
113 | 114 | ||
114 | hwif->chipset = ide_generic; | 115 | hwif->chipset = ide_generic; |
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c index 63e28f4e6d3b..16a0bce17d69 100644 --- a/drivers/ide/pci/sgiioc4.c +++ b/drivers/ide/pci/sgiioc4.c | |||
@@ -573,6 +573,7 @@ static const struct ide_port_info sgiioc4_port_info __devinitdata = { | |||
573 | .init_dma = ide_dma_sgiioc4, | 573 | .init_dma = ide_dma_sgiioc4, |
574 | .port_ops = &sgiioc4_port_ops, | 574 | .port_ops = &sgiioc4_port_ops, |
575 | .dma_ops = &sgiioc4_dma_ops, | 575 | .dma_ops = &sgiioc4_dma_ops, |
576 | .host_flags = IDE_HFLAG_MMIO, | ||
576 | .mwdma_mask = ATA_MWDMA2_ONLY, | 577 | .mwdma_mask = ATA_MWDMA2_ONLY, |
577 | }; | 578 | }; |
578 | 579 | ||
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c index c2040a017f47..076a476c3e3d 100644 --- a/drivers/ide/pci/siimage.c +++ b/drivers/ide/pci/siimage.c | |||
@@ -630,6 +630,7 @@ static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif) | |||
630 | * Fill in the basic HWIF bits | 630 | * Fill in the basic HWIF bits |
631 | */ | 631 | */ |
632 | 632 | ||
633 | hwif->host_flags |= IDE_HFLAG_MMIO; | ||
633 | default_hwif_mmiops(hwif); | 634 | default_hwif_mmiops(hwif); |
634 | hwif->hwif_data = addr; | 635 | hwif->hwif_data = addr; |
635 | 636 | ||
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index 3cac6b2790dd..48aa019127bc 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -941,6 +941,7 @@ static const struct ide_port_info pmac_port_info = { | |||
941 | .port_ops = &pmac_ide_port_ops, | 941 | .port_ops = &pmac_ide_port_ops, |
942 | .host_flags = IDE_HFLAG_SET_PIO_MODE_KEEP_DMA | | 942 | .host_flags = IDE_HFLAG_SET_PIO_MODE_KEEP_DMA | |
943 | IDE_HFLAG_POST_SET_MODE | | 943 | IDE_HFLAG_POST_SET_MODE | |
944 | IDE_HFLAG_MMIO | | ||
944 | IDE_HFLAG_UNMASK_IRQS, | 945 | IDE_HFLAG_UNMASK_IRQS, |
945 | .pio_mask = ATA_PIO4, | 946 | .pio_mask = ATA_PIO4, |
946 | .mwdma_mask = ATA_MWDMA2, | 947 | .mwdma_mask = ATA_MWDMA2, |
diff --git a/include/linux/ide.h b/include/linux/ide.h index b89b95dcb708..8e79875f9872 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -1069,6 +1069,8 @@ enum { | |||
1069 | IDE_HFLAG_NO_DMA = (1 << 14), | 1069 | IDE_HFLAG_NO_DMA = (1 << 14), |
1070 | /* check if host is PCI IDE device before allowing DMA */ | 1070 | /* check if host is PCI IDE device before allowing DMA */ |
1071 | IDE_HFLAG_NO_AUTODMA = (1 << 15), | 1071 | IDE_HFLAG_NO_AUTODMA = (1 << 15), |
1072 | /* host uses MMIO */ | ||
1073 | IDE_HFLAG_MMIO = (1 << 16), | ||
1072 | /* host is CS5510/CS5520 */ | 1074 | /* host is CS5510/CS5520 */ |
1073 | IDE_HFLAG_CS5520 = IDE_HFLAG_VDMA, | 1075 | IDE_HFLAG_CS5520 = IDE_HFLAG_VDMA, |
1074 | /* no LBA48 */ | 1076 | /* no LBA48 */ |