aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-01-26 14:13:06 -0500
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-01-26 14:13:06 -0500
commit8ac4ce742c66100931b6f2d7a36b0df08bc721fe (patch)
treebc44edb8d6ec9057d24aa4c986729e1ca9f3f860 /drivers/ide
parentac87e41116c229fc1efaac0d17fdbfb2185e4629 (diff)
ide: fix host drivers depending on ide_generic to probe for interfaces (take 2)
* Add mpc8xx_ide_probe() to mpc8xx.c and call it from probe_for_hwifs(). * Convert ide_arm, ide-cris, ide-h8300, ide-pnp, buddha, falconide, gayle, macide, q40ide, cmd640 and mpc8xx host drivers to use ide_device_add(). This removes dependency on ide_generic for these drivers so update ide/Kconfig accordingly. v2: * ide_arm build fix (s/ide_device_idx/ide_device_add/) (Thanks to Christoph Lameter <clameter@sgi.com> for reporting the problem). Cc: Mikael Starvik <starvik@axis.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Roman Zippel <zippel@linux-m68k.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/Kconfig11
-rw-r--r--drivers/ide/arm/ide_arm.c4
-rw-r--r--drivers/ide/cris/ide-cris.c9
-rw-r--r--drivers/ide/h8300/ide-h8300.c6
-rw-r--r--drivers/ide/ide-pnp.c4
-rw-r--r--drivers/ide/ide.c4
-rw-r--r--drivers/ide/legacy/buddha.c10
-rw-r--r--drivers/ide/legacy/falconide.c3
-rw-r--r--drivers/ide/legacy/gayle.c5
-rw-r--r--drivers/ide/legacy/macide.c3
-rw-r--r--drivers/ide/legacy/q40ide.c5
-rw-r--r--drivers/ide/pci/cmd640.c8
-rw-r--r--drivers/ide/ppc/mpc8xx.c14
13 files changed, 70 insertions, 16 deletions
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index 2a584b3f1813..7c419e87a4a4 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -327,7 +327,6 @@ config BLK_DEV_PLATFORM
327config BLK_DEV_CMD640 327config BLK_DEV_CMD640
328 bool "CMD640 chipset bugfix/support" 328 bool "CMD640 chipset bugfix/support"
329 depends on X86 329 depends on X86
330 select IDE_GENERIC
331 ---help--- 330 ---help---
332 The CMD-Technologies CMD640 IDE chip is used on many common 486 and 331 The CMD-Technologies CMD640 IDE chip is used on many common 486 and
333 Pentium motherboards, usually in combination with a "Neptune" or 332 Pentium motherboards, usually in combination with a "Neptune" or
@@ -362,7 +361,6 @@ config BLK_DEV_CMD640_ENHANCED
362config BLK_DEV_IDEPNP 361config BLK_DEV_IDEPNP
363 bool "PNP EIDE support" 362 bool "PNP EIDE support"
364 depends on PNP 363 depends on PNP
365 select IDE_GENERIC
366 help 364 help
367 If you have a PnP (Plug and Play) compatible EIDE card and 365 If you have a PnP (Plug and Play) compatible EIDE card and
368 would like the kernel to automatically detect and activate 366 would like the kernel to automatically detect and activate
@@ -845,7 +843,6 @@ config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
845 843
846config IDE_ARM 844config IDE_ARM
847 def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK) 845 def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK)
848 select IDE_GENERIC
849 846
850config BLK_DEV_IDE_ICSIDE 847config BLK_DEV_IDE_ICSIDE
851 tristate "ICS IDE interface support" 848 tristate "ICS IDE interface support"
@@ -880,7 +877,6 @@ config ETRAX_IDE
880 bool "ETRAX IDE support" 877 bool "ETRAX IDE support"
881 depends on CRIS && BROKEN 878 depends on CRIS && BROKEN
882 select BLK_DEV_IDEDMA 879 select BLK_DEV_IDEDMA
883 select IDE_GENERIC
884 help 880 help
885 Enables the ETRAX IDE driver. 881 Enables the ETRAX IDE driver.
886 882
@@ -914,7 +910,6 @@ endchoice
914config IDE_H8300 910config IDE_H8300
915 bool "H8300 IDE support" 911 bool "H8300 IDE support"
916 depends on H8300 912 depends on H8300
917 select IDE_GENERIC
918 default y 913 default y
919 help 914 help
920 Enables the H8300 IDE driver. 915 Enables the H8300 IDE driver.
@@ -922,7 +917,6 @@ config IDE_H8300
922config BLK_DEV_GAYLE 917config BLK_DEV_GAYLE
923 bool "Amiga Gayle IDE interface support" 918 bool "Amiga Gayle IDE interface support"
924 depends on AMIGA 919 depends on AMIGA
925 select IDE_GENERIC
926 help 920 help
927 This is the IDE driver for the Amiga Gayle IDE interface. It supports 921 This is the IDE driver for the Amiga Gayle IDE interface. It supports
928 both the `A1200 style' and `A4000 style' of the Gayle IDE interface, 922 both the `A1200 style' and `A4000 style' of the Gayle IDE interface,
@@ -954,7 +948,6 @@ config BLK_DEV_IDEDOUBLER
954config BLK_DEV_BUDDHA 948config BLK_DEV_BUDDHA
955 bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)" 949 bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
956 depends on ZORRO && EXPERIMENTAL 950 depends on ZORRO && EXPERIMENTAL
957 select IDE_GENERIC
958 help 951 help
959 This is the IDE driver for the IDE interfaces on the Buddha, 952 This is the IDE driver for the IDE interfaces on the Buddha,
960 Catweasel and X-Surf expansion boards. It supports up to two interfaces 953 Catweasel and X-Surf expansion boards. It supports up to two interfaces
@@ -967,7 +960,6 @@ config BLK_DEV_BUDDHA
967config BLK_DEV_FALCON_IDE 960config BLK_DEV_FALCON_IDE
968 bool "Falcon IDE interface support" 961 bool "Falcon IDE interface support"
969 depends on ATARI 962 depends on ATARI
970 select IDE_GENERIC
971 help 963 help
972 This is the IDE driver for the builtin IDE interface on the Atari 964 This is the IDE driver for the builtin IDE interface on the Atari
973 Falcon. Say Y if you have a Falcon and want to use IDE devices (hard 965 Falcon. Say Y if you have a Falcon and want to use IDE devices (hard
@@ -977,7 +969,6 @@ config BLK_DEV_FALCON_IDE
977config BLK_DEV_MAC_IDE 969config BLK_DEV_MAC_IDE
978 bool "Macintosh Quadra/Powerbook IDE interface support" 970 bool "Macintosh Quadra/Powerbook IDE interface support"
979 depends on MAC 971 depends on MAC
980 select IDE_GENERIC
981 help 972 help
982 This is the IDE driver for the builtin IDE interface on some m68k 973 This is the IDE driver for the builtin IDE interface on some m68k
983 Macintosh models. It supports both the `Quadra style' (used in 974 Macintosh models. It supports both the `Quadra style' (used in
@@ -991,7 +982,6 @@ config BLK_DEV_MAC_IDE
991config BLK_DEV_Q40IDE 982config BLK_DEV_Q40IDE
992 bool "Q40/Q60 IDE interface support" 983 bool "Q40/Q60 IDE interface support"
993 depends on Q40 984 depends on Q40
994 select IDE_GENERIC
995 help 985 help
996 Enable the on-board IDE controller in the Q40/Q60. This should 986 Enable the on-board IDE controller in the Q40/Q60. This should
997 normally be on; disable it only if you are running a custom hard 987 normally be on; disable it only if you are running a custom hard
@@ -1000,7 +990,6 @@ config BLK_DEV_Q40IDE
1000config BLK_DEV_MPC8xx_IDE 990config BLK_DEV_MPC8xx_IDE
1001 bool "MPC8xx IDE support" 991 bool "MPC8xx IDE support"
1002 depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE 992 depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE
1003 select IDE_GENERIC
1004 help 993 help
1005 This option provides support for IDE on Motorola MPC8xx Systems. 994 This option provides support for IDE on Motorola MPC8xx Systems.
1006 Please see 'Type of MPC8xx IDE interface' for details. 995 Please see 'Type of MPC8xx IDE interface' for details.
diff --git a/drivers/ide/arm/ide_arm.c b/drivers/ide/arm/ide_arm.c
index 21ba6ac2f826..a1b5ddab6a48 100644
--- a/drivers/ide/arm/ide_arm.c
+++ b/drivers/ide/arm/ide_arm.c
@@ -28,6 +28,7 @@ void __init ide_arm_init(void)
28{ 28{
29 ide_hwif_t *hwif; 29 ide_hwif_t *hwif;
30 hw_regs_t hw; 30 hw_regs_t hw;
31 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
31 32
32 memset(&hw, 0, sizeof(hw)); 33 memset(&hw, 0, sizeof(hw));
33 ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206); 34 ide_std_init_ports(&hw, IDE_ARM_IO, IDE_ARM_IO + 0x206);
@@ -36,5 +37,8 @@ void __init ide_arm_init(void)
36 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); 37 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
37 if (hwif) { 38 if (hwif) {
38 ide_init_port_hw(hwif, &hw); 39 ide_init_port_hw(hwif, &hw);
40 idx[0] = hwif->index;
41
42 ide_device_add(idx);
39 } 43 }
40} 44}
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c
index 7e33e2b42e92..924536297036 100644
--- a/drivers/ide/cris/ide-cris.c
+++ b/drivers/ide/cris/ide-cris.c
@@ -758,9 +758,8 @@ void __init
758init_e100_ide (void) 758init_e100_ide (void)
759{ 759{
760 hw_regs_t hw; 760 hw_regs_t hw;
761 int ide_offsets[IDE_NR_PORTS]; 761 int ide_offsets[IDE_NR_PORTS], h, i;
762 int h; 762 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
763 int i;
764 763
765 printk("ide: ETRAX FS built-in ATA DMA controller\n"); 764 printk("ide: ETRAX FS built-in ATA DMA controller\n");
766 765
@@ -808,6 +807,8 @@ init_e100_ide (void)
808 hwif->drives[1].autotune = 1; 807 hwif->drives[1].autotune = 1;
809 hwif->ultra_mask = cris_ultra_mask; 808 hwif->ultra_mask = cris_ultra_mask;
810 hwif->mwdma_mask = 0x07; /* Multiword DMA 0-2 */ 809 hwif->mwdma_mask = 0x07; /* Multiword DMA 0-2 */
810
811 idx[h] = hwif->index;
811 } 812 }
812 813
813 /* Reset pulse */ 814 /* Reset pulse */
@@ -820,6 +821,8 @@ init_e100_ide (void)
820 cris_ide_set_speed(TYPE_PIO, ATA_PIO4_SETUP, ATA_PIO4_STROBE, ATA_PIO4_HOLD); 821 cris_ide_set_speed(TYPE_PIO, ATA_PIO4_SETUP, ATA_PIO4_STROBE, ATA_PIO4_HOLD);
821 cris_ide_set_speed(TYPE_DMA, 0, ATA_DMA2_STROBE, ATA_DMA2_HOLD); 822 cris_ide_set_speed(TYPE_DMA, 0, ATA_DMA2_STROBE, ATA_DMA2_HOLD);
822 cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0); 823 cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0);
824
825 ide_device_add(idx);
823} 826}
824 827
825static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16))); 828static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16)));
diff --git a/drivers/ide/h8300/ide-h8300.c b/drivers/ide/h8300/ide-h8300.c
index 57d0d4ce8588..9fa78e98d1ba 100644
--- a/drivers/ide/h8300/ide-h8300.c
+++ b/drivers/ide/h8300/ide-h8300.c
@@ -89,6 +89,7 @@ void __init h8300_ide_init(void)
89 hw_regs_t hw; 89 hw_regs_t hw;
90 ide_hwif_t *hwif; 90 ide_hwif_t *hwif;
91 int index; 91 int index;
92 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
92 93
93 if (!request_region(CONFIG_H8300_IDE_BASE, H8300_IDE_GAP*8, "ide-h8300")) 94 if (!request_region(CONFIG_H8300_IDE_BASE, H8300_IDE_GAP*8, "ide-h8300"))
94 goto out_busy; 95 goto out_busy;
@@ -111,6 +112,11 @@ void __init h8300_ide_init(void)
111 ide_init_port_hw(hwif, &hw); 112 ide_init_port_hw(hwif, &hw);
112 hwif_setup(hwif); 113 hwif_setup(hwif);
113 printk(KERN_INFO "ide%d: H8/300 generic IDE interface\n", index); 114 printk(KERN_INFO "ide%d: H8/300 generic IDE interface\n", index);
115
116 idx[0] = index;
117
118 ide_device_add(idx);
119
114 return; 120 return;
115 121
116out_busy: 122out_busy:
diff --git a/drivers/ide/ide-pnp.c b/drivers/ide/ide-pnp.c
index 664bc489c550..802efd4d9760 100644
--- a/drivers/ide/ide-pnp.c
+++ b/drivers/ide/ide-pnp.c
@@ -43,12 +43,16 @@ static int idepnp_probe(struct pnp_dev * dev, const struct pnp_device_id *dev_id
43 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); 43 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
44 if (hwif) { 44 if (hwif) {
45 u8 index = hwif->index; 45 u8 index = hwif->index;
46 u8 idx[4] = { index, 0xff, 0xff, 0xff };
46 47
47 ide_init_port_data(hwif, index); 48 ide_init_port_data(hwif, index);
48 ide_init_port_hw(hwif, &hw); 49 ide_init_port_hw(hwif, &hw);
49 50
50 printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index); 51 printk(KERN_INFO "ide%d: generic PnP IDE interface\n", index);
51 pnp_set_drvdata(dev,hwif); 52 pnp_set_drvdata(dev,hwif);
53
54 ide_device_add(idx);
55
52 return 0; 56 return 0;
53 } 57 }
54 58
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index 77af743425e8..6f99f5c90062 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1555,6 +1555,7 @@ done:
1555extern void __init pnpide_init(void); 1555extern void __init pnpide_init(void);
1556extern void __exit pnpide_exit(void); 1556extern void __exit pnpide_exit(void);
1557extern void __init h8300_ide_init(void); 1557extern void __init h8300_ide_init(void);
1558extern void __init mpc8xx_ide_probe(void);
1558 1559
1559/* 1560/*
1560 * probe_for_hwifs() finds/initializes "known" IDE interfaces 1561 * probe_for_hwifs() finds/initializes "known" IDE interfaces
@@ -1619,6 +1620,9 @@ static void __init probe_for_hwifs (void)
1619#ifdef CONFIG_H8300 1620#ifdef CONFIG_H8300
1620 h8300_ide_init(); 1621 h8300_ide_init();
1621#endif 1622#endif
1623#ifdef BLK_DEV_MPC8xx_IDE
1624 mpc8xx_ide_probe();
1625#endif
1622} 1626}
1623 1627
1624/* 1628/*
diff --git a/drivers/ide/legacy/buddha.c b/drivers/ide/legacy/buddha.c
index 8b9cb39c961e..ba64c4b9f918 100644
--- a/drivers/ide/legacy/buddha.c
+++ b/drivers/ide/legacy/buddha.c
@@ -156,6 +156,8 @@ void __init buddha_init(void)
156 156
157 while ((z = zorro_find_device(ZORRO_WILDCARD, z))) { 157 while ((z = zorro_find_device(ZORRO_WILDCARD, z))) {
158 unsigned long board; 158 unsigned long board;
159 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
160
159 if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) { 161 if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) {
160 buddha_num_hwifs = BUDDHA_NUM_HWIFS; 162 buddha_num_hwifs = BUDDHA_NUM_HWIFS;
161 type=BOARD_BUDDHA; 163 type=BOARD_BUDDHA;
@@ -233,8 +235,12 @@ fail_base2:
233 printk("X-Surf"); 235 printk("X-Surf");
234 break; 236 break;
235 } 237 }
236 printk(" IDE interface\n"); 238 printk(" IDE interface\n");
237 } 239
240 idx[i] = index;
241 }
238 } 242 }
243
244 ide_device_add(idx);
239 } 245 }
240} 246}
diff --git a/drivers/ide/legacy/falconide.c b/drivers/ide/legacy/falconide.c
index b861cfe25900..c1a84540beb1 100644
--- a/drivers/ide/legacy/falconide.c
+++ b/drivers/ide/legacy/falconide.c
@@ -75,10 +75,13 @@ void __init falconide_init(void)
75 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); 75 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
76 if (hwif) { 76 if (hwif) {
77 u8 index = hwif->index; 77 u8 index = hwif->index;
78 u8 idx[4] = { index, 0xff, 0xff, 0xff };
78 79
79 ide_init_port_data(hwif, index); 80 ide_init_port_data(hwif, index);
80 ide_init_port_hw(hwif, &hw); 81 ide_init_port_hw(hwif, &hw);
81 82
82 printk("ide%d: Falcon IDE interface\n", index); 83 printk("ide%d: Falcon IDE interface\n", index);
84
85 ide_device_add(idx);
83 } 86 }
84} 87}
diff --git a/drivers/ide/legacy/gayle.c b/drivers/ide/legacy/gayle.c
index 705d0b8a3f5d..ec53dc9b483c 100644
--- a/drivers/ide/legacy/gayle.c
+++ b/drivers/ide/legacy/gayle.c
@@ -113,6 +113,7 @@ static int gayle_ack_intr_a1200(ide_hwif_t *hwif)
113void __init gayle_init(void) 113void __init gayle_init(void)
114{ 114{
115 int a4000, i; 115 int a4000, i;
116 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
116 117
117 if (!MACH_IS_AMIGA) 118 if (!MACH_IS_AMIGA)
118 return; 119 return;
@@ -183,7 +184,11 @@ found:
183 break; 184 break;
184#endif /* CONFIG_BLK_DEV_IDEDOUBLER */ 185#endif /* CONFIG_BLK_DEV_IDEDOUBLER */
185 } 186 }
187
188 idx[i] = index;
186 } else 189 } else
187 release_mem_region(res_start, res_n); 190 release_mem_region(res_start, res_n);
188 } 191 }
192
193 ide_device_add(idx);
189} 194}
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c
index 1840fede5216..c1b7881c280a 100644
--- a/drivers/ide/legacy/macide.c
+++ b/drivers/ide/legacy/macide.c
@@ -112,6 +112,7 @@ void __init macide_init(void)
112 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); 112 hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
113 if (hwif) { 113 if (hwif) {
114 u8 index = hwif->index; 114 u8 index = hwif->index;
115 u8 idx[4] = { index, 0xff, 0xff, 0xff };
115 116
116 ide_init_port_data(hwif, index); 117 ide_init_port_data(hwif, index);
117 ide_init_port_hw(hwif, &hw); 118 ide_init_port_hw(hwif, &hw);
@@ -135,5 +136,7 @@ void __init macide_init(void)
135 printk(KERN_INFO "ide%d: Macintosh Powerbook Baboon IDE interface\n", index); 136 printk(KERN_INFO "ide%d: Macintosh Powerbook Baboon IDE interface\n", index);
136 else 137 else
137 printk(KERN_INFO "ide%d: Unknown Macintosh IDE interface\n", index); 138 printk(KERN_INFO "ide%d: Unknown Macintosh IDE interface\n", index);
139
140 ide_device_add(idx);
138 } 141 }
139} 142}
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c
index 31e54ffdfee4..2082e9c6efd9 100644
--- a/drivers/ide/legacy/q40ide.c
+++ b/drivers/ide/legacy/q40ide.c
@@ -116,6 +116,7 @@ void __init q40ide_init(void)
116 int i; 116 int i;
117 ide_hwif_t *hwif; 117 ide_hwif_t *hwif;
118 const char *name; 118 const char *name;
119 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
119 120
120 if (!MACH_IS_Q40) 121 if (!MACH_IS_Q40)
121 return ; 122 return ;
@@ -146,7 +147,11 @@ void __init q40ide_init(void)
146 ide_init_port_data(hwif, hwif->index); 147 ide_init_port_data(hwif, hwif->index);
147 ide_init_port_hw(hwif, &hw); 148 ide_init_port_hw(hwif, &hw);
148 hwif->mmio = 1; 149 hwif->mmio = 1;
150
151 idx[i] = hwif->index;
149 } 152 }
150 } 153 }
154
155 ide_device_add(idx);
151} 156}
152 157
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c
index 4aa48104e0c1..5096e059ac5a 100644
--- a/drivers/ide/pci/cmd640.c
+++ b/drivers/ide/pci/cmd640.c
@@ -717,6 +717,7 @@ int __init ide_probe_for_cmd640x (void)
717 const char *bus_type, *port2; 717 const char *bus_type, *port2;
718 unsigned int index; 718 unsigned int index;
719 u8 b, cfr; 719 u8 b, cfr;
720 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
720 721
721 if (cmd640_vlb && probe_for_cmd640_vlb()) { 722 if (cmd640_vlb && probe_for_cmd640_vlb()) {
722 bus_type = "VLB"; 723 bus_type = "VLB";
@@ -769,6 +770,8 @@ int __init ide_probe_for_cmd640x (void)
769 cmd_hwif0->set_pio_mode = &cmd640_set_pio_mode; 770 cmd_hwif0->set_pio_mode = &cmd640_set_pio_mode;
770#endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */ 771#endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */
771 772
773 idx[0] = cmd_hwif0->index;
774
772 /* 775 /*
773 * Ensure compatibility by always using the slowest timings 776 * Ensure compatibility by always using the slowest timings
774 * for access to the drive's command register block, 777 * for access to the drive's command register block,
@@ -826,6 +829,8 @@ int __init ide_probe_for_cmd640x (void)
826 cmd_hwif1->pio_mask = ATA_PIO5; 829 cmd_hwif1->pio_mask = ATA_PIO5;
827 cmd_hwif1->set_pio_mode = &cmd640_set_pio_mode; 830 cmd_hwif1->set_pio_mode = &cmd640_set_pio_mode;
828#endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */ 831#endif /* CONFIG_BLK_DEV_CMD640_ENHANCED */
832
833 idx[1] = cmd_hwif1->index;
829 } 834 }
830 printk(KERN_INFO "%s: %sserialized, secondary interface %s\n", cmd_hwif1->name, 835 printk(KERN_INFO "%s: %sserialized, secondary interface %s\n", cmd_hwif1->name,
831 cmd_hwif0->serialized ? "" : "not ", port2); 836 cmd_hwif0->serialized ? "" : "not ", port2);
@@ -872,6 +877,9 @@ int __init ide_probe_for_cmd640x (void)
872#ifdef CMD640_DUMP_REGS 877#ifdef CMD640_DUMP_REGS
873 cmd640_dump_regs(); 878 cmd640_dump_regs();
874#endif 879#endif
880
881 ide_device_add(idx);
882
875 return 1; 883 return 1;
876} 884}
877 885
diff --git a/drivers/ide/ppc/mpc8xx.c b/drivers/ide/ppc/mpc8xx.c
index 5f0da35ab5ad..8172e813b034 100644
--- a/drivers/ide/ppc/mpc8xx.c
+++ b/drivers/ide/ppc/mpc8xx.c
@@ -838,3 +838,17 @@ void m8xx_ide_init(void)
838 ppc_ide_md.default_io_base = m8xx_ide_default_io_base; 838 ppc_ide_md.default_io_base = m8xx_ide_default_io_base;
839 ppc_ide_md.ide_init_hwif = m8xx_ide_init_hwif_ports; 839 ppc_ide_md.ide_init_hwif = m8xx_ide_init_hwif_ports;
840} 840}
841
842void __init mpc8xx_ide_probe(void)
843{
844 u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
845
846#ifdef IDE0_BASE_OFFSET
847 idx[0] = 0;
848#ifdef IDE1_BASE_OFFSET
849 idx[1] = 1;
850#endif
851#endif
852
853 ide_device_add(idx);
854}