diff options
-rw-r--r-- | drivers/ide/arm/icside.c | 5 | ||||
-rw-r--r-- | drivers/ide/arm/palm_bk3710.c | 2 | ||||
-rw-r--r-- | drivers/ide/arm/rapide.c | 2 | ||||
-rw-r--r-- | drivers/ide/h8300/ide-h8300.c | 2 | ||||
-rw-r--r-- | drivers/ide/ide-iops.c | 28 | ||||
-rw-r--r-- | drivers/ide/ide.c | 1 | ||||
-rw-r--r-- | drivers/ide/legacy/ide_platform.c | 4 | ||||
-rw-r--r-- | drivers/ide/mips/swarm.c | 3 | ||||
-rw-r--r-- | drivers/ide/pci/ns87415.c | 46 | ||||
-rw-r--r-- | drivers/ide/pci/scc_pata.c | 12 | ||||
-rw-r--r-- | drivers/ide/pci/sgiioc4.c | 3 | ||||
-rw-r--r-- | drivers/ide/pci/siimage.c | 2 | ||||
-rw-r--r-- | drivers/ide/ppc/pmac.c | 13 | ||||
-rw-r--r-- | include/linux/ide.h | 7 |
14 files changed, 15 insertions, 115 deletions
diff --git a/drivers/ide/arm/icside.c b/drivers/ide/arm/icside.c index f73422dd8474..0fd01d630f12 100644 --- a/drivers/ide/arm/icside.c +++ b/drivers/ide/arm/icside.c | |||
@@ -469,8 +469,6 @@ icside_register_v5(struct icside_state *state, struct expansion_card *ec) | |||
469 | if (!hwif) | 469 | if (!hwif) |
470 | return -ENODEV; | 470 | return -ENODEV; |
471 | 471 | ||
472 | default_hwif_mmiops(hwif); | ||
473 | |||
474 | state->hwif[0] = hwif; | 472 | state->hwif[0] = hwif; |
475 | 473 | ||
476 | ecard_set_drvdata(ec, state); | 474 | ecard_set_drvdata(ec, state); |
@@ -547,14 +545,11 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec) | |||
547 | return -ENODEV; | 545 | return -ENODEV; |
548 | 546 | ||
549 | hwif->chipset = ide_acorn; | 547 | hwif->chipset = ide_acorn; |
550 | default_hwif_mmiops(hwif); | ||
551 | 548 | ||
552 | idx[0] = hwif->index; | 549 | idx[0] = hwif->index; |
553 | 550 | ||
554 | mate = ide_find_port(); | 551 | mate = ide_find_port(); |
555 | if (mate) { | 552 | if (mate) { |
556 | default_hwif_mmiops(mate); | ||
557 | |||
558 | hws[1] = &hw[1]; | 553 | hws[1] = &hw[1]; |
559 | idx[1] = mate->index; | 554 | idx[1] = mate->index; |
560 | } | 555 | } |
diff --git a/drivers/ide/arm/palm_bk3710.c b/drivers/ide/arm/palm_bk3710.c index 0229d794d909..545563bc7e23 100644 --- a/drivers/ide/arm/palm_bk3710.c +++ b/drivers/ide/arm/palm_bk3710.c | |||
@@ -399,8 +399,6 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev) | |||
399 | 399 | ||
400 | i = hwif->index; | 400 | i = hwif->index; |
401 | 401 | ||
402 | default_hwif_mmiops(hwif); | ||
403 | |||
404 | idx[0] = i; | 402 | idx[0] = i; |
405 | 403 | ||
406 | ide_device_add(idx, &palm_bk3710_port_info, hws); | 404 | ide_device_add(idx, &palm_bk3710_port_info, hws); |
diff --git a/drivers/ide/arm/rapide.c b/drivers/ide/arm/rapide.c index 01896f6e8acf..a45c2f694949 100644 --- a/drivers/ide/arm/rapide.c +++ b/drivers/ide/arm/rapide.c | |||
@@ -59,8 +59,6 @@ rapide_probe(struct expansion_card *ec, const struct ecard_id *id) | |||
59 | goto release; | 59 | goto release; |
60 | } | 60 | } |
61 | 61 | ||
62 | default_hwif_mmiops(hwif); | ||
63 | |||
64 | idx[0] = hwif->index; | 62 | idx[0] = hwif->index; |
65 | 63 | ||
66 | ide_device_add(idx, &rapide_port_info, hws); | 64 | ide_device_add(idx, &rapide_port_info, hws); |
diff --git a/drivers/ide/h8300/ide-h8300.c b/drivers/ide/h8300/ide-h8300.c index 548a2bf232c9..0795d6554913 100644 --- a/drivers/ide/h8300/ide-h8300.c +++ b/drivers/ide/h8300/ide-h8300.c | |||
@@ -171,8 +171,6 @@ static inline void hw_setup(hw_regs_t *hw) | |||
171 | 171 | ||
172 | static inline void hwif_setup(ide_hwif_t *hwif) | 172 | static inline void hwif_setup(ide_hwif_t *hwif) |
173 | { | 173 | { |
174 | default_hwif_iops(hwif); | ||
175 | |||
176 | hwif->tf_load = h8300_tf_load; | 174 | hwif->tf_load = h8300_tf_load; |
177 | hwif->tf_read = h8300_tf_read; | 175 | hwif->tf_read = h8300_tf_read; |
178 | 176 | ||
diff --git a/drivers/ide/ide-iops.c b/drivers/ide/ide-iops.c index cb11c7861a50..6c54fe1f9841 100644 --- a/drivers/ide/ide-iops.c +++ b/drivers/ide/ide-iops.c | |||
@@ -42,18 +42,6 @@ static void ide_outb (u8 val, unsigned long port) | |||
42 | outb(val, port); | 42 | outb(val, port); |
43 | } | 43 | } |
44 | 44 | ||
45 | static void ide_outbsync(ide_hwif_t *hwif, u8 addr, unsigned long port) | ||
46 | { | ||
47 | outb(addr, port); | ||
48 | } | ||
49 | |||
50 | void default_hwif_iops (ide_hwif_t *hwif) | ||
51 | { | ||
52 | hwif->OUTB = ide_outb; | ||
53 | hwif->OUTBSYNC = ide_outbsync; | ||
54 | hwif->INB = ide_inb; | ||
55 | } | ||
56 | |||
57 | /* | 45 | /* |
58 | * MMIO operations, typically used for SATA controllers | 46 | * MMIO operations, typically used for SATA controllers |
59 | */ | 47 | */ |
@@ -68,22 +56,6 @@ static void ide_mm_outb (u8 value, unsigned long port) | |||
68 | writeb(value, (void __iomem *) port); | 56 | writeb(value, (void __iomem *) port); |
69 | } | 57 | } |
70 | 58 | ||
71 | static void ide_mm_outbsync(ide_hwif_t *hwif, u8 value, unsigned long port) | ||
72 | { | ||
73 | writeb(value, (void __iomem *) port); | ||
74 | } | ||
75 | |||
76 | void default_hwif_mmiops (ide_hwif_t *hwif) | ||
77 | { | ||
78 | hwif->OUTB = ide_mm_outb; | ||
79 | /* Most systems will need to override OUTBSYNC, alas however | ||
80 | this one is controller specific! */ | ||
81 | hwif->OUTBSYNC = ide_mm_outbsync; | ||
82 | hwif->INB = ide_mm_inb; | ||
83 | } | ||
84 | |||
85 | EXPORT_SYMBOL(default_hwif_mmiops); | ||
86 | |||
87 | void SELECT_DRIVE (ide_drive_t *drive) | 59 | void SELECT_DRIVE (ide_drive_t *drive) |
88 | { | 60 | { |
89 | ide_hwif_t *hwif = drive->hwif; | 61 | ide_hwif_t *hwif = drive->hwif; |
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index b6018f7b0907..434dd02a4bdc 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
@@ -101,7 +101,6 @@ void ide_init_port_data(ide_hwif_t *hwif, unsigned int index) | |||
101 | 101 | ||
102 | init_completion(&hwif->gendev_rel_comp); | 102 | init_completion(&hwif->gendev_rel_comp); |
103 | 103 | ||
104 | default_hwif_iops(hwif); | ||
105 | default_hwif_transport(hwif); | 104 | default_hwif_transport(hwif); |
106 | 105 | ||
107 | ide_port_init_devices_data(hwif); | 106 | ide_port_init_devices_data(hwif); |
diff --git a/drivers/ide/legacy/ide_platform.c b/drivers/ide/legacy/ide_platform.c index 609da0d43196..3d71e336a221 100644 --- a/drivers/ide/legacy/ide_platform.c +++ b/drivers/ide/legacy/ide_platform.c | |||
@@ -103,10 +103,8 @@ static int __devinit plat_ide_probe(struct platform_device *pdev) | |||
103 | plat_ide_setup_ports(&hw, base, alt_base, pdata, res_irq->start); | 103 | plat_ide_setup_ports(&hw, base, alt_base, pdata, res_irq->start); |
104 | hw.dev = &pdev->dev; | 104 | hw.dev = &pdev->dev; |
105 | 105 | ||
106 | if (mmio) { | 106 | if (mmio) |
107 | d.host_flags |= IDE_HFLAG_MMIO; | 107 | d.host_flags |= IDE_HFLAG_MMIO; |
108 | default_hwif_mmiops(hwif); | ||
109 | } | ||
110 | 108 | ||
111 | idx[0] = hwif->index; | 109 | idx[0] = hwif->index; |
112 | 110 | ||
diff --git a/drivers/ide/mips/swarm.c b/drivers/ide/mips/swarm.c index 6da6844d2d8c..c1ffb83a2de7 100644 --- a/drivers/ide/mips/swarm.c +++ b/drivers/ide/mips/swarm.c | |||
@@ -120,9 +120,6 @@ static int __devinit swarm_ide_probe(struct device *dev) | |||
120 | if (hwif == NULL) | 120 | if (hwif == NULL) |
121 | goto err; | 121 | goto err; |
122 | 122 | ||
123 | /* Setup MMIO ops. */ | ||
124 | default_hwif_mmiops(hwif); | ||
125 | |||
126 | idx[0] = hwif->index; | 123 | idx[0] = hwif->index; |
127 | 124 | ||
128 | ide_device_add(idx, &swarm_port_info, hws); | 125 | ide_device_add(idx, &swarm_port_info, hws); |
diff --git a/drivers/ide/pci/ns87415.c b/drivers/ide/pci/ns87415.c index b9bb8428b35e..02fd3a877afa 100644 --- a/drivers/ide/pci/ns87415.c +++ b/drivers/ide/pci/ns87415.c | |||
@@ -28,10 +28,6 @@ | |||
28 | */ | 28 | */ |
29 | #include <asm/superio.h> | 29 | #include <asm/superio.h> |
30 | 30 | ||
31 | static unsigned long superio_ide_status[2]; | ||
32 | static unsigned long superio_ide_select[2]; | ||
33 | static unsigned long superio_ide_dma_status[2]; | ||
34 | |||
35 | #define SUPERIO_IDE_MAX_RETRIES 25 | 31 | #define SUPERIO_IDE_MAX_RETRIES 25 |
36 | 32 | ||
37 | /* Because of a defect in Super I/O, all reads of the PCI DMA status | 33 | /* Because of a defect in Super I/O, all reads of the PCI DMA status |
@@ -40,27 +36,18 @@ static unsigned long superio_ide_dma_status[2]; | |||
40 | */ | 36 | */ |
41 | static u8 superio_ide_inb (unsigned long port) | 37 | static u8 superio_ide_inb (unsigned long port) |
42 | { | 38 | { |
43 | if (port == superio_ide_status[0] || | 39 | u8 tmp; |
44 | port == superio_ide_status[1] || | 40 | int retries = SUPERIO_IDE_MAX_RETRIES; |
45 | port == superio_ide_select[0] || | ||
46 | port == superio_ide_select[1] || | ||
47 | port == superio_ide_dma_status[0] || | ||
48 | port == superio_ide_dma_status[1]) { | ||
49 | u8 tmp; | ||
50 | int retries = SUPERIO_IDE_MAX_RETRIES; | ||
51 | |||
52 | /* printk(" [ reading port 0x%x with retry ] ", port); */ | ||
53 | 41 | ||
54 | do { | 42 | /* printk(" [ reading port 0x%x with retry ] ", port); */ |
55 | tmp = inb(port); | ||
56 | if (tmp == 0) | ||
57 | udelay(50); | ||
58 | } while (tmp == 0 && retries-- > 0); | ||
59 | 43 | ||
60 | return tmp; | 44 | do { |
61 | } | 45 | tmp = inb(port); |
46 | if (tmp == 0) | ||
47 | udelay(50); | ||
48 | } while (tmp == 0 && retries-- > 0); | ||
62 | 49 | ||
63 | return inb(port); | 50 | return tmp; |
64 | } | 51 | } |
65 | 52 | ||
66 | static u8 superio_read_status(ide_hwif_t *hwif) | 53 | static u8 superio_read_status(ide_hwif_t *hwif) |
@@ -120,27 +107,20 @@ static void superio_tf_read(ide_drive_t *drive, ide_task_t *task) | |||
120 | static void __devinit superio_ide_init_iops (struct hwif_s *hwif) | 107 | static void __devinit superio_ide_init_iops (struct hwif_s *hwif) |
121 | { | 108 | { |
122 | struct pci_dev *pdev = to_pci_dev(hwif->dev); | 109 | struct pci_dev *pdev = to_pci_dev(hwif->dev); |
123 | u32 base, dmabase; | 110 | u32 dma_stat; |
124 | u8 port = hwif->channel, tmp; | 111 | u8 port = hwif->channel, tmp; |
125 | 112 | ||
126 | base = pci_resource_start(pdev, port * 2) & ~3; | 113 | dma_stat = (pci_resource_start(pdev, 4) & ~3) + (!port ? 2 : 0xa); |
127 | dmabase = pci_resource_start(pdev, 4) & ~3; | ||
128 | |||
129 | superio_ide_status[port] = base + 7; | ||
130 | superio_ide_select[port] = base + 6; | ||
131 | superio_ide_dma_status[port] = dmabase + (!port ? 2 : 0xa); | ||
132 | 114 | ||
133 | /* Clear error/interrupt, enable dma */ | 115 | /* Clear error/interrupt, enable dma */ |
134 | tmp = superio_ide_inb(superio_ide_dma_status[port]); | 116 | tmp = superio_ide_inb(dma_stat); |
135 | outb(tmp | 0x66, superio_ide_dma_status[port]); | 117 | outb(tmp | 0x66, dma_stat); |
136 | 118 | ||
137 | hwif->read_status = superio_read_status; | 119 | hwif->read_status = superio_read_status; |
138 | hwif->read_sff_dma_status = superio_read_sff_dma_status; | 120 | hwif->read_sff_dma_status = superio_read_sff_dma_status; |
139 | 121 | ||
140 | hwif->tf_read = superio_tf_read; | 122 | hwif->tf_read = superio_tf_read; |
141 | 123 | ||
142 | /* We need to override inb to workaround a SuperIO errata */ | ||
143 | hwif->INB = superio_ide_inb; | ||
144 | } | 124 | } |
145 | 125 | ||
146 | static void __devinit init_iops_ns87415(ide_hwif_t *hwif) | 126 | static void __devinit init_iops_ns87415(ide_hwif_t *hwif) |
diff --git a/drivers/ide/pci/scc_pata.c b/drivers/ide/pci/scc_pata.c index c110f359b03e..38765d9b0314 100644 --- a/drivers/ide/pci/scc_pata.c +++ b/drivers/ide/pci/scc_pata.c | |||
@@ -188,14 +188,6 @@ static void scc_ide_outb(u8 addr, unsigned long port) | |||
188 | out_be32((void*)port, addr); | 188 | out_be32((void*)port, addr); |
189 | } | 189 | } |
190 | 190 | ||
191 | static void scc_ide_outbsync(ide_hwif_t *hwif, u8 addr, unsigned long port) | ||
192 | { | ||
193 | out_be32((void*)port, addr); | ||
194 | eieio(); | ||
195 | in_be32((void*)(hwif->dma_base + 0x01c)); | ||
196 | eieio(); | ||
197 | } | ||
198 | |||
199 | static void | 191 | static void |
200 | scc_ide_outsw(unsigned long port, void *addr, u32 count) | 192 | scc_ide_outsw(unsigned long port, void *addr, u32 count) |
201 | { | 193 | { |
@@ -829,10 +821,6 @@ static void __devinit init_mmio_iops_scc(ide_hwif_t *hwif) | |||
829 | hwif->input_data = scc_input_data; | 821 | hwif->input_data = scc_input_data; |
830 | hwif->output_data = scc_output_data; | 822 | hwif->output_data = scc_output_data; |
831 | 823 | ||
832 | hwif->INB = scc_ide_inb; | ||
833 | hwif->OUTB = scc_ide_outb; | ||
834 | hwif->OUTBSYNC = scc_ide_outbsync; | ||
835 | |||
836 | hwif->dma_base = dma_base; | 824 | hwif->dma_base = dma_base; |
837 | hwif->config_data = ports->ctl; | 825 | hwif->config_data = ports->ctl; |
838 | } | 826 | } |
diff --git a/drivers/ide/pci/sgiioc4.c b/drivers/ide/pci/sgiioc4.c index 3005a6334a58..86f7c4901837 100644 --- a/drivers/ide/pci/sgiioc4.c +++ b/drivers/ide/pci/sgiioc4.c | |||
@@ -623,9 +623,6 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev) | |||
623 | if (hwif == NULL) | 623 | if (hwif == NULL) |
624 | goto err; | 624 | goto err; |
625 | 625 | ||
626 | /* The IOC4 uses MMIO rather than Port IO. */ | ||
627 | default_hwif_mmiops(hwif); | ||
628 | |||
629 | /* Initializing chipset IRQ Registers */ | 626 | /* Initializing chipset IRQ Registers */ |
630 | writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4)); | 627 | writel(0x03, (void __iomem *)(irqport + IOC4_INTR_SET * 4)); |
631 | 628 | ||
diff --git a/drivers/ide/pci/siimage.c b/drivers/ide/pci/siimage.c index 21d7137f7d6c..5965a35d94ae 100644 --- a/drivers/ide/pci/siimage.c +++ b/drivers/ide/pci/siimage.c | |||
@@ -601,7 +601,7 @@ static void __devinit init_mmio_iops_siimage(ide_hwif_t *hwif) | |||
601 | * Fill in the basic hwif bits | 601 | * Fill in the basic hwif bits |
602 | */ | 602 | */ |
603 | hwif->host_flags |= IDE_HFLAG_MMIO; | 603 | hwif->host_flags |= IDE_HFLAG_MMIO; |
604 | default_hwif_mmiops(hwif); | 604 | |
605 | hwif->hwif_data = addr; | 605 | hwif->hwif_data = addr; |
606 | 606 | ||
607 | /* | 607 | /* |
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index a0d66480a797..ed073c6635a8 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -486,15 +486,6 @@ pmac_ide_do_update_timings(ide_drive_t *drive) | |||
486 | pmac_ide_selectproc(drive); | 486 | pmac_ide_selectproc(drive); |
487 | } | 487 | } |
488 | 488 | ||
489 | static void pmac_outbsync(ide_hwif_t *hwif, u8 value, unsigned long port) | ||
490 | { | ||
491 | u32 tmp; | ||
492 | |||
493 | writeb(value, (void __iomem *) port); | ||
494 | tmp = readl((void __iomem *)(hwif->io_ports.data_addr | ||
495 | + IDE_TIMING_CONFIG)); | ||
496 | } | ||
497 | |||
498 | static void pmac_exec_command(ide_hwif_t *hwif, u8 cmd) | 489 | static void pmac_exec_command(ide_hwif_t *hwif, u8 cmd) |
499 | { | 490 | { |
500 | writeb(cmd, (void __iomem *)hwif->io_ports.command_addr); | 491 | writeb(cmd, (void __iomem *)hwif->io_ports.command_addr); |
@@ -1118,10 +1109,6 @@ static int __devinit pmac_ide_setup_device(pmac_ide_hwif_t *pmif, hw_regs_t *hw) | |||
1118 | hwif->exec_command = pmac_exec_command; | 1109 | hwif->exec_command = pmac_exec_command; |
1119 | hwif->set_irq = pmac_set_irq; | 1110 | hwif->set_irq = pmac_set_irq; |
1120 | 1111 | ||
1121 | /* Setup MMIO ops */ | ||
1122 | default_hwif_mmiops(hwif); | ||
1123 | hwif->OUTBSYNC = pmac_outbsync; | ||
1124 | |||
1125 | idx[0] = hwif->index; | 1112 | idx[0] = hwif->index; |
1126 | 1113 | ||
1127 | ide_device_add(idx, &d, hws); | 1114 | ide_device_add(idx, &d, hws); |
diff --git a/include/linux/ide.h b/include/linux/ide.h index fd05758e6995..0544ff7d9afc 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -504,11 +504,6 @@ typedef struct hwif_s { | |||
504 | 504 | ||
505 | void (*ide_dma_clear_irq)(ide_drive_t *drive); | 505 | void (*ide_dma_clear_irq)(ide_drive_t *drive); |
506 | 506 | ||
507 | void (*OUTB)(u8 addr, unsigned long port); | ||
508 | void (*OUTBSYNC)(struct hwif_s *hwif, u8 addr, unsigned long port); | ||
509 | |||
510 | u8 (*INB)(unsigned long port); | ||
511 | |||
512 | /* dma physical region descriptor table (cpu view) */ | 507 | /* dma physical region descriptor table (cpu view) */ |
513 | unsigned int *dmatable_cpu; | 508 | unsigned int *dmatable_cpu; |
514 | /* dma physical region descriptor table (dma view) */ | 509 | /* dma physical region descriptor table (dma view) */ |
@@ -1027,8 +1022,6 @@ static inline int ide_hwif_setup_dma(ide_hwif_t *hwif, | |||
1027 | } | 1022 | } |
1028 | #endif | 1023 | #endif |
1029 | 1024 | ||
1030 | extern void default_hwif_iops(ide_hwif_t *); | ||
1031 | extern void default_hwif_mmiops(ide_hwif_t *); | ||
1032 | extern void default_hwif_transport(ide_hwif_t *); | 1025 | extern void default_hwif_transport(ide_hwif_t *); |
1033 | 1026 | ||
1034 | typedef struct ide_pci_enablebit_s { | 1027 | typedef struct ide_pci_enablebit_s { |