diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-01-26 14:13:07 -0500 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2008-01-26 14:13:07 -0500 |
commit | ade2daf9c6e57845fe83a24e0a9fa1c03c6e91b1 (patch) | |
tree | 68070062d6306442caee50630c4213c911eb9064 | |
parent | 8ac4ce742c66100931b6f2d7a36b0df08bc721fe (diff) |
ide: make remaining built-in only IDE host drivers modular (take 2)
* Make remaining built-in only IDE host drivers modular, add ide-scan-pci.c
file for probing PCI host drivers registered with IDE core (special case
for built-in IDE and CONFIG_IDEPCI_PCIBUS_ORDER=y) and then take care of
the ordering in which all IDE host drivers are probed when IDE is built-in
during link time.
* Move probing of gayle, falconide, macide, q40ide and buddha (m68k arch
specific) host drivers, before PCI ones (no PCI on m68k), ide-cris (cris
arch specific), cmd640 (x86 arch specific) and pmac (ppc arch specific).
* Move probing of ide-cris (cris arch specific) host driver before cmd640
(x86 arch specific).
* Move probing of mpc8xx (ppc specific) host driver before ide-pnp (depends
on ISA and none of ppc platform that use mpc8xx supports ISA) and ide-h8300
(h8300 arch specific).
* Add "probe_vlb" kernel parameter to cmd640 host driver and update
Documentation/ide.txt accordingly.
* Make IDE_ARM config option visible so it can also be disabled if needed.
* Remove bogus comment from ide.c while at it.
v2:
* Fix two issues spotted by Sergei:
- replace ENOMEM error value by ENOENT in ide-h8300 host driver
- fix MODULE_PARM_DESC() in cmd640 host driver
Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Mikael Starvik <starvik@axis.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
30 files changed, 171 insertions, 221 deletions
diff --git a/Documentation/ide.txt b/Documentation/ide.txt index 1d50f23a5cab..b29ccb43d6cc 100644 --- a/Documentation/ide.txt +++ b/Documentation/ide.txt | |||
@@ -30,7 +30,7 @@ | |||
30 | *** | 30 | *** |
31 | *** The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT* | 31 | *** The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT* |
32 | *** automatically detected by Linux. For safe, reliable operation with such | 32 | *** automatically detected by Linux. For safe, reliable operation with such |
33 | *** interfaces, one *MUST* use the "ide0=cmd640_vlb" kernel option. | 33 | *** interfaces, one *MUST* use the "cmd640.probe_vlb" kernel option. |
34 | *** | 34 | *** |
35 | *** Use of the "serialize" option is no longer necessary. | 35 | *** Use of the "serialize" option is no longer necessary. |
36 | 36 | ||
@@ -292,9 +292,6 @@ The following are valid ONLY on ide0, which usually corresponds | |||
292 | to the first ATA interface found on the particular host, and the defaults for | 292 | to the first ATA interface found on the particular host, and the defaults for |
293 | the base,ctl ports must not be altered. | 293 | the base,ctl ports must not be altered. |
294 | 294 | ||
295 | "ide0=cmd640_vlb" : *REQUIRED* for VLB cards with the CMD640 chip | ||
296 | (not for PCI -- automatically detected) | ||
297 | |||
298 | "ide=doubler" : probe/support IDE doublers on Amiga | 295 | "ide=doubler" : probe/support IDE doublers on Amiga |
299 | 296 | ||
300 | There may be more options than shown -- use the source, Luke! | 297 | There may be more options than shown -- use the source, Luke! |
@@ -310,6 +307,10 @@ i.e. to enable probing for ALI M14xx chipsets (ali14xx host driver) use: | |||
310 | * "probe" module parameter when ali14xx driver is compiled as module | 307 | * "probe" module parameter when ali14xx driver is compiled as module |
311 | ("modprobe ali14xx probe") | 308 | ("modprobe ali14xx probe") |
312 | 309 | ||
310 | Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb" | ||
311 | kernel paremeter to enable probing for VLB version of the chipset (PCI ones | ||
312 | are detected automatically). | ||
313 | |||
313 | ================================================================================ | 314 | ================================================================================ |
314 | 315 | ||
315 | IDE ATAPI streaming tape driver | 316 | IDE ATAPI streaming tape driver |
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig index 7c419e87a4a4..e92128a87f26 100644 --- a/drivers/ide/Kconfig +++ b/drivers/ide/Kconfig | |||
@@ -325,7 +325,7 @@ config BLK_DEV_PLATFORM | |||
325 | If unsure, say N. | 325 | If unsure, say N. |
326 | 326 | ||
327 | config BLK_DEV_CMD640 | 327 | config BLK_DEV_CMD640 |
328 | bool "CMD640 chipset bugfix/support" | 328 | tristate "CMD640 chipset bugfix/support" |
329 | depends on X86 | 329 | depends on X86 |
330 | ---help--- | 330 | ---help--- |
331 | 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 |
@@ -359,7 +359,7 @@ config BLK_DEV_CMD640_ENHANCED | |||
359 | Otherwise say N. | 359 | Otherwise say N. |
360 | 360 | ||
361 | config BLK_DEV_IDEPNP | 361 | config BLK_DEV_IDEPNP |
362 | bool "PNP EIDE support" | 362 | tristate "PNP EIDE support" |
363 | depends on PNP | 363 | depends on PNP |
364 | help | 364 | help |
365 | 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 |
@@ -788,7 +788,7 @@ config BLK_DEV_CELLEB | |||
788 | endif | 788 | endif |
789 | 789 | ||
790 | config BLK_DEV_IDE_PMAC | 790 | config BLK_DEV_IDE_PMAC |
791 | bool "Builtin PowerMac IDE support" | 791 | tristate "Builtin PowerMac IDE support" |
792 | depends on PPC_PMAC && IDE=y && BLK_DEV_IDE=y | 792 | depends on PPC_PMAC && IDE=y && BLK_DEV_IDE=y |
793 | help | 793 | help |
794 | This driver provides support for the built-in IDE controller on | 794 | This driver provides support for the built-in IDE controller on |
@@ -842,7 +842,9 @@ config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ | |||
842 | depends on BLK_DEV_IDE_AU1XXX | 842 | depends on BLK_DEV_IDE_AU1XXX |
843 | 843 | ||
844 | config IDE_ARM | 844 | config IDE_ARM |
845 | def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK) | 845 | tristate "ARM IDE support" |
846 | depends on ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK) | ||
847 | default y | ||
846 | 848 | ||
847 | config BLK_DEV_IDE_ICSIDE | 849 | config BLK_DEV_IDE_ICSIDE |
848 | tristate "ICS IDE interface support" | 850 | tristate "ICS IDE interface support" |
@@ -874,7 +876,7 @@ config BLK_DEV_IDE_BAST | |||
874 | Simtec BAST or the Thorcom VR1000 | 876 | Simtec BAST or the Thorcom VR1000 |
875 | 877 | ||
876 | config ETRAX_IDE | 878 | config ETRAX_IDE |
877 | bool "ETRAX IDE support" | 879 | tristate "ETRAX IDE support" |
878 | depends on CRIS && BROKEN | 880 | depends on CRIS && BROKEN |
879 | select BLK_DEV_IDEDMA | 881 | select BLK_DEV_IDEDMA |
880 | help | 882 | help |
@@ -908,14 +910,14 @@ config ETRAX_IDE_G27_RESET | |||
908 | endchoice | 910 | endchoice |
909 | 911 | ||
910 | config IDE_H8300 | 912 | config IDE_H8300 |
911 | bool "H8300 IDE support" | 913 | tristate "H8300 IDE support" |
912 | depends on H8300 | 914 | depends on H8300 |
913 | default y | 915 | default y |
914 | help | 916 | help |
915 | Enables the H8300 IDE driver. | 917 | Enables the H8300 IDE driver. |
916 | 918 | ||
917 | config BLK_DEV_GAYLE | 919 | config BLK_DEV_GAYLE |
918 | bool "Amiga Gayle IDE interface support" | 920 | tristate "Amiga Gayle IDE interface support" |
919 | depends on AMIGA | 921 | depends on AMIGA |
920 | help | 922 | help |
921 | This is the IDE driver for the Amiga Gayle IDE interface. It supports | 923 | This is the IDE driver for the Amiga Gayle IDE interface. It supports |
@@ -946,7 +948,7 @@ config BLK_DEV_IDEDOUBLER | |||
946 | runtime using the "ide=doubler" kernel boot parameter. | 948 | runtime using the "ide=doubler" kernel boot parameter. |
947 | 949 | ||
948 | config BLK_DEV_BUDDHA | 950 | config BLK_DEV_BUDDHA |
949 | bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)" | 951 | tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)" |
950 | depends on ZORRO && EXPERIMENTAL | 952 | depends on ZORRO && EXPERIMENTAL |
951 | help | 953 | help |
952 | This is the IDE driver for the IDE interfaces on the Buddha, | 954 | This is the IDE driver for the IDE interfaces on the Buddha, |
@@ -958,7 +960,7 @@ config BLK_DEV_BUDDHA | |||
958 | to one of its IDE interfaces. | 960 | to one of its IDE interfaces. |
959 | 961 | ||
960 | config BLK_DEV_FALCON_IDE | 962 | config BLK_DEV_FALCON_IDE |
961 | bool "Falcon IDE interface support" | 963 | tristate "Falcon IDE interface support" |
962 | depends on ATARI | 964 | depends on ATARI |
963 | help | 965 | help |
964 | This is the IDE driver for the builtin IDE interface on the Atari | 966 | This is the IDE driver for the builtin IDE interface on the Atari |
@@ -967,7 +969,7 @@ config BLK_DEV_FALCON_IDE | |||
967 | interface. | 969 | interface. |
968 | 970 | ||
969 | config BLK_DEV_MAC_IDE | 971 | config BLK_DEV_MAC_IDE |
970 | bool "Macintosh Quadra/Powerbook IDE interface support" | 972 | tristate "Macintosh Quadra/Powerbook IDE interface support" |
971 | depends on MAC | 973 | depends on MAC |
972 | help | 974 | help |
973 | This is the IDE driver for the builtin IDE interface on some m68k | 975 | This is the IDE driver for the builtin IDE interface on some m68k |
@@ -980,7 +982,7 @@ config BLK_DEV_MAC_IDE | |||
980 | builtin IDE interface. | 982 | builtin IDE interface. |
981 | 983 | ||
982 | config BLK_DEV_Q40IDE | 984 | config BLK_DEV_Q40IDE |
983 | bool "Q40/Q60 IDE interface support" | 985 | tristate "Q40/Q60 IDE interface support" |
984 | depends on Q40 | 986 | depends on Q40 |
985 | help | 987 | help |
986 | Enable the on-board IDE controller in the Q40/Q60. This should | 988 | Enable the on-board IDE controller in the Q40/Q60. This should |
@@ -988,7 +990,7 @@ config BLK_DEV_Q40IDE | |||
988 | drive subsystem through an expansion card. | 990 | drive subsystem through an expansion card. |
989 | 991 | ||
990 | config BLK_DEV_MPC8xx_IDE | 992 | config BLK_DEV_MPC8xx_IDE |
991 | bool "MPC8xx IDE support" | 993 | tristate "MPC8xx IDE support" |
992 | depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE | 994 | depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE |
993 | help | 995 | help |
994 | This option provides support for IDE on Motorola MPC8xx Systems. | 996 | This option provides support for IDE on Motorola MPC8xx Systems. |
diff --git a/drivers/ide/Makefile b/drivers/ide/Makefile index b181fc672057..0d2da89d15cf 100644 --- a/drivers/ide/Makefile +++ b/drivers/ide/Makefile | |||
@@ -7,41 +7,37 @@ | |||
7 | # Note : at this point, these files are compiled on all systems. | 7 | # Note : at this point, these files are compiled on all systems. |
8 | # In the future, some of these should be built conditionally. | 8 | # In the future, some of these should be built conditionally. |
9 | # | 9 | # |
10 | # First come modules that register themselves with the core | 10 | # link order is important here |
11 | 11 | ||
12 | EXTRA_CFLAGS += -Idrivers/ide | 12 | EXTRA_CFLAGS += -Idrivers/ide |
13 | 13 | ||
14 | obj-$(CONFIG_BLK_DEV_IDE) += pci/ | ||
15 | |||
16 | ide-core-y += ide.o ide-io.o ide-iops.o ide-lib.o ide-probe.o ide-taskfile.o | 14 | ide-core-y += ide.o ide-io.o ide-iops.o ide-lib.o ide-probe.o ide-taskfile.o |
17 | 15 | ||
18 | ide-core-$(CONFIG_BLK_DEV_CMD640) += pci/cmd640.o | 16 | # core IDE code |
19 | |||
20 | # Core IDE code - must come before legacy | ||
21 | ide-core-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o | 17 | ide-core-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o |
22 | ide-core-$(CONFIG_BLK_DEV_IDEDMA) += ide-dma.o | 18 | ide-core-$(CONFIG_BLK_DEV_IDEDMA) += ide-dma.o |
23 | ide-core-$(CONFIG_IDE_PROC_FS) += ide-proc.o | 19 | ide-core-$(CONFIG_IDE_PROC_FS) += ide-proc.o |
24 | ide-core-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o | ||
25 | ide-core-$(CONFIG_BLK_DEV_IDEACPI) += ide-acpi.o | 20 | ide-core-$(CONFIG_BLK_DEV_IDEACPI) += ide-acpi.o |
26 | 21 | ||
27 | # built-in only drivers from arm/ | 22 | obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o |
28 | ide-core-$(CONFIG_IDE_ARM) += arm/ide_arm.o | ||
29 | 23 | ||
30 | # built-in only drivers from legacy/ | 24 | ifeq ($(CONFIG_IDE_ARM), y) |
31 | ide-core-$(CONFIG_BLK_DEV_BUDDHA) += legacy/buddha.o | 25 | ide-arm-core-y += arm/ide_arm.o |
32 | ide-core-$(CONFIG_BLK_DEV_FALCON_IDE) += legacy/falconide.o | 26 | obj-y += ide-arm-core.o |
33 | ide-core-$(CONFIG_BLK_DEV_GAYLE) += legacy/gayle.o | 27 | endif |
34 | ide-core-$(CONFIG_BLK_DEV_MAC_IDE) += legacy/macide.o | ||
35 | ide-core-$(CONFIG_BLK_DEV_Q40IDE) += legacy/q40ide.o | ||
36 | 28 | ||
37 | # built-in only drivers from ppc/ | 29 | obj-$(CONFIG_BLK_DEV_IDE) += legacy/ pci/ |
38 | ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o | ||
39 | ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o | ||
40 | 30 | ||
41 | # built-in only drivers from h8300/ | 31 | obj-$(CONFIG_IDEPCI_PCIBUS_ORDER) += ide-scan-pci.o |
42 | ide-core-$(CONFIG_IDE_H8300) += h8300/ide-h8300.o | ||
43 | 32 | ||
44 | obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o | 33 | ifeq ($(CONFIG_BLK_DEV_CMD640), y) |
34 | cmd640-core-y += pci/cmd640.o | ||
35 | obj-y += cmd640-core.o | ||
36 | endif | ||
37 | |||
38 | obj-$(CONFIG_BLK_DEV_IDE) += cris/ ppc/ | ||
39 | obj-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o | ||
40 | obj-$(CONFIG_IDE_H8300) += h8300/ | ||
45 | obj-$(CONFIG_IDE_GENERIC) += ide-generic.o | 41 | obj-$(CONFIG_IDE_GENERIC) += ide-generic.o |
46 | 42 | ||
47 | obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o | 43 | obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o |
@@ -49,6 +45,20 @@ obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd.o | |||
49 | obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o | 45 | obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o |
50 | obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o | 46 | obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o |
51 | 47 | ||
52 | obj-$(CONFIG_BLK_DEV_IDE) += legacy/ arm/ mips/ | 48 | ifeq ($(CONFIG_BLK_DEV_IDECS), y) |
53 | obj-$(CONFIG_BLK_DEV_HD) += legacy/ | 49 | ide-cs-core-y += legacy/ide-cs.o |
54 | obj-$(CONFIG_ETRAX_IDE) += cris/ | 50 | obj-y += ide-cs-core.o |
51 | endif | ||
52 | |||
53 | ifeq ($(CONFIG_BLK_DEV_PLATFORM), y) | ||
54 | ide-platform-core-y += legacy/ide_platform.o | ||
55 | obj-y += ide-platform-core.o | ||
56 | endif | ||
57 | |||
58 | obj-$(CONFIG_BLK_DEV_IDE) += arm/ mips/ | ||
59 | |||
60 | # old hd driver must be last | ||
61 | ifeq ($(CONFIG_BLK_DEV_HD), y) | ||
62 | hd-core-y += legacy/hd.o | ||
63 | obj-y += hd-core.o | ||
64 | endif | ||
diff --git a/drivers/ide/arm/Makefile b/drivers/ide/arm/Makefile index 6a78f0755f26..5f63ad216862 100644 --- a/drivers/ide/arm/Makefile +++ b/drivers/ide/arm/Makefile | |||
@@ -3,4 +3,8 @@ obj-$(CONFIG_BLK_DEV_IDE_ICSIDE) += icside.o | |||
3 | obj-$(CONFIG_BLK_DEV_IDE_RAPIDE) += rapide.o | 3 | obj-$(CONFIG_BLK_DEV_IDE_RAPIDE) += rapide.o |
4 | obj-$(CONFIG_BLK_DEV_IDE_BAST) += bast-ide.o | 4 | obj-$(CONFIG_BLK_DEV_IDE_BAST) += bast-ide.o |
5 | 5 | ||
6 | ifeq ($(CONFIG_IDE_ARM), m) | ||
7 | obj-m += ide_arm.o | ||
8 | endif | ||
9 | |||
6 | EXTRA_CFLAGS := -Idrivers/ide | 10 | EXTRA_CFLAGS := -Idrivers/ide |
diff --git a/drivers/ide/arm/ide_arm.c b/drivers/ide/arm/ide_arm.c index a1b5ddab6a48..60f2497542c0 100644 --- a/drivers/ide/arm/ide_arm.c +++ b/drivers/ide/arm/ide_arm.c | |||
@@ -24,7 +24,7 @@ | |||
24 | # define IDE_ARM_IRQ IRQ_HARDDISK | 24 | # define IDE_ARM_IRQ IRQ_HARDDISK |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | void __init ide_arm_init(void) | 27 | static int __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; |
@@ -41,4 +41,8 @@ void __init ide_arm_init(void) | |||
41 | 41 | ||
42 | ide_device_add(idx); | 42 | ide_device_add(idx); |
43 | } | 43 | } |
44 | |||
45 | return 0; | ||
44 | } | 46 | } |
47 | |||
48 | module_init(ide_arm_init); | ||
diff --git a/drivers/ide/cris/Makefile b/drivers/ide/cris/Makefile index 6176e8d6b2e6..20b95960531f 100644 --- a/drivers/ide/cris/Makefile +++ b/drivers/ide/cris/Makefile | |||
@@ -1,3 +1,3 @@ | |||
1 | EXTRA_CFLAGS += -Idrivers/ide | 1 | EXTRA_CFLAGS += -Idrivers/ide |
2 | 2 | ||
3 | obj-y += ide-cris.o | 3 | obj-$(CONFIG_IDE_ETRAX) += ide-cris.o |
diff --git a/drivers/ide/cris/ide-cris.c b/drivers/ide/cris/ide-cris.c index 924536297036..8c3294c4d23e 100644 --- a/drivers/ide/cris/ide-cris.c +++ b/drivers/ide/cris/ide-cris.c | |||
@@ -754,8 +754,7 @@ static void cris_set_dma_mode(ide_drive_t *drive, const u8 speed) | |||
754 | cris_ide_set_speed(TYPE_DMA, 0, strobe, hold); | 754 | cris_ide_set_speed(TYPE_DMA, 0, strobe, hold); |
755 | } | 755 | } |
756 | 756 | ||
757 | void __init | 757 | static int __init init_e100_ide(void) |
758 | init_e100_ide (void) | ||
759 | { | 758 | { |
760 | hw_regs_t hw; | 759 | hw_regs_t hw; |
761 | int ide_offsets[IDE_NR_PORTS], h, i; | 760 | int ide_offsets[IDE_NR_PORTS], h, i; |
@@ -823,6 +822,8 @@ init_e100_ide (void) | |||
823 | cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0); | 822 | cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0); |
824 | 823 | ||
825 | ide_device_add(idx); | 824 | ide_device_add(idx); |
825 | |||
826 | return 0; | ||
826 | } | 827 | } |
827 | 828 | ||
828 | static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16))); | 829 | static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16))); |
@@ -1056,3 +1057,5 @@ static void cris_dma_start(ide_drive_t *drive) | |||
1056 | LED_DISK_READ(1); | 1057 | LED_DISK_READ(1); |
1057 | } | 1058 | } |
1058 | } | 1059 | } |
1060 | |||
1061 | module_init(init_e100_ide); | ||
diff --git a/drivers/ide/h8300/Makefile b/drivers/ide/h8300/Makefile new file mode 100644 index 000000000000..5eba16f423f4 --- /dev/null +++ b/drivers/ide/h8300/Makefile | |||
@@ -0,0 +1,2 @@ | |||
1 | |||
2 | obj-$(CONFIG_IDE_H8300) += ide-h8300.o | ||
diff --git a/drivers/ide/h8300/ide-h8300.c b/drivers/ide/h8300/ide-h8300.c index 9fa78e98d1ba..4f6d0191cf6c 100644 --- a/drivers/ide/h8300/ide-h8300.c +++ b/drivers/ide/h8300/ide-h8300.c | |||
@@ -84,7 +84,7 @@ static inline void hwif_setup(ide_hwif_t *hwif) | |||
84 | hwif->INSL = NULL; | 84 | hwif->INSL = NULL; |
85 | } | 85 | } |
86 | 86 | ||
87 | void __init h8300_ide_init(void) | 87 | static int __init h8300_ide_init(void) |
88 | { | 88 | { |
89 | hw_regs_t hw; | 89 | hw_regs_t hw; |
90 | ide_hwif_t *hwif; | 90 | ide_hwif_t *hwif; |
@@ -104,7 +104,7 @@ void __init h8300_ide_init(void) | |||
104 | hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); | 104 | hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); |
105 | if (hwif == NULL) { | 105 | if (hwif == NULL) { |
106 | printk(KERN_ERR "ide-h8300: IDE I/F register failed\n"); | 106 | printk(KERN_ERR "ide-h8300: IDE I/F register failed\n"); |
107 | return; | 107 | return -ENOENT; |
108 | } | 108 | } |
109 | 109 | ||
110 | index = hwif->index; | 110 | index = hwif->index; |
@@ -117,8 +117,12 @@ void __init h8300_ide_init(void) | |||
117 | 117 | ||
118 | ide_device_add(idx); | 118 | ide_device_add(idx); |
119 | 119 | ||
120 | return; | 120 | return 0; |
121 | 121 | ||
122 | out_busy: | 122 | out_busy: |
123 | printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n"); | 123 | printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n"); |
124 | |||
125 | return -EBUSY; | ||
124 | } | 126 | } |
127 | |||
128 | module_init(h8300_ide_init); | ||
diff --git a/drivers/ide/ide-pnp.c b/drivers/ide/ide-pnp.c index 802efd4d9760..cbbb0f75be92 100644 --- a/drivers/ide/ide-pnp.c +++ b/drivers/ide/ide-pnp.c | |||
@@ -75,12 +75,15 @@ static struct pnp_driver idepnp_driver = { | |||
75 | .remove = idepnp_remove, | 75 | .remove = idepnp_remove, |
76 | }; | 76 | }; |
77 | 77 | ||
78 | void __init pnpide_init(void) | 78 | static int __init pnpide_init(void) |
79 | { | 79 | { |
80 | pnp_register_driver(&idepnp_driver); | 80 | return pnp_register_driver(&idepnp_driver); |
81 | } | 81 | } |
82 | 82 | ||
83 | void __exit pnpide_exit(void) | 83 | static void __exit pnpide_exit(void) |
84 | { | 84 | { |
85 | pnp_unregister_driver(&idepnp_driver); | 85 | pnp_unregister_driver(&idepnp_driver); |
86 | } | 86 | } |
87 | |||
88 | module_init(pnpide_init); | ||
89 | module_exit(pnpide_exit); | ||
diff --git a/drivers/ide/ide-scan-pci.c b/drivers/ide/ide-scan-pci.c new file mode 100644 index 000000000000..23015d89e735 --- /dev/null +++ b/drivers/ide/ide-scan-pci.c | |||
@@ -0,0 +1,11 @@ | |||
1 | #include <linux/kernel.h> | ||
2 | #include <linux/init.h> | ||
3 | #include <linux/module.h> | ||
4 | #include <linux/ide.h> | ||
5 | |||
6 | static int __init ide_scan_pci(void) | ||
7 | { | ||
8 | return ide_scan_pcibus(); | ||
9 | } | ||
10 | |||
11 | module_init(ide_scan_pci); | ||
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 6f99f5c90062..5f3e53ec5838 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
@@ -95,7 +95,7 @@ DEFINE_MUTEX(ide_cfg_mtx); | |||
95 | __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock); | 95 | __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock); |
96 | 96 | ||
97 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER | 97 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER |
98 | static int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */ | 98 | int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */ |
99 | #endif | 99 | #endif |
100 | 100 | ||
101 | int noautodma = 0; | 101 | int noautodma = 0; |
@@ -178,8 +178,6 @@ static void init_hwif_default(ide_hwif_t *hwif, unsigned int index) | |||
178 | #endif | 178 | #endif |
179 | } | 179 | } |
180 | 180 | ||
181 | extern void ide_arm_init(void); | ||
182 | |||
183 | /* | 181 | /* |
184 | * init_ide_data() sets reasonable default values into all fields | 182 | * init_ide_data() sets reasonable default values into all fields |
185 | * of all instances of the hwifs and drives, but only on the first call. | 183 | * of all instances of the hwifs and drives, but only on the first call. |
@@ -1223,26 +1221,12 @@ static int __init match_parm (char *s, const char *keywords[], int vals[], int m | |||
1223 | return 0; /* zero = nothing matched */ | 1221 | return 0; /* zero = nothing matched */ |
1224 | } | 1222 | } |
1225 | 1223 | ||
1226 | #ifdef CONFIG_BLK_DEV_ALI14XX | ||
1227 | extern int probe_ali14xx; | 1224 | extern int probe_ali14xx; |
1228 | extern int ali14xx_init(void); | ||
1229 | #endif | ||
1230 | #ifdef CONFIG_BLK_DEV_UMC8672 | ||
1231 | extern int probe_umc8672; | 1225 | extern int probe_umc8672; |
1232 | extern int umc8672_init(void); | ||
1233 | #endif | ||
1234 | #ifdef CONFIG_BLK_DEV_DTC2278 | ||
1235 | extern int probe_dtc2278; | 1226 | extern int probe_dtc2278; |
1236 | extern int dtc2278_init(void); | ||
1237 | #endif | ||
1238 | #ifdef CONFIG_BLK_DEV_HT6560B | ||
1239 | extern int probe_ht6560b; | 1227 | extern int probe_ht6560b; |
1240 | extern int ht6560b_init(void); | ||
1241 | #endif | ||
1242 | #ifdef CONFIG_BLK_DEV_QD65XX | ||
1243 | extern int probe_qd65xx; | 1228 | extern int probe_qd65xx; |
1244 | extern int qd65xx_init(void); | 1229 | extern int cmd640_vlb; |
1245 | #endif | ||
1246 | 1230 | ||
1247 | static int __initdata is_chipset_set[MAX_HWIFS]; | 1231 | static int __initdata is_chipset_set[MAX_HWIFS]; |
1248 | 1232 | ||
@@ -1458,11 +1442,8 @@ static int __init ide_setup(char *s) | |||
1458 | #endif | 1442 | #endif |
1459 | #ifdef CONFIG_BLK_DEV_CMD640 | 1443 | #ifdef CONFIG_BLK_DEV_CMD640 |
1460 | case -14: /* "cmd640_vlb" */ | 1444 | case -14: /* "cmd640_vlb" */ |
1461 | { | ||
1462 | extern int cmd640_vlb; /* flag for cmd640.c */ | ||
1463 | cmd640_vlb = 1; | 1445 | cmd640_vlb = 1; |
1464 | goto done; | 1446 | goto done; |
1465 | } | ||
1466 | #endif | 1447 | #endif |
1467 | #ifdef CONFIG_BLK_DEV_HT6560B | 1448 | #ifdef CONFIG_BLK_DEV_HT6560B |
1468 | case -13: /* "ht6560b" */ | 1449 | case -13: /* "ht6560b" */ |
@@ -1552,83 +1533,6 @@ done: | |||
1552 | return 1; | 1533 | return 1; |
1553 | } | 1534 | } |
1554 | 1535 | ||
1555 | extern void __init pnpide_init(void); | ||
1556 | extern void __exit pnpide_exit(void); | ||
1557 | extern void __init h8300_ide_init(void); | ||
1558 | extern void __init mpc8xx_ide_probe(void); | ||
1559 | |||
1560 | /* | ||
1561 | * probe_for_hwifs() finds/initializes "known" IDE interfaces | ||
1562 | */ | ||
1563 | static void __init probe_for_hwifs (void) | ||
1564 | { | ||
1565 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER | ||
1566 | ide_scan_pcibus(ide_scan_direction); | ||
1567 | #endif | ||
1568 | |||
1569 | #ifdef CONFIG_ETRAX_IDE | ||
1570 | { | ||
1571 | extern void init_e100_ide(void); | ||
1572 | init_e100_ide(); | ||
1573 | } | ||
1574 | #endif /* CONFIG_ETRAX_IDE */ | ||
1575 | #ifdef CONFIG_BLK_DEV_CMD640 | ||
1576 | { | ||
1577 | extern void ide_probe_for_cmd640x(void); | ||
1578 | ide_probe_for_cmd640x(); | ||
1579 | } | ||
1580 | #endif /* CONFIG_BLK_DEV_CMD640 */ | ||
1581 | #ifdef CONFIG_BLK_DEV_IDE_PMAC | ||
1582 | { | ||
1583 | extern int pmac_ide_probe(void); | ||
1584 | (void)pmac_ide_probe(); | ||
1585 | } | ||
1586 | #endif /* CONFIG_BLK_DEV_IDE_PMAC */ | ||
1587 | #ifdef CONFIG_BLK_DEV_GAYLE | ||
1588 | { | ||
1589 | extern void gayle_init(void); | ||
1590 | gayle_init(); | ||
1591 | } | ||
1592 | #endif /* CONFIG_BLK_DEV_GAYLE */ | ||
1593 | #ifdef CONFIG_BLK_DEV_FALCON_IDE | ||
1594 | { | ||
1595 | extern void falconide_init(void); | ||
1596 | falconide_init(); | ||
1597 | } | ||
1598 | #endif /* CONFIG_BLK_DEV_FALCON_IDE */ | ||
1599 | #ifdef CONFIG_BLK_DEV_MAC_IDE | ||
1600 | { | ||
1601 | extern void macide_init(void); | ||
1602 | macide_init(); | ||
1603 | } | ||
1604 | #endif /* CONFIG_BLK_DEV_MAC_IDE */ | ||
1605 | #ifdef CONFIG_BLK_DEV_Q40IDE | ||
1606 | { | ||
1607 | extern void q40ide_init(void); | ||
1608 | q40ide_init(); | ||
1609 | } | ||
1610 | #endif /* CONFIG_BLK_DEV_Q40IDE */ | ||
1611 | #ifdef CONFIG_BLK_DEV_BUDDHA | ||
1612 | { | ||
1613 | extern void buddha_init(void); | ||
1614 | buddha_init(); | ||
1615 | } | ||
1616 | #endif /* CONFIG_BLK_DEV_BUDDHA */ | ||
1617 | #ifdef CONFIG_BLK_DEV_IDEPNP | ||
1618 | pnpide_init(); | ||
1619 | #endif | ||
1620 | #ifdef CONFIG_H8300 | ||
1621 | h8300_ide_init(); | ||
1622 | #endif | ||
1623 | #ifdef BLK_DEV_MPC8xx_IDE | ||
1624 | mpc8xx_ide_probe(); | ||
1625 | #endif | ||
1626 | } | ||
1627 | |||
1628 | /* | ||
1629 | * Probe module | ||
1630 | */ | ||
1631 | |||
1632 | EXPORT_SYMBOL(ide_lock); | 1536 | EXPORT_SYMBOL(ide_lock); |
1633 | 1537 | ||
1634 | static int ide_bus_match(struct device *dev, struct device_driver *drv) | 1538 | static int ide_bus_match(struct device *dev, struct device_driver *drv) |
@@ -1775,33 +1679,6 @@ static int __init ide_init(void) | |||
1775 | 1679 | ||
1776 | proc_ide_create(); | 1680 | proc_ide_create(); |
1777 | 1681 | ||
1778 | #ifdef CONFIG_IDE_ARM | ||
1779 | ide_arm_init(); | ||
1780 | #endif | ||
1781 | #ifdef CONFIG_BLK_DEV_ALI14XX | ||
1782 | if (probe_ali14xx) | ||
1783 | (void)ali14xx_init(); | ||
1784 | #endif | ||
1785 | #ifdef CONFIG_BLK_DEV_UMC8672 | ||
1786 | if (probe_umc8672) | ||
1787 | (void)umc8672_init(); | ||
1788 | #endif | ||
1789 | #ifdef CONFIG_BLK_DEV_DTC2278 | ||
1790 | if (probe_dtc2278) | ||
1791 | (void)dtc2278_init(); | ||
1792 | #endif | ||
1793 | #ifdef CONFIG_BLK_DEV_HT6560B | ||
1794 | if (probe_ht6560b) | ||
1795 | (void)ht6560b_init(); | ||
1796 | #endif | ||
1797 | #ifdef CONFIG_BLK_DEV_QD65XX | ||
1798 | if (probe_qd65xx) | ||
1799 | (void)qd65xx_init(); | ||
1800 | #endif | ||
1801 | |||
1802 | /* Probe for special PCI and other "known" interface chipsets. */ | ||
1803 | probe_for_hwifs(); | ||
1804 | |||
1805 | return 0; | 1682 | return 0; |
1806 | } | 1683 | } |
1807 | 1684 | ||
@@ -1837,10 +1714,6 @@ void __exit cleanup_module (void) | |||
1837 | for (index = 0; index < MAX_HWIFS; ++index) | 1714 | for (index = 0; index < MAX_HWIFS; ++index) |
1838 | ide_unregister(index); | 1715 | ide_unregister(index); |
1839 | 1716 | ||
1840 | #ifdef CONFIG_BLK_DEV_IDEPNP | ||
1841 | pnpide_exit(); | ||
1842 | #endif | ||
1843 | |||
1844 | proc_ide_destroy(); | 1717 | proc_ide_destroy(); |
1845 | 1718 | ||
1846 | bus_unregister(&ide_bus_type); | 1719 | bus_unregister(&ide_bus_type); |
diff --git a/drivers/ide/legacy/Makefile b/drivers/ide/legacy/Makefile index 409822349f10..7043ec7d1e05 100644 --- a/drivers/ide/legacy/Makefile +++ b/drivers/ide/legacy/Makefile | |||
@@ -1,15 +1,24 @@ | |||
1 | 1 | ||
2 | # link order is important here | ||
3 | |||
2 | obj-$(CONFIG_BLK_DEV_ALI14XX) += ali14xx.o | 4 | obj-$(CONFIG_BLK_DEV_ALI14XX) += ali14xx.o |
5 | obj-$(CONFIG_BLK_DEV_UMC8672) += umc8672.o | ||
3 | obj-$(CONFIG_BLK_DEV_DTC2278) += dtc2278.o | 6 | obj-$(CONFIG_BLK_DEV_DTC2278) += dtc2278.o |
4 | obj-$(CONFIG_BLK_DEV_HT6560B) += ht6560b.o | 7 | obj-$(CONFIG_BLK_DEV_HT6560B) += ht6560b.o |
5 | obj-$(CONFIG_BLK_DEV_QD65XX) += qd65xx.o | 8 | obj-$(CONFIG_BLK_DEV_QD65XX) += qd65xx.o |
6 | obj-$(CONFIG_BLK_DEV_UMC8672) += umc8672.o | ||
7 | 9 | ||
8 | obj-$(CONFIG_BLK_DEV_IDECS) += ide-cs.o | 10 | obj-$(CONFIG_BLK_DEV_GAYLE) += gayle.o |
11 | obj-$(CONFIG_BLK_DEV_FALCON_IDE) += falconide.o | ||
12 | obj-$(CONFIG_BLK_DEV_MAC_IDE) += macide.o | ||
13 | obj-$(CONFIG_BLK_DEV_Q40IDE) += q40ide.o | ||
14 | obj-$(CONFIG_BLK_DEV_BUDDHA) += buddha.o | ||
9 | 15 | ||
10 | obj-$(CONFIG_BLK_DEV_PLATFORM) += ide_platform.o | 16 | ifeq ($(CONFIG_BLK_DEV_IDECS), m) |
17 | obj-m += ide-cs.o | ||
18 | endif | ||
11 | 19 | ||
12 | # Last of all | 20 | ifeq ($(CONFIG_BLK_DEV_PLATFORM), m) |
13 | obj-$(CONFIG_BLK_DEV_HD) += hd.o | 21 | obj-m += ide_platform.o |
22 | endif | ||
14 | 23 | ||
15 | EXTRA_CFLAGS := -Idrivers/ide | 24 | EXTRA_CFLAGS := -Idrivers/ide |
diff --git a/drivers/ide/legacy/ali14xx.c b/drivers/ide/legacy/ali14xx.c index 38c3a6d63f30..5ec0be4cbad7 100644 --- a/drivers/ide/legacy/ali14xx.c +++ b/drivers/ide/legacy/ali14xx.c | |||
@@ -231,8 +231,7 @@ int probe_ali14xx = 0; | |||
231 | module_param_named(probe, probe_ali14xx, bool, 0); | 231 | module_param_named(probe, probe_ali14xx, bool, 0); |
232 | MODULE_PARM_DESC(probe, "probe for ALI M14xx chipsets"); | 232 | MODULE_PARM_DESC(probe, "probe for ALI M14xx chipsets"); |
233 | 233 | ||
234 | /* Can be called directly from ide.c. */ | 234 | static int __init ali14xx_init(void) |
235 | int __init ali14xx_init(void) | ||
236 | { | 235 | { |
237 | if (probe_ali14xx == 0) | 236 | if (probe_ali14xx == 0) |
238 | goto out; | 237 | goto out; |
@@ -248,9 +247,7 @@ out: | |||
248 | return -ENODEV; | 247 | return -ENODEV; |
249 | } | 248 | } |
250 | 249 | ||
251 | #ifdef MODULE | ||
252 | module_init(ali14xx_init); | 250 | module_init(ali14xx_init); |
253 | #endif | ||
254 | 251 | ||
255 | MODULE_AUTHOR("see local file"); | 252 | MODULE_AUTHOR("see local file"); |
256 | MODULE_DESCRIPTION("support of ALI 14XX IDE chipsets"); | 253 | MODULE_DESCRIPTION("support of ALI 14XX IDE chipsets"); |
diff --git a/drivers/ide/legacy/buddha.c b/drivers/ide/legacy/buddha.c index ba64c4b9f918..e97766aef374 100644 --- a/drivers/ide/legacy/buddha.c +++ b/drivers/ide/legacy/buddha.c | |||
@@ -143,7 +143,7 @@ static int xsurf_ack_intr(ide_hwif_t *hwif) | |||
143 | * Probe for a Buddha or Catweasel IDE interface | 143 | * Probe for a Buddha or Catweasel IDE interface |
144 | */ | 144 | */ |
145 | 145 | ||
146 | void __init buddha_init(void) | 146 | static int __init buddha_init(void) |
147 | { | 147 | { |
148 | hw_regs_t hw; | 148 | hw_regs_t hw; |
149 | ide_hwif_t *hwif; | 149 | ide_hwif_t *hwif; |
@@ -243,4 +243,8 @@ fail_base2: | |||
243 | 243 | ||
244 | ide_device_add(idx); | 244 | ide_device_add(idx); |
245 | } | 245 | } |
246 | |||
247 | return 0; | ||
246 | } | 248 | } |
249 | |||
250 | module_init(buddha_init); | ||
diff --git a/drivers/ide/legacy/dtc2278.c b/drivers/ide/legacy/dtc2278.c index 24a845d45bd2..13eee6da2806 100644 --- a/drivers/ide/legacy/dtc2278.c +++ b/drivers/ide/legacy/dtc2278.c | |||
@@ -150,8 +150,7 @@ int probe_dtc2278 = 0; | |||
150 | module_param_named(probe, probe_dtc2278, bool, 0); | 150 | module_param_named(probe, probe_dtc2278, bool, 0); |
151 | MODULE_PARM_DESC(probe, "probe for DTC2278xx chipsets"); | 151 | MODULE_PARM_DESC(probe, "probe for DTC2278xx chipsets"); |
152 | 152 | ||
153 | /* Can be called directly from ide.c. */ | 153 | static int __init dtc2278_init(void) |
154 | int __init dtc2278_init(void) | ||
155 | { | 154 | { |
156 | if (probe_dtc2278 == 0) | 155 | if (probe_dtc2278 == 0) |
157 | return -ENODEV; | 156 | return -ENODEV; |
@@ -163,9 +162,7 @@ int __init dtc2278_init(void) | |||
163 | return 0; | 162 | return 0; |
164 | } | 163 | } |
165 | 164 | ||
166 | #ifdef MODULE | ||
167 | module_init(dtc2278_init); | 165 | module_init(dtc2278_init); |
168 | #endif | ||
169 | 166 | ||
170 | MODULE_AUTHOR("See Local File"); | 167 | MODULE_AUTHOR("See Local File"); |
171 | MODULE_DESCRIPTION("support of DTC-2278 VLB IDE chipsets"); | 168 | MODULE_DESCRIPTION("support of DTC-2278 VLB IDE chipsets"); |
diff --git a/drivers/ide/legacy/falconide.c b/drivers/ide/legacy/falconide.c index c1a84540beb1..dec2ef99c778 100644 --- a/drivers/ide/legacy/falconide.c +++ b/drivers/ide/legacy/falconide.c | |||
@@ -62,7 +62,7 @@ EXPORT_SYMBOL(falconide_intr_lock); | |||
62 | * Probe for a Falcon IDE interface | 62 | * Probe for a Falcon IDE interface |
63 | */ | 63 | */ |
64 | 64 | ||
65 | void __init falconide_init(void) | 65 | static int __init falconide_init(void) |
66 | { | 66 | { |
67 | if (MACH_IS_ATARI && ATARIHW_PRESENT(IDE)) { | 67 | if (MACH_IS_ATARI && ATARIHW_PRESENT(IDE)) { |
68 | hw_regs_t hw; | 68 | hw_regs_t hw; |
@@ -84,4 +84,9 @@ void __init falconide_init(void) | |||
84 | 84 | ||
85 | ide_device_add(idx); | 85 | ide_device_add(idx); |
86 | } | 86 | } |
87 | } | ||
88 | |||
89 | return 0; | ||
87 | } | 90 | } |
91 | |||
92 | module_init(falconide_init); | ||
diff --git a/drivers/ide/legacy/gayle.c b/drivers/ide/legacy/gayle.c index ec53dc9b483c..e21ef75c9055 100644 --- a/drivers/ide/legacy/gayle.c +++ b/drivers/ide/legacy/gayle.c | |||
@@ -110,13 +110,13 @@ static int gayle_ack_intr_a1200(ide_hwif_t *hwif) | |||
110 | * Probe for a Gayle IDE interface (and optionally for an IDE doubler) | 110 | * Probe for a Gayle IDE interface (and optionally for an IDE doubler) |
111 | */ | 111 | */ |
112 | 112 | ||
113 | void __init gayle_init(void) | 113 | static int __init gayle_init(void) |
114 | { | 114 | { |
115 | int a4000, i; | 115 | int a4000, i; |
116 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; | 116 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; |
117 | 117 | ||
118 | if (!MACH_IS_AMIGA) | 118 | if (!MACH_IS_AMIGA) |
119 | return; | 119 | return -ENODEV; |
120 | 120 | ||
121 | if ((a4000 = AMIGAHW_PRESENT(A4000_IDE)) || AMIGAHW_PRESENT(A1200_IDE)) | 121 | if ((a4000 = AMIGAHW_PRESENT(A4000_IDE)) || AMIGAHW_PRESENT(A1200_IDE)) |
122 | goto found; | 122 | goto found; |
@@ -126,7 +126,7 @@ void __init gayle_init(void) | |||
126 | NULL)) | 126 | NULL)) |
127 | goto found; | 127 | goto found; |
128 | #endif | 128 | #endif |
129 | return; | 129 | return -ENODEV; |
130 | 130 | ||
131 | found: | 131 | found: |
132 | for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) { | 132 | for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) { |
@@ -191,4 +191,8 @@ found: | |||
191 | } | 191 | } |
192 | 192 | ||
193 | ide_device_add(idx); | 193 | ide_device_add(idx); |
194 | |||
195 | return 0; | ||
194 | } | 196 | } |
197 | |||
198 | module_init(gayle_init); | ||
diff --git a/drivers/ide/legacy/ht6560b.c b/drivers/ide/legacy/ht6560b.c index a4245d13f11b..8da5031a6d05 100644 --- a/drivers/ide/legacy/ht6560b.c +++ b/drivers/ide/legacy/ht6560b.c | |||
@@ -307,8 +307,7 @@ int probe_ht6560b = 0; | |||
307 | module_param_named(probe, probe_ht6560b, bool, 0); | 307 | module_param_named(probe, probe_ht6560b, bool, 0); |
308 | MODULE_PARM_DESC(probe, "probe for HT6560B chipset"); | 308 | MODULE_PARM_DESC(probe, "probe for HT6560B chipset"); |
309 | 309 | ||
310 | /* Can be called directly from ide.c. */ | 310 | static int __init ht6560b_init(void) |
311 | int __init ht6560b_init(void) | ||
312 | { | 311 | { |
313 | ide_hwif_t *hwif, *mate; | 312 | ide_hwif_t *hwif, *mate; |
314 | static u8 idx[4] = { 0, 1, 0xff, 0xff }; | 313 | static u8 idx[4] = { 0, 1, 0xff, 0xff }; |
@@ -369,9 +368,7 @@ release_region: | |||
369 | return -ENODEV; | 368 | return -ENODEV; |
370 | } | 369 | } |
371 | 370 | ||
372 | #ifdef MODULE | ||
373 | module_init(ht6560b_init); | 371 | module_init(ht6560b_init); |
374 | #endif | ||
375 | 372 | ||
376 | MODULE_AUTHOR("See Local File"); | 373 | MODULE_AUTHOR("See Local File"); |
377 | MODULE_DESCRIPTION("HT-6560B EIDE-controller support"); | 374 | MODULE_DESCRIPTION("HT-6560B EIDE-controller support"); |
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c index c1b7881c280a..6b3e960350aa 100644 --- a/drivers/ide/legacy/macide.c +++ b/drivers/ide/legacy/macide.c | |||
@@ -81,7 +81,7 @@ int macide_ack_intr(ide_hwif_t* hwif) | |||
81 | * Probe for a Macintosh IDE interface | 81 | * Probe for a Macintosh IDE interface |
82 | */ | 82 | */ |
83 | 83 | ||
84 | void __init macide_init(void) | 84 | static int __init macide_init(void) |
85 | { | 85 | { |
86 | hw_regs_t hw; | 86 | hw_regs_t hw; |
87 | ide_hwif_t *hwif; | 87 | ide_hwif_t *hwif; |
@@ -106,7 +106,7 @@ void __init macide_init(void) | |||
106 | IRQ_BABOON_1); | 106 | IRQ_BABOON_1); |
107 | break; | 107 | break; |
108 | default: | 108 | default: |
109 | return; | 109 | return -ENODEV; |
110 | } | 110 | } |
111 | 111 | ||
112 | hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); | 112 | hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); |
@@ -139,4 +139,8 @@ void __init macide_init(void) | |||
139 | 139 | ||
140 | ide_device_add(idx); | 140 | ide_device_add(idx); |
141 | } | 141 | } |
142 | |||
143 | return 0; | ||
142 | } | 144 | } |
145 | |||
146 | module_init(macide_init); | ||
diff --git a/drivers/ide/legacy/q40ide.c b/drivers/ide/legacy/q40ide.c index 2082e9c6efd9..0154c91ee4b1 100644 --- a/drivers/ide/legacy/q40ide.c +++ b/drivers/ide/legacy/q40ide.c | |||
@@ -111,7 +111,7 @@ static const char *q40_ide_names[Q40IDE_NUM_HWIFS]={ | |||
111 | * Probe for Q40 IDE interfaces | 111 | * Probe for Q40 IDE interfaces |
112 | */ | 112 | */ |
113 | 113 | ||
114 | void __init q40ide_init(void) | 114 | static int __init q40ide_init(void) |
115 | { | 115 | { |
116 | int i; | 116 | int i; |
117 | ide_hwif_t *hwif; | 117 | ide_hwif_t *hwif; |
@@ -119,7 +119,7 @@ void __init q40ide_init(void) | |||
119 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; | 119 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; |
120 | 120 | ||
121 | if (!MACH_IS_Q40) | 121 | if (!MACH_IS_Q40) |
122 | return ; | 122 | return -ENODEV; |
123 | 123 | ||
124 | for (i = 0; i < Q40IDE_NUM_HWIFS; i++) { | 124 | for (i = 0; i < Q40IDE_NUM_HWIFS; i++) { |
125 | hw_regs_t hw; | 125 | hw_regs_t hw; |
@@ -153,5 +153,8 @@ void __init q40ide_init(void) | |||
153 | } | 153 | } |
154 | 154 | ||
155 | ide_device_add(idx); | 155 | ide_device_add(idx); |
156 | |||
157 | return 0; | ||
156 | } | 158 | } |
157 | 159 | ||
160 | module_init(q40ide_init); | ||
diff --git a/drivers/ide/legacy/qd65xx.c b/drivers/ide/legacy/qd65xx.c index 912e73853faa..2bac4c1a6532 100644 --- a/drivers/ide/legacy/qd65xx.c +++ b/drivers/ide/legacy/qd65xx.c | |||
@@ -478,8 +478,7 @@ int probe_qd65xx = 0; | |||
478 | module_param_named(probe, probe_qd65xx, bool, 0); | 478 | module_param_named(probe, probe_qd65xx, bool, 0); |
479 | MODULE_PARM_DESC(probe, "probe for QD65xx chipsets"); | 479 | MODULE_PARM_DESC(probe, "probe for QD65xx chipsets"); |
480 | 480 | ||
481 | /* Can be called directly from ide.c. */ | 481 | static int __init qd65xx_init(void) |
482 | int __init qd65xx_init(void) | ||
483 | { | 482 | { |
484 | if (probe_qd65xx == 0) | 483 | if (probe_qd65xx == 0) |
485 | return -ENODEV; | 484 | return -ENODEV; |
@@ -492,9 +491,7 @@ int __init qd65xx_init(void) | |||
492 | return 0; | 491 | return 0; |
493 | } | 492 | } |
494 | 493 | ||
495 | #ifdef MODULE | ||
496 | module_init(qd65xx_init); | 494 | module_init(qd65xx_init); |
497 | #endif | ||
498 | 495 | ||
499 | MODULE_AUTHOR("Samuel Thibault"); | 496 | MODULE_AUTHOR("Samuel Thibault"); |
500 | MODULE_DESCRIPTION("support of qd65xx vlb ide chipset"); | 497 | MODULE_DESCRIPTION("support of qd65xx vlb ide chipset"); |
diff --git a/drivers/ide/legacy/umc8672.c b/drivers/ide/legacy/umc8672.c index 79577b916874..a1ae1ae6699d 100644 --- a/drivers/ide/legacy/umc8672.c +++ b/drivers/ide/legacy/umc8672.c | |||
@@ -169,8 +169,7 @@ int probe_umc8672 = 0; | |||
169 | module_param_named(probe, probe_umc8672, bool, 0); | 169 | module_param_named(probe, probe_umc8672, bool, 0); |
170 | MODULE_PARM_DESC(probe, "probe for UMC8672 chipset"); | 170 | MODULE_PARM_DESC(probe, "probe for UMC8672 chipset"); |
171 | 171 | ||
172 | /* Can be called directly from ide.c. */ | 172 | static int __init umc8672_init(void) |
173 | int __init umc8672_init(void) | ||
174 | { | 173 | { |
175 | if (probe_umc8672 == 0) | 174 | if (probe_umc8672 == 0) |
176 | goto out; | 175 | goto out; |
@@ -181,9 +180,7 @@ out: | |||
181 | return -ENODEV;; | 180 | return -ENODEV;; |
182 | } | 181 | } |
183 | 182 | ||
184 | #ifdef MODULE | ||
185 | module_init(umc8672_init); | 183 | module_init(umc8672_init); |
186 | #endif | ||
187 | 184 | ||
188 | MODULE_AUTHOR("Wolfram Podien"); | 185 | MODULE_AUTHOR("Wolfram Podien"); |
189 | MODULE_DESCRIPTION("Support for UMC 8672 IDE chipset"); | 186 | MODULE_DESCRIPTION("Support for UMC 8672 IDE chipset"); |
diff --git a/drivers/ide/pci/Makefile b/drivers/ide/pci/Makefile index 95d1ea8f1f14..94803253e8af 100644 --- a/drivers/ide/pci/Makefile +++ b/drivers/ide/pci/Makefile | |||
@@ -36,4 +36,8 @@ obj-$(CONFIG_BLK_DEV_VIA82CXXX) += via82cxxx.o | |||
36 | # Must appear at the end of the block | 36 | # Must appear at the end of the block |
37 | obj-$(CONFIG_BLK_DEV_GENERIC) += generic.o | 37 | obj-$(CONFIG_BLK_DEV_GENERIC) += generic.o |
38 | 38 | ||
39 | ifeq ($(CONFIG_BLK_DEV_CMD640), m) | ||
40 | obj-m += cmd640.o | ||
41 | endif | ||
42 | |||
39 | EXTRA_CFLAGS := -Idrivers/ide | 43 | EXTRA_CFLAGS := -Idrivers/ide |
diff --git a/drivers/ide/pci/cmd640.c b/drivers/ide/pci/cmd640.c index 5096e059ac5a..da3565e0071f 100644 --- a/drivers/ide/pci/cmd640.c +++ b/drivers/ide/pci/cmd640.c | |||
@@ -706,9 +706,9 @@ static int pci_conf2(void) | |||
706 | } | 706 | } |
707 | 707 | ||
708 | /* | 708 | /* |
709 | * Probe for a cmd640 chipset, and initialize it if found. Called from ide.c | 709 | * Probe for a cmd640 chipset, and initialize it if found. |
710 | */ | 710 | */ |
711 | int __init ide_probe_for_cmd640x (void) | 711 | static int __init cmd640x_init(void) |
712 | { | 712 | { |
713 | #ifdef CONFIG_BLK_DEV_CMD640_ENHANCED | 713 | #ifdef CONFIG_BLK_DEV_CMD640_ENHANCED |
714 | int second_port_toggled = 0; | 714 | int second_port_toggled = 0; |
@@ -883,3 +883,7 @@ int __init ide_probe_for_cmd640x (void) | |||
883 | return 1; | 883 | return 1; |
884 | } | 884 | } |
885 | 885 | ||
886 | module_param_named(probe_vlb, cmd640_vlb, bool, 0); | ||
887 | MODULE_PARM_DESC(probe_vlb, "probe for VLB version of CMD640 chipset"); | ||
888 | |||
889 | module_init(cmd640x_init); | ||
diff --git a/drivers/ide/ppc/Makefile b/drivers/ide/ppc/Makefile new file mode 100644 index 000000000000..65af5848b28c --- /dev/null +++ b/drivers/ide/ppc/Makefile | |||
@@ -0,0 +1,3 @@ | |||
1 | |||
2 | obj-$(CONFIG_BLK_DEV_IDE_PMAC) += pmac.o | ||
3 | obj-$(CONFIG_BLK_DEV_MPC8xx_IDE) += mpc8xx.o | ||
diff --git a/drivers/ide/ppc/mpc8xx.c b/drivers/ide/ppc/mpc8xx.c index 8172e813b034..3fd5d45b5e0e 100644 --- a/drivers/ide/ppc/mpc8xx.c +++ b/drivers/ide/ppc/mpc8xx.c | |||
@@ -839,7 +839,7 @@ void m8xx_ide_init(void) | |||
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 | 841 | ||
842 | void __init mpc8xx_ide_probe(void) | 842 | static int __init mpc8xx_ide_probe(void) |
843 | { | 843 | { |
844 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; | 844 | u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; |
845 | 845 | ||
@@ -851,4 +851,8 @@ void __init mpc8xx_ide_probe(void) | |||
851 | #endif | 851 | #endif |
852 | 852 | ||
853 | ide_device_add(idx); | 853 | ide_device_add(idx); |
854 | |||
855 | return 0; | ||
854 | } | 856 | } |
857 | |||
858 | module_init(mpc8xx_ide_probe); | ||
diff --git a/drivers/ide/ppc/pmac.c b/drivers/ide/ppc/pmac.c index 36e4b9570746..cd514743df96 100644 --- a/drivers/ide/ppc/pmac.c +++ b/drivers/ide/ppc/pmac.c | |||
@@ -1786,3 +1786,5 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif) | |||
1786 | } | 1786 | } |
1787 | 1787 | ||
1788 | #endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */ | 1788 | #endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */ |
1789 | |||
1790 | module_init(pmac_ide_probe); | ||
diff --git a/drivers/ide/setup-pci.c b/drivers/ide/setup-pci.c index d89f84d41b08..63ef8aaa7b90 100644 --- a/drivers/ide/setup-pci.c +++ b/drivers/ide/setup-pci.c | |||
@@ -766,21 +766,20 @@ static int __init ide_scan_pcidev(struct pci_dev *dev) | |||
766 | 766 | ||
767 | /** | 767 | /** |
768 | * ide_scan_pcibus - perform the initial IDE driver scan | 768 | * ide_scan_pcibus - perform the initial IDE driver scan |
769 | * @scan_direction: set for reverse order scanning | ||
770 | * | 769 | * |
771 | * Perform the initial bus rather than driver ordered scan of the | 770 | * Perform the initial bus rather than driver ordered scan of the |
772 | * PCI drivers. After this all IDE pci handling becomes standard | 771 | * PCI drivers. After this all IDE pci handling becomes standard |
773 | * module ordering not traditionally ordered. | 772 | * module ordering not traditionally ordered. |
774 | */ | 773 | */ |
775 | 774 | ||
776 | void __init ide_scan_pcibus (int scan_direction) | 775 | int __init ide_scan_pcibus(void) |
777 | { | 776 | { |
778 | struct pci_dev *dev = NULL; | 777 | struct pci_dev *dev = NULL; |
779 | struct pci_driver *d; | 778 | struct pci_driver *d; |
780 | struct list_head *l, *n; | 779 | struct list_head *l, *n; |
781 | 780 | ||
782 | pre_init = 0; | 781 | pre_init = 0; |
783 | if (!scan_direction) | 782 | if (!ide_scan_direction) |
784 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev))) | 783 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev))) |
785 | ide_scan_pcidev(dev); | 784 | ide_scan_pcidev(dev); |
786 | else | 785 | else |
@@ -801,5 +800,7 @@ void __init ide_scan_pcibus (int scan_direction) | |||
801 | printk(KERN_ERR "%s: failed to register %s driver\n", | 800 | printk(KERN_ERR "%s: failed to register %s driver\n", |
802 | __FUNCTION__, d->driver.mod_name); | 801 | __FUNCTION__, d->driver.mod_name); |
803 | } | 802 | } |
803 | |||
804 | return 0; | ||
804 | } | 805 | } |
805 | #endif | 806 | #endif |
diff --git a/include/linux/ide.h b/include/linux/ide.h index 9c037a0f2af2..735737500f8f 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -1014,7 +1014,8 @@ extern void do_ide_request(struct request_queue *); | |||
1014 | void ide_init_disk(struct gendisk *, ide_drive_t *); | 1014 | void ide_init_disk(struct gendisk *, ide_drive_t *); |
1015 | 1015 | ||
1016 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER | 1016 | #ifdef CONFIG_IDEPCI_PCIBUS_ORDER |
1017 | extern void ide_scan_pcibus(int scan_direction) __init; | 1017 | extern int ide_scan_direction; |
1018 | int __init ide_scan_pcibus(void); | ||
1018 | extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name); | 1019 | extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name); |
1019 | #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME) | 1020 | #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME) |
1020 | #else | 1021 | #else |