aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/legacy/gayle.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:50 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-07-23 13:55:50 -0400
commitc97c6aca75fd5f718056fde7cff798b8cbdb07c0 (patch)
tree275635f3afb9d3a1f1f9ea5cebe08b5f327fc92c /drivers/ide/legacy/gayle.c
parent51d87ed0aab98999bebaf891b99730e15502a592 (diff)
ide: pass hw_regs_t-s to ide_device_add[_all]() (take 3)
* Add 'hw_regs_t **hws' argument to ide_device_add[_all]() and convert host drivers + ide_legacy_init_one() + ide_setup_pci_device[s]() to use it instead of calling ide_init_port_hw() directly. [ However if host has > 1 port we must still set hwif->chipset to hint consecutive ide_find_port() call that the previous slot is occupied. ] * Unexport ide_init_port_hw(). v2: * Use defines instead of hard-coded values in buddha.c, gayle.c and q40ide.c. (Suggested by Geert Uytterhoeven) * Better patch description. v3: * Fix build problem in ide-cs.c. (Noticed by Stephen Rothwell) There should be no functional changes caused by this patch. Cc: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/legacy/gayle.c')
-rw-r--r--drivers/ide/legacy/gayle.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/ide/legacy/gayle.c b/drivers/ide/legacy/gayle.c
index 7e74b20202df..e45c7341186c 100644
--- a/drivers/ide/legacy/gayle.c
+++ b/drivers/ide/legacy/gayle.c
@@ -125,6 +125,7 @@ static void __init gayle_setup_ports(hw_regs_t *hw, unsigned long base,
125static int __init gayle_init(void) 125static int __init gayle_init(void)
126{ 126{
127 int a4000, i; 127 int a4000, i;
128 hw_regs_t hw[GAYLE_NUM_HWIFS], *hws[] = { NULL, NULL, NULL, NULL };
128 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; 129 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
129 130
130 if (!MACH_IS_AMIGA) 131 if (!MACH_IS_AMIGA)
@@ -151,7 +152,6 @@ found:
151 for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) { 152 for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) {
152 unsigned long base, ctrlport, irqport; 153 unsigned long base, ctrlport, irqport;
153 ide_ack_intr_t *ack_intr; 154 ide_ack_intr_t *ack_intr;
154 hw_regs_t hw;
155 ide_hwif_t *hwif; 155 ide_hwif_t *hwif;
156 unsigned long phys_base, res_start, res_n; 156 unsigned long phys_base, res_start, res_n;
157 157
@@ -179,20 +179,19 @@ found:
179 base = (unsigned long)ZTWO_VADDR(phys_base); 179 base = (unsigned long)ZTWO_VADDR(phys_base);
180 ctrlport = GAYLE_HAS_CONTROL_REG ? (base + GAYLE_CONTROL) : 0; 180 ctrlport = GAYLE_HAS_CONTROL_REG ? (base + GAYLE_CONTROL) : 0;
181 181
182 gayle_setup_ports(&hw, base, ctrlport, irqport, ack_intr); 182 gayle_setup_ports(&hw[i], base, ctrlport, irqport, ack_intr);
183 183
184 hwif = ide_find_port(); 184 hwif = ide_find_port();
185 if (hwif) { 185 if (hwif) {
186 u8 index = hwif->index; 186 hwif->chipset = ide_generic;
187 187
188 ide_init_port_hw(hwif, &hw); 188 hws[i] = &hw[i];
189 189 idx[i] = hwif->index;
190 idx[i] = index;
191 } else 190 } else
192 release_mem_region(res_start, res_n); 191 release_mem_region(res_start, res_n);
193 } 192 }
194 193
195 ide_device_add(idx, NULL); 194 ide_device_add(idx, NULL, hws);
196 195
197 return 0; 196 return 0;
198} 197}