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>
This commit is contained in:
@@ -30,7 +30,7 @@
|
|||||||
***
|
***
|
||||||
*** The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT*
|
*** The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT*
|
||||||
*** automatically detected by Linux. For safe, reliable operation with such
|
*** automatically detected by Linux. For safe, reliable operation with such
|
||||||
*** interfaces, one *MUST* use the "ide0=cmd640_vlb" kernel option.
|
*** interfaces, one *MUST* use the "cmd640.probe_vlb" kernel option.
|
||||||
***
|
***
|
||||||
*** Use of the "serialize" option is no longer necessary.
|
*** Use of the "serialize" option is no longer necessary.
|
||||||
|
|
||||||
@@ -292,9 +292,6 @@ The following are valid ONLY on ide0, which usually corresponds
|
|||||||
to the first ATA interface found on the particular host, and the defaults for
|
to the first ATA interface found on the particular host, and the defaults for
|
||||||
the base,ctl ports must not be altered.
|
the base,ctl ports must not be altered.
|
||||||
|
|
||||||
"ide0=cmd640_vlb" : *REQUIRED* for VLB cards with the CMD640 chip
|
|
||||||
(not for PCI -- automatically detected)
|
|
||||||
|
|
||||||
"ide=doubler" : probe/support IDE doublers on Amiga
|
"ide=doubler" : probe/support IDE doublers on Amiga
|
||||||
|
|
||||||
There may be more options than shown -- use the source, Luke!
|
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:
|
|||||||
* "probe" module parameter when ali14xx driver is compiled as module
|
* "probe" module parameter when ali14xx driver is compiled as module
|
||||||
("modprobe ali14xx probe")
|
("modprobe ali14xx probe")
|
||||||
|
|
||||||
|
Also for legacy CMD640 host driver (cmd640) you need to use "probe_vlb"
|
||||||
|
kernel paremeter to enable probing for VLB version of the chipset (PCI ones
|
||||||
|
are detected automatically).
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
|
|
||||||
IDE ATAPI streaming tape driver
|
IDE ATAPI streaming tape driver
|
||||||
|
@@ -325,7 +325,7 @@ config BLK_DEV_PLATFORM
|
|||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
config BLK_DEV_CMD640
|
config BLK_DEV_CMD640
|
||||||
bool "CMD640 chipset bugfix/support"
|
tristate "CMD640 chipset bugfix/support"
|
||||||
depends on X86
|
depends on X86
|
||||||
---help---
|
---help---
|
||||||
The CMD-Technologies CMD640 IDE chip is used on many common 486 and
|
The CMD-Technologies CMD640 IDE chip is used on many common 486 and
|
||||||
@@ -359,7 +359,7 @@ config BLK_DEV_CMD640_ENHANCED
|
|||||||
Otherwise say N.
|
Otherwise say N.
|
||||||
|
|
||||||
config BLK_DEV_IDEPNP
|
config BLK_DEV_IDEPNP
|
||||||
bool "PNP EIDE support"
|
tristate "PNP EIDE support"
|
||||||
depends on PNP
|
depends on PNP
|
||||||
help
|
help
|
||||||
If you have a PnP (Plug and Play) compatible EIDE card and
|
If you have a PnP (Plug and Play) compatible EIDE card and
|
||||||
@@ -788,7 +788,7 @@ config BLK_DEV_CELLEB
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
config BLK_DEV_IDE_PMAC
|
config BLK_DEV_IDE_PMAC
|
||||||
bool "Builtin PowerMac IDE support"
|
tristate "Builtin PowerMac IDE support"
|
||||||
depends on PPC_PMAC && IDE=y && BLK_DEV_IDE=y
|
depends on PPC_PMAC && IDE=y && BLK_DEV_IDE=y
|
||||||
help
|
help
|
||||||
This driver provides support for the built-in IDE controller on
|
This driver provides support for the built-in IDE controller on
|
||||||
@@ -842,7 +842,9 @@ config BLK_DEV_IDE_AU1XXX_SEQTS_PER_RQ
|
|||||||
depends on BLK_DEV_IDE_AU1XXX
|
depends on BLK_DEV_IDE_AU1XXX
|
||||||
|
|
||||||
config IDE_ARM
|
config IDE_ARM
|
||||||
def_bool ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK)
|
tristate "ARM IDE support"
|
||||||
|
depends on ARM && (ARCH_CLPS7500 || ARCH_RPC || ARCH_SHARK)
|
||||||
|
default y
|
||||||
|
|
||||||
config BLK_DEV_IDE_ICSIDE
|
config BLK_DEV_IDE_ICSIDE
|
||||||
tristate "ICS IDE interface support"
|
tristate "ICS IDE interface support"
|
||||||
@@ -874,7 +876,7 @@ config BLK_DEV_IDE_BAST
|
|||||||
Simtec BAST or the Thorcom VR1000
|
Simtec BAST or the Thorcom VR1000
|
||||||
|
|
||||||
config ETRAX_IDE
|
config ETRAX_IDE
|
||||||
bool "ETRAX IDE support"
|
tristate "ETRAX IDE support"
|
||||||
depends on CRIS && BROKEN
|
depends on CRIS && BROKEN
|
||||||
select BLK_DEV_IDEDMA
|
select BLK_DEV_IDEDMA
|
||||||
help
|
help
|
||||||
@@ -908,14 +910,14 @@ config ETRAX_IDE_G27_RESET
|
|||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config IDE_H8300
|
config IDE_H8300
|
||||||
bool "H8300 IDE support"
|
tristate "H8300 IDE support"
|
||||||
depends on H8300
|
depends on H8300
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Enables the H8300 IDE driver.
|
Enables the H8300 IDE driver.
|
||||||
|
|
||||||
config BLK_DEV_GAYLE
|
config BLK_DEV_GAYLE
|
||||||
bool "Amiga Gayle IDE interface support"
|
tristate "Amiga Gayle IDE interface support"
|
||||||
depends on AMIGA
|
depends on AMIGA
|
||||||
help
|
help
|
||||||
This is the IDE driver for the Amiga Gayle IDE interface. It supports
|
This is the IDE driver for the Amiga Gayle IDE interface. It supports
|
||||||
@@ -946,7 +948,7 @@ config BLK_DEV_IDEDOUBLER
|
|||||||
runtime using the "ide=doubler" kernel boot parameter.
|
runtime using the "ide=doubler" kernel boot parameter.
|
||||||
|
|
||||||
config BLK_DEV_BUDDHA
|
config BLK_DEV_BUDDHA
|
||||||
bool "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
|
tristate "Buddha/Catweasel/X-Surf IDE interface support (EXPERIMENTAL)"
|
||||||
depends on ZORRO && EXPERIMENTAL
|
depends on ZORRO && EXPERIMENTAL
|
||||||
help
|
help
|
||||||
This is the IDE driver for the IDE interfaces on the Buddha,
|
This is the IDE driver for the IDE interfaces on the Buddha,
|
||||||
@@ -958,7 +960,7 @@ config BLK_DEV_BUDDHA
|
|||||||
to one of its IDE interfaces.
|
to one of its IDE interfaces.
|
||||||
|
|
||||||
config BLK_DEV_FALCON_IDE
|
config BLK_DEV_FALCON_IDE
|
||||||
bool "Falcon IDE interface support"
|
tristate "Falcon IDE interface support"
|
||||||
depends on ATARI
|
depends on ATARI
|
||||||
help
|
help
|
||||||
This is the IDE driver for the builtin IDE interface on the Atari
|
This is the IDE driver for the builtin IDE interface on the Atari
|
||||||
@@ -967,7 +969,7 @@ config BLK_DEV_FALCON_IDE
|
|||||||
interface.
|
interface.
|
||||||
|
|
||||||
config BLK_DEV_MAC_IDE
|
config BLK_DEV_MAC_IDE
|
||||||
bool "Macintosh Quadra/Powerbook IDE interface support"
|
tristate "Macintosh Quadra/Powerbook IDE interface support"
|
||||||
depends on MAC
|
depends on MAC
|
||||||
help
|
help
|
||||||
This is the IDE driver for the builtin IDE interface on some m68k
|
This is the IDE driver for the builtin IDE interface on some m68k
|
||||||
@@ -980,7 +982,7 @@ config BLK_DEV_MAC_IDE
|
|||||||
builtin IDE interface.
|
builtin IDE interface.
|
||||||
|
|
||||||
config BLK_DEV_Q40IDE
|
config BLK_DEV_Q40IDE
|
||||||
bool "Q40/Q60 IDE interface support"
|
tristate "Q40/Q60 IDE interface support"
|
||||||
depends on Q40
|
depends on Q40
|
||||||
help
|
help
|
||||||
Enable the on-board IDE controller in the Q40/Q60. This should
|
Enable the on-board IDE controller in the Q40/Q60. This should
|
||||||
@@ -988,7 +990,7 @@ config BLK_DEV_Q40IDE
|
|||||||
drive subsystem through an expansion card.
|
drive subsystem through an expansion card.
|
||||||
|
|
||||||
config BLK_DEV_MPC8xx_IDE
|
config BLK_DEV_MPC8xx_IDE
|
||||||
bool "MPC8xx IDE support"
|
tristate "MPC8xx IDE support"
|
||||||
depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE
|
depends on 8xx && (LWMON || IVMS8 || IVML24 || TQM8xxL) && IDE=y && BLK_DEV_IDE=y && !PPC_MERGE
|
||||||
help
|
help
|
||||||
This option provides support for IDE on Motorola MPC8xx Systems.
|
This option provides support for IDE on Motorola MPC8xx Systems.
|
||||||
|
@@ -7,41 +7,37 @@
|
|||||||
# Note : at this point, these files are compiled on all systems.
|
# Note : at this point, these files are compiled on all systems.
|
||||||
# In the future, some of these should be built conditionally.
|
# In the future, some of these should be built conditionally.
|
||||||
#
|
#
|
||||||
# First come modules that register themselves with the core
|
# link order is important here
|
||||||
|
|
||||||
EXTRA_CFLAGS += -Idrivers/ide
|
EXTRA_CFLAGS += -Idrivers/ide
|
||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_IDE) += pci/
|
|
||||||
|
|
||||||
ide-core-y += ide.o ide-io.o ide-iops.o ide-lib.o ide-probe.o ide-taskfile.o
|
ide-core-y += ide.o ide-io.o ide-iops.o ide-lib.o ide-probe.o ide-taskfile.o
|
||||||
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_CMD640) += pci/cmd640.o
|
# core IDE code
|
||||||
|
|
||||||
# Core IDE code - must come before legacy
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
|
ide-core-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
|
||||||
ide-core-$(CONFIG_BLK_DEV_IDEDMA) += ide-dma.o
|
ide-core-$(CONFIG_BLK_DEV_IDEDMA) += ide-dma.o
|
||||||
ide-core-$(CONFIG_IDE_PROC_FS) += ide-proc.o
|
ide-core-$(CONFIG_IDE_PROC_FS) += ide-proc.o
|
||||||
ide-core-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_IDEACPI) += ide-acpi.o
|
ide-core-$(CONFIG_BLK_DEV_IDEACPI) += ide-acpi.o
|
||||||
|
|
||||||
# built-in only drivers from arm/
|
|
||||||
ide-core-$(CONFIG_IDE_ARM) += arm/ide_arm.o
|
|
||||||
|
|
||||||
# built-in only drivers from legacy/
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_BUDDHA) += legacy/buddha.o
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_FALCON_IDE) += legacy/falconide.o
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_GAYLE) += legacy/gayle.o
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_MAC_IDE) += legacy/macide.o
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_Q40IDE) += legacy/q40ide.o
|
|
||||||
|
|
||||||
# built-in only drivers from ppc/
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_MPC8xx_IDE) += ppc/mpc8xx.o
|
|
||||||
ide-core-$(CONFIG_BLK_DEV_IDE_PMAC) += ppc/pmac.o
|
|
||||||
|
|
||||||
# built-in only drivers from h8300/
|
|
||||||
ide-core-$(CONFIG_IDE_H8300) += h8300/ide-h8300.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o
|
obj-$(CONFIG_BLK_DEV_IDE) += ide-core.o
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_IDE_ARM), y)
|
||||||
|
ide-arm-core-y += arm/ide_arm.o
|
||||||
|
obj-y += ide-arm-core.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
obj-$(CONFIG_BLK_DEV_IDE) += legacy/ pci/
|
||||||
|
|
||||||
|
obj-$(CONFIG_IDEPCI_PCIBUS_ORDER) += ide-scan-pci.o
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BLK_DEV_CMD640), y)
|
||||||
|
cmd640-core-y += pci/cmd640.o
|
||||||
|
obj-y += cmd640-core.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
obj-$(CONFIG_BLK_DEV_IDE) += cris/ ppc/
|
||||||
|
obj-$(CONFIG_BLK_DEV_IDEPNP) += ide-pnp.o
|
||||||
|
obj-$(CONFIG_IDE_H8300) += h8300/
|
||||||
obj-$(CONFIG_IDE_GENERIC) += ide-generic.o
|
obj-$(CONFIG_IDE_GENERIC) += ide-generic.o
|
||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o
|
obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o
|
||||||
@@ -49,6 +45,20 @@ obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd.o
|
|||||||
obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o
|
obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o
|
||||||
obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o
|
obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o
|
||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_IDE) += legacy/ arm/ mips/
|
ifeq ($(CONFIG_BLK_DEV_IDECS), y)
|
||||||
obj-$(CONFIG_BLK_DEV_HD) += legacy/
|
ide-cs-core-y += legacy/ide-cs.o
|
||||||
obj-$(CONFIG_ETRAX_IDE) += cris/
|
obj-y += ide-cs-core.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BLK_DEV_PLATFORM), y)
|
||||||
|
ide-platform-core-y += legacy/ide_platform.o
|
||||||
|
obj-y += ide-platform-core.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
obj-$(CONFIG_BLK_DEV_IDE) += arm/ mips/
|
||||||
|
|
||||||
|
# old hd driver must be last
|
||||||
|
ifeq ($(CONFIG_BLK_DEV_HD), y)
|
||||||
|
hd-core-y += legacy/hd.o
|
||||||
|
obj-y += hd-core.o
|
||||||
|
endif
|
||||||
|
@@ -3,4 +3,8 @@ obj-$(CONFIG_BLK_DEV_IDE_ICSIDE) += icside.o
|
|||||||
obj-$(CONFIG_BLK_DEV_IDE_RAPIDE) += rapide.o
|
obj-$(CONFIG_BLK_DEV_IDE_RAPIDE) += rapide.o
|
||||||
obj-$(CONFIG_BLK_DEV_IDE_BAST) += bast-ide.o
|
obj-$(CONFIG_BLK_DEV_IDE_BAST) += bast-ide.o
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_IDE_ARM), m)
|
||||||
|
obj-m += ide_arm.o
|
||||||
|
endif
|
||||||
|
|
||||||
EXTRA_CFLAGS := -Idrivers/ide
|
EXTRA_CFLAGS := -Idrivers/ide
|
||||||
|
@@ -24,7 +24,7 @@
|
|||||||
# define IDE_ARM_IRQ IRQ_HARDDISK
|
# define IDE_ARM_IRQ IRQ_HARDDISK
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void __init ide_arm_init(void)
|
static int __init ide_arm_init(void)
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif;
|
ide_hwif_t *hwif;
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
@@ -41,4 +41,8 @@ void __init ide_arm_init(void)
|
|||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(ide_arm_init);
|
||||||
|
@@ -1,3 +1,3 @@
|
|||||||
EXTRA_CFLAGS += -Idrivers/ide
|
EXTRA_CFLAGS += -Idrivers/ide
|
||||||
|
|
||||||
obj-y += ide-cris.o
|
obj-$(CONFIG_IDE_ETRAX) += ide-cris.o
|
||||||
|
@@ -754,8 +754,7 @@ static void cris_set_dma_mode(ide_drive_t *drive, const u8 speed)
|
|||||||
cris_ide_set_speed(TYPE_DMA, 0, strobe, hold);
|
cris_ide_set_speed(TYPE_DMA, 0, strobe, hold);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init
|
static int __init init_e100_ide(void)
|
||||||
init_e100_ide (void)
|
|
||||||
{
|
{
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
int ide_offsets[IDE_NR_PORTS], h, i;
|
int ide_offsets[IDE_NR_PORTS], h, i;
|
||||||
@@ -823,6 +822,8 @@ init_e100_ide (void)
|
|||||||
cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0);
|
cris_ide_set_speed(TYPE_UDMA, ATA_UDMA2_CYC, ATA_UDMA2_DVS, 0);
|
||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16)));
|
static cris_dma_descr_type mydescr __attribute__ ((__aligned__(16)));
|
||||||
@@ -1056,3 +1057,5 @@ static void cris_dma_start(ide_drive_t *drive)
|
|||||||
LED_DISK_READ(1);
|
LED_DISK_READ(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(init_e100_ide);
|
||||||
|
2
drivers/ide/h8300/Makefile
Normal file
2
drivers/ide/h8300/Makefile
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
obj-$(CONFIG_IDE_H8300) += ide-h8300.o
|
@@ -84,7 +84,7 @@ static inline void hwif_setup(ide_hwif_t *hwif)
|
|||||||
hwif->INSL = NULL;
|
hwif->INSL = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init h8300_ide_init(void)
|
static int __init h8300_ide_init(void)
|
||||||
{
|
{
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
ide_hwif_t *hwif;
|
ide_hwif_t *hwif;
|
||||||
@@ -104,7 +104,7 @@ void __init h8300_ide_init(void)
|
|||||||
hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
|
hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
|
||||||
if (hwif == NULL) {
|
if (hwif == NULL) {
|
||||||
printk(KERN_ERR "ide-h8300: IDE I/F register failed\n");
|
printk(KERN_ERR "ide-h8300: IDE I/F register failed\n");
|
||||||
return;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
index = hwif->index;
|
index = hwif->index;
|
||||||
@@ -117,8 +117,12 @@ void __init h8300_ide_init(void)
|
|||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
|
|
||||||
return;
|
return 0;
|
||||||
|
|
||||||
out_busy:
|
out_busy:
|
||||||
printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n");
|
printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n");
|
||||||
|
|
||||||
|
return -EBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(h8300_ide_init);
|
||||||
|
@@ -75,12 +75,15 @@ static struct pnp_driver idepnp_driver = {
|
|||||||
.remove = idepnp_remove,
|
.remove = idepnp_remove,
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init pnpide_init(void)
|
static int __init pnpide_init(void)
|
||||||
{
|
{
|
||||||
pnp_register_driver(&idepnp_driver);
|
return pnp_register_driver(&idepnp_driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __exit pnpide_exit(void)
|
static void __exit pnpide_exit(void)
|
||||||
{
|
{
|
||||||
pnp_unregister_driver(&idepnp_driver);
|
pnp_unregister_driver(&idepnp_driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(pnpide_init);
|
||||||
|
module_exit(pnpide_exit);
|
||||||
|
11
drivers/ide/ide-scan-pci.c
Normal file
11
drivers/ide/ide-scan-pci.c
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/ide.h>
|
||||||
|
|
||||||
|
static int __init ide_scan_pci(void)
|
||||||
|
{
|
||||||
|
return ide_scan_pcibus();
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(ide_scan_pci);
|
@@ -95,7 +95,7 @@ DEFINE_MUTEX(ide_cfg_mtx);
|
|||||||
__cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
|
__cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
|
||||||
|
|
||||||
#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
|
#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
|
||||||
static int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */
|
int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int noautodma = 0;
|
int noautodma = 0;
|
||||||
@@ -178,8 +178,6 @@ static void init_hwif_default(ide_hwif_t *hwif, unsigned int index)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void ide_arm_init(void);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* init_ide_data() sets reasonable default values into all fields
|
* init_ide_data() sets reasonable default values into all fields
|
||||||
* of all instances of the hwifs and drives, but only on the first call.
|
* 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
|
|||||||
return 0; /* zero = nothing matched */
|
return 0; /* zero = nothing matched */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_BLK_DEV_ALI14XX
|
|
||||||
extern int probe_ali14xx;
|
extern int probe_ali14xx;
|
||||||
extern int ali14xx_init(void);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_UMC8672
|
|
||||||
extern int probe_umc8672;
|
extern int probe_umc8672;
|
||||||
extern int umc8672_init(void);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_DTC2278
|
|
||||||
extern int probe_dtc2278;
|
extern int probe_dtc2278;
|
||||||
extern int dtc2278_init(void);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_HT6560B
|
|
||||||
extern int probe_ht6560b;
|
extern int probe_ht6560b;
|
||||||
extern int ht6560b_init(void);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_QD65XX
|
|
||||||
extern int probe_qd65xx;
|
extern int probe_qd65xx;
|
||||||
extern int qd65xx_init(void);
|
extern int cmd640_vlb;
|
||||||
#endif
|
|
||||||
|
|
||||||
static int __initdata is_chipset_set[MAX_HWIFS];
|
static int __initdata is_chipset_set[MAX_HWIFS];
|
||||||
|
|
||||||
@@ -1458,11 +1442,8 @@ static int __init ide_setup(char *s)
|
|||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_BLK_DEV_CMD640
|
#ifdef CONFIG_BLK_DEV_CMD640
|
||||||
case -14: /* "cmd640_vlb" */
|
case -14: /* "cmd640_vlb" */
|
||||||
{
|
|
||||||
extern int cmd640_vlb; /* flag for cmd640.c */
|
|
||||||
cmd640_vlb = 1;
|
cmd640_vlb = 1;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_BLK_DEV_HT6560B
|
#ifdef CONFIG_BLK_DEV_HT6560B
|
||||||
case -13: /* "ht6560b" */
|
case -13: /* "ht6560b" */
|
||||||
@@ -1552,83 +1533,6 @@ done:
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void __init pnpide_init(void);
|
|
||||||
extern void __exit pnpide_exit(void);
|
|
||||||
extern void __init h8300_ide_init(void);
|
|
||||||
extern void __init mpc8xx_ide_probe(void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* probe_for_hwifs() finds/initializes "known" IDE interfaces
|
|
||||||
*/
|
|
||||||
static void __init probe_for_hwifs (void)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
|
|
||||||
ide_scan_pcibus(ide_scan_direction);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_ETRAX_IDE
|
|
||||||
{
|
|
||||||
extern void init_e100_ide(void);
|
|
||||||
init_e100_ide();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_ETRAX_IDE */
|
|
||||||
#ifdef CONFIG_BLK_DEV_CMD640
|
|
||||||
{
|
|
||||||
extern void ide_probe_for_cmd640x(void);
|
|
||||||
ide_probe_for_cmd640x();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BLK_DEV_CMD640 */
|
|
||||||
#ifdef CONFIG_BLK_DEV_IDE_PMAC
|
|
||||||
{
|
|
||||||
extern int pmac_ide_probe(void);
|
|
||||||
(void)pmac_ide_probe();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BLK_DEV_IDE_PMAC */
|
|
||||||
#ifdef CONFIG_BLK_DEV_GAYLE
|
|
||||||
{
|
|
||||||
extern void gayle_init(void);
|
|
||||||
gayle_init();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BLK_DEV_GAYLE */
|
|
||||||
#ifdef CONFIG_BLK_DEV_FALCON_IDE
|
|
||||||
{
|
|
||||||
extern void falconide_init(void);
|
|
||||||
falconide_init();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BLK_DEV_FALCON_IDE */
|
|
||||||
#ifdef CONFIG_BLK_DEV_MAC_IDE
|
|
||||||
{
|
|
||||||
extern void macide_init(void);
|
|
||||||
macide_init();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BLK_DEV_MAC_IDE */
|
|
||||||
#ifdef CONFIG_BLK_DEV_Q40IDE
|
|
||||||
{
|
|
||||||
extern void q40ide_init(void);
|
|
||||||
q40ide_init();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BLK_DEV_Q40IDE */
|
|
||||||
#ifdef CONFIG_BLK_DEV_BUDDHA
|
|
||||||
{
|
|
||||||
extern void buddha_init(void);
|
|
||||||
buddha_init();
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_BLK_DEV_BUDDHA */
|
|
||||||
#ifdef CONFIG_BLK_DEV_IDEPNP
|
|
||||||
pnpide_init();
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_H8300
|
|
||||||
h8300_ide_init();
|
|
||||||
#endif
|
|
||||||
#ifdef BLK_DEV_MPC8xx_IDE
|
|
||||||
mpc8xx_ide_probe();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Probe module
|
|
||||||
*/
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(ide_lock);
|
EXPORT_SYMBOL(ide_lock);
|
||||||
|
|
||||||
static int ide_bus_match(struct device *dev, struct device_driver *drv)
|
static int ide_bus_match(struct device *dev, struct device_driver *drv)
|
||||||
@@ -1775,33 +1679,6 @@ static int __init ide_init(void)
|
|||||||
|
|
||||||
proc_ide_create();
|
proc_ide_create();
|
||||||
|
|
||||||
#ifdef CONFIG_IDE_ARM
|
|
||||||
ide_arm_init();
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_ALI14XX
|
|
||||||
if (probe_ali14xx)
|
|
||||||
(void)ali14xx_init();
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_UMC8672
|
|
||||||
if (probe_umc8672)
|
|
||||||
(void)umc8672_init();
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_DTC2278
|
|
||||||
if (probe_dtc2278)
|
|
||||||
(void)dtc2278_init();
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_HT6560B
|
|
||||||
if (probe_ht6560b)
|
|
||||||
(void)ht6560b_init();
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_BLK_DEV_QD65XX
|
|
||||||
if (probe_qd65xx)
|
|
||||||
(void)qd65xx_init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Probe for special PCI and other "known" interface chipsets. */
|
|
||||||
probe_for_hwifs();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1837,10 +1714,6 @@ void __exit cleanup_module (void)
|
|||||||
for (index = 0; index < MAX_HWIFS; ++index)
|
for (index = 0; index < MAX_HWIFS; ++index)
|
||||||
ide_unregister(index);
|
ide_unregister(index);
|
||||||
|
|
||||||
#ifdef CONFIG_BLK_DEV_IDEPNP
|
|
||||||
pnpide_exit();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
proc_ide_destroy();
|
proc_ide_destroy();
|
||||||
|
|
||||||
bus_unregister(&ide_bus_type);
|
bus_unregister(&ide_bus_type);
|
||||||
|
@@ -1,15 +1,24 @@
|
|||||||
|
|
||||||
|
# link order is important here
|
||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_ALI14XX) += ali14xx.o
|
obj-$(CONFIG_BLK_DEV_ALI14XX) += ali14xx.o
|
||||||
|
obj-$(CONFIG_BLK_DEV_UMC8672) += umc8672.o
|
||||||
obj-$(CONFIG_BLK_DEV_DTC2278) += dtc2278.o
|
obj-$(CONFIG_BLK_DEV_DTC2278) += dtc2278.o
|
||||||
obj-$(CONFIG_BLK_DEV_HT6560B) += ht6560b.o
|
obj-$(CONFIG_BLK_DEV_HT6560B) += ht6560b.o
|
||||||
obj-$(CONFIG_BLK_DEV_QD65XX) += qd65xx.o
|
obj-$(CONFIG_BLK_DEV_QD65XX) += qd65xx.o
|
||||||
obj-$(CONFIG_BLK_DEV_UMC8672) += umc8672.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_IDECS) += ide-cs.o
|
obj-$(CONFIG_BLK_DEV_GAYLE) += gayle.o
|
||||||
|
obj-$(CONFIG_BLK_DEV_FALCON_IDE) += falconide.o
|
||||||
|
obj-$(CONFIG_BLK_DEV_MAC_IDE) += macide.o
|
||||||
|
obj-$(CONFIG_BLK_DEV_Q40IDE) += q40ide.o
|
||||||
|
obj-$(CONFIG_BLK_DEV_BUDDHA) += buddha.o
|
||||||
|
|
||||||
obj-$(CONFIG_BLK_DEV_PLATFORM) += ide_platform.o
|
ifeq ($(CONFIG_BLK_DEV_IDECS), m)
|
||||||
|
obj-m += ide-cs.o
|
||||||
|
endif
|
||||||
|
|
||||||
# Last of all
|
ifeq ($(CONFIG_BLK_DEV_PLATFORM), m)
|
||||||
obj-$(CONFIG_BLK_DEV_HD) += hd.o
|
obj-m += ide_platform.o
|
||||||
|
endif
|
||||||
|
|
||||||
EXTRA_CFLAGS := -Idrivers/ide
|
EXTRA_CFLAGS := -Idrivers/ide
|
||||||
|
@@ -231,8 +231,7 @@ int probe_ali14xx = 0;
|
|||||||
module_param_named(probe, probe_ali14xx, bool, 0);
|
module_param_named(probe, probe_ali14xx, bool, 0);
|
||||||
MODULE_PARM_DESC(probe, "probe for ALI M14xx chipsets");
|
MODULE_PARM_DESC(probe, "probe for ALI M14xx chipsets");
|
||||||
|
|
||||||
/* Can be called directly from ide.c. */
|
static int __init ali14xx_init(void)
|
||||||
int __init ali14xx_init(void)
|
|
||||||
{
|
{
|
||||||
if (probe_ali14xx == 0)
|
if (probe_ali14xx == 0)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -248,9 +247,7 @@ out:
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MODULE
|
|
||||||
module_init(ali14xx_init);
|
module_init(ali14xx_init);
|
||||||
#endif
|
|
||||||
|
|
||||||
MODULE_AUTHOR("see local file");
|
MODULE_AUTHOR("see local file");
|
||||||
MODULE_DESCRIPTION("support of ALI 14XX IDE chipsets");
|
MODULE_DESCRIPTION("support of ALI 14XX IDE chipsets");
|
||||||
|
@@ -143,7 +143,7 @@ static int xsurf_ack_intr(ide_hwif_t *hwif)
|
|||||||
* Probe for a Buddha or Catweasel IDE interface
|
* Probe for a Buddha or Catweasel IDE interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void __init buddha_init(void)
|
static int __init buddha_init(void)
|
||||||
{
|
{
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
ide_hwif_t *hwif;
|
ide_hwif_t *hwif;
|
||||||
@@ -243,4 +243,8 @@ fail_base2:
|
|||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(buddha_init);
|
||||||
|
@@ -150,8 +150,7 @@ int probe_dtc2278 = 0;
|
|||||||
module_param_named(probe, probe_dtc2278, bool, 0);
|
module_param_named(probe, probe_dtc2278, bool, 0);
|
||||||
MODULE_PARM_DESC(probe, "probe for DTC2278xx chipsets");
|
MODULE_PARM_DESC(probe, "probe for DTC2278xx chipsets");
|
||||||
|
|
||||||
/* Can be called directly from ide.c. */
|
static int __init dtc2278_init(void)
|
||||||
int __init dtc2278_init(void)
|
|
||||||
{
|
{
|
||||||
if (probe_dtc2278 == 0)
|
if (probe_dtc2278 == 0)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
@@ -163,9 +162,7 @@ int __init dtc2278_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MODULE
|
|
||||||
module_init(dtc2278_init);
|
module_init(dtc2278_init);
|
||||||
#endif
|
|
||||||
|
|
||||||
MODULE_AUTHOR("See Local File");
|
MODULE_AUTHOR("See Local File");
|
||||||
MODULE_DESCRIPTION("support of DTC-2278 VLB IDE chipsets");
|
MODULE_DESCRIPTION("support of DTC-2278 VLB IDE chipsets");
|
||||||
|
@@ -62,7 +62,7 @@ EXPORT_SYMBOL(falconide_intr_lock);
|
|||||||
* Probe for a Falcon IDE interface
|
* Probe for a Falcon IDE interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void __init falconide_init(void)
|
static int __init falconide_init(void)
|
||||||
{
|
{
|
||||||
if (MACH_IS_ATARI && ATARIHW_PRESENT(IDE)) {
|
if (MACH_IS_ATARI && ATARIHW_PRESENT(IDE)) {
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
@@ -84,4 +84,9 @@ void __init falconide_init(void)
|
|||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(falconide_init);
|
||||||
|
@@ -110,13 +110,13 @@ static int gayle_ack_intr_a1200(ide_hwif_t *hwif)
|
|||||||
* Probe for a Gayle IDE interface (and optionally for an IDE doubler)
|
* Probe for a Gayle IDE interface (and optionally for an IDE doubler)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void __init gayle_init(void)
|
static int __init gayle_init(void)
|
||||||
{
|
{
|
||||||
int a4000, i;
|
int a4000, i;
|
||||||
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
||||||
|
|
||||||
if (!MACH_IS_AMIGA)
|
if (!MACH_IS_AMIGA)
|
||||||
return;
|
return -ENODEV;
|
||||||
|
|
||||||
if ((a4000 = AMIGAHW_PRESENT(A4000_IDE)) || AMIGAHW_PRESENT(A1200_IDE))
|
if ((a4000 = AMIGAHW_PRESENT(A4000_IDE)) || AMIGAHW_PRESENT(A1200_IDE))
|
||||||
goto found;
|
goto found;
|
||||||
@@ -126,7 +126,7 @@ void __init gayle_init(void)
|
|||||||
NULL))
|
NULL))
|
||||||
goto found;
|
goto found;
|
||||||
#endif
|
#endif
|
||||||
return;
|
return -ENODEV;
|
||||||
|
|
||||||
found:
|
found:
|
||||||
for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) {
|
for (i = 0; i < GAYLE_NUM_PROBE_HWIFS; i++) {
|
||||||
@@ -191,4 +191,8 @@ found:
|
|||||||
}
|
}
|
||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(gayle_init);
|
||||||
|
@@ -307,8 +307,7 @@ int probe_ht6560b = 0;
|
|||||||
module_param_named(probe, probe_ht6560b, bool, 0);
|
module_param_named(probe, probe_ht6560b, bool, 0);
|
||||||
MODULE_PARM_DESC(probe, "probe for HT6560B chipset");
|
MODULE_PARM_DESC(probe, "probe for HT6560B chipset");
|
||||||
|
|
||||||
/* Can be called directly from ide.c. */
|
static int __init ht6560b_init(void)
|
||||||
int __init ht6560b_init(void)
|
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif, *mate;
|
ide_hwif_t *hwif, *mate;
|
||||||
static u8 idx[4] = { 0, 1, 0xff, 0xff };
|
static u8 idx[4] = { 0, 1, 0xff, 0xff };
|
||||||
@@ -369,9 +368,7 @@ release_region:
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MODULE
|
|
||||||
module_init(ht6560b_init);
|
module_init(ht6560b_init);
|
||||||
#endif
|
|
||||||
|
|
||||||
MODULE_AUTHOR("See Local File");
|
MODULE_AUTHOR("See Local File");
|
||||||
MODULE_DESCRIPTION("HT-6560B EIDE-controller support");
|
MODULE_DESCRIPTION("HT-6560B EIDE-controller support");
|
||||||
|
@@ -81,7 +81,7 @@ int macide_ack_intr(ide_hwif_t* hwif)
|
|||||||
* Probe for a Macintosh IDE interface
|
* Probe for a Macintosh IDE interface
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void __init macide_init(void)
|
static int __init macide_init(void)
|
||||||
{
|
{
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
ide_hwif_t *hwif;
|
ide_hwif_t *hwif;
|
||||||
@@ -106,7 +106,7 @@ void __init macide_init(void)
|
|||||||
IRQ_BABOON_1);
|
IRQ_BABOON_1);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
|
hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]);
|
||||||
@@ -139,4 +139,8 @@ void __init macide_init(void)
|
|||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(macide_init);
|
||||||
|
@@ -111,7 +111,7 @@ static const char *q40_ide_names[Q40IDE_NUM_HWIFS]={
|
|||||||
* Probe for Q40 IDE interfaces
|
* Probe for Q40 IDE interfaces
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void __init q40ide_init(void)
|
static int __init q40ide_init(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
ide_hwif_t *hwif;
|
ide_hwif_t *hwif;
|
||||||
@@ -119,7 +119,7 @@ void __init q40ide_init(void)
|
|||||||
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
||||||
|
|
||||||
if (!MACH_IS_Q40)
|
if (!MACH_IS_Q40)
|
||||||
return ;
|
return -ENODEV;
|
||||||
|
|
||||||
for (i = 0; i < Q40IDE_NUM_HWIFS; i++) {
|
for (i = 0; i < Q40IDE_NUM_HWIFS; i++) {
|
||||||
hw_regs_t hw;
|
hw_regs_t hw;
|
||||||
@@ -153,5 +153,8 @@ void __init q40ide_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(q40ide_init);
|
||||||
|
@@ -478,8 +478,7 @@ int probe_qd65xx = 0;
|
|||||||
module_param_named(probe, probe_qd65xx, bool, 0);
|
module_param_named(probe, probe_qd65xx, bool, 0);
|
||||||
MODULE_PARM_DESC(probe, "probe for QD65xx chipsets");
|
MODULE_PARM_DESC(probe, "probe for QD65xx chipsets");
|
||||||
|
|
||||||
/* Can be called directly from ide.c. */
|
static int __init qd65xx_init(void)
|
||||||
int __init qd65xx_init(void)
|
|
||||||
{
|
{
|
||||||
if (probe_qd65xx == 0)
|
if (probe_qd65xx == 0)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
@@ -492,9 +491,7 @@ int __init qd65xx_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MODULE
|
|
||||||
module_init(qd65xx_init);
|
module_init(qd65xx_init);
|
||||||
#endif
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Samuel Thibault");
|
MODULE_AUTHOR("Samuel Thibault");
|
||||||
MODULE_DESCRIPTION("support of qd65xx vlb ide chipset");
|
MODULE_DESCRIPTION("support of qd65xx vlb ide chipset");
|
||||||
|
@@ -169,8 +169,7 @@ int probe_umc8672 = 0;
|
|||||||
module_param_named(probe, probe_umc8672, bool, 0);
|
module_param_named(probe, probe_umc8672, bool, 0);
|
||||||
MODULE_PARM_DESC(probe, "probe for UMC8672 chipset");
|
MODULE_PARM_DESC(probe, "probe for UMC8672 chipset");
|
||||||
|
|
||||||
/* Can be called directly from ide.c. */
|
static int __init umc8672_init(void)
|
||||||
int __init umc8672_init(void)
|
|
||||||
{
|
{
|
||||||
if (probe_umc8672 == 0)
|
if (probe_umc8672 == 0)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -181,9 +180,7 @@ out:
|
|||||||
return -ENODEV;;
|
return -ENODEV;;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MODULE
|
|
||||||
module_init(umc8672_init);
|
module_init(umc8672_init);
|
||||||
#endif
|
|
||||||
|
|
||||||
MODULE_AUTHOR("Wolfram Podien");
|
MODULE_AUTHOR("Wolfram Podien");
|
||||||
MODULE_DESCRIPTION("Support for UMC 8672 IDE chipset");
|
MODULE_DESCRIPTION("Support for UMC 8672 IDE chipset");
|
||||||
|
@@ -36,4 +36,8 @@ obj-$(CONFIG_BLK_DEV_VIA82CXXX) += via82cxxx.o
|
|||||||
# Must appear at the end of the block
|
# Must appear at the end of the block
|
||||||
obj-$(CONFIG_BLK_DEV_GENERIC) += generic.o
|
obj-$(CONFIG_BLK_DEV_GENERIC) += generic.o
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_BLK_DEV_CMD640), m)
|
||||||
|
obj-m += cmd640.o
|
||||||
|
endif
|
||||||
|
|
||||||
EXTRA_CFLAGS := -Idrivers/ide
|
EXTRA_CFLAGS := -Idrivers/ide
|
||||||
|
@@ -706,9 +706,9 @@ static int pci_conf2(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Probe for a cmd640 chipset, and initialize it if found. Called from ide.c
|
* Probe for a cmd640 chipset, and initialize it if found.
|
||||||
*/
|
*/
|
||||||
int __init ide_probe_for_cmd640x (void)
|
static int __init cmd640x_init(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_BLK_DEV_CMD640_ENHANCED
|
#ifdef CONFIG_BLK_DEV_CMD640_ENHANCED
|
||||||
int second_port_toggled = 0;
|
int second_port_toggled = 0;
|
||||||
@@ -883,3 +883,7 @@ int __init ide_probe_for_cmd640x (void)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_param_named(probe_vlb, cmd640_vlb, bool, 0);
|
||||||
|
MODULE_PARM_DESC(probe_vlb, "probe for VLB version of CMD640 chipset");
|
||||||
|
|
||||||
|
module_init(cmd640x_init);
|
||||||
|
3
drivers/ide/ppc/Makefile
Normal file
3
drivers/ide/ppc/Makefile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
obj-$(CONFIG_BLK_DEV_IDE_PMAC) += pmac.o
|
||||||
|
obj-$(CONFIG_BLK_DEV_MPC8xx_IDE) += mpc8xx.o
|
@@ -839,7 +839,7 @@ void m8xx_ide_init(void)
|
|||||||
ppc_ide_md.ide_init_hwif = m8xx_ide_init_hwif_ports;
|
ppc_ide_md.ide_init_hwif = m8xx_ide_init_hwif_ports;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init mpc8xx_ide_probe(void)
|
static int __init mpc8xx_ide_probe(void)
|
||||||
{
|
{
|
||||||
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
||||||
|
|
||||||
@@ -851,4 +851,8 @@ void __init mpc8xx_ide_probe(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ide_device_add(idx);
|
ide_device_add(idx);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init(mpc8xx_ide_probe);
|
||||||
|
@@ -1786,3 +1786,5 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif, ide_hwif_t *hwif)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
|
#endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
|
||||||
|
|
||||||
|
module_init(pmac_ide_probe);
|
||||||
|
@@ -766,21 +766,20 @@ static int __init ide_scan_pcidev(struct pci_dev *dev)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* ide_scan_pcibus - perform the initial IDE driver scan
|
* ide_scan_pcibus - perform the initial IDE driver scan
|
||||||
* @scan_direction: set for reverse order scanning
|
|
||||||
*
|
*
|
||||||
* Perform the initial bus rather than driver ordered scan of the
|
* Perform the initial bus rather than driver ordered scan of the
|
||||||
* PCI drivers. After this all IDE pci handling becomes standard
|
* PCI drivers. After this all IDE pci handling becomes standard
|
||||||
* module ordering not traditionally ordered.
|
* module ordering not traditionally ordered.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void __init ide_scan_pcibus (int scan_direction)
|
int __init ide_scan_pcibus(void)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev = NULL;
|
struct pci_dev *dev = NULL;
|
||||||
struct pci_driver *d;
|
struct pci_driver *d;
|
||||||
struct list_head *l, *n;
|
struct list_head *l, *n;
|
||||||
|
|
||||||
pre_init = 0;
|
pre_init = 0;
|
||||||
if (!scan_direction)
|
if (!ide_scan_direction)
|
||||||
while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)))
|
while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)))
|
||||||
ide_scan_pcidev(dev);
|
ide_scan_pcidev(dev);
|
||||||
else
|
else
|
||||||
@@ -801,5 +800,7 @@ void __init ide_scan_pcibus (int scan_direction)
|
|||||||
printk(KERN_ERR "%s: failed to register %s driver\n",
|
printk(KERN_ERR "%s: failed to register %s driver\n",
|
||||||
__FUNCTION__, d->driver.mod_name);
|
__FUNCTION__, d->driver.mod_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1014,7 +1014,8 @@ extern void do_ide_request(struct request_queue *);
|
|||||||
void ide_init_disk(struct gendisk *, ide_drive_t *);
|
void ide_init_disk(struct gendisk *, ide_drive_t *);
|
||||||
|
|
||||||
#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
|
#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
|
||||||
extern void ide_scan_pcibus(int scan_direction) __init;
|
extern int ide_scan_direction;
|
||||||
|
int __init ide_scan_pcibus(void);
|
||||||
extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name);
|
extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name);
|
||||||
#define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME)
|
#define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME)
|
||||||
#else
|
#else
|
||||||
|
Reference in New Issue
Block a user