On Thu, Oct 10, 2002 at 03:18:36PM +0100, Alan Cox wrote:
> I'll go over it again, but I have no major problem with applying them
> and working from there to clean up the corners. Firstly however do one
> little thing - dont put extern blah() in the code, add them to the right
> header files.
Sure. Here is the updated patch. I've verified that it
compiles without complaint.
--
Adam J. Richter __ ______________ 575 Oroville Road
adam@yggdrasil.com \ / Milpitas, California 95035
+1 408 309-6081 | g g d r a s i l United States of America
"Free Software For The Rest Of Us."
--oyUTqETQ0mS9luUI
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ide.diffs"
diff -u -r linux-2.5.41/drivers/ide/Config.in linux/drivers/ide/Config.in
--- linux-2.5.41/drivers/ide/Config.in 2002-10-07 11:23:27.000000000 -0700
+++ linux/drivers/ide/Config.in 2002-10-10 06:25:31.000000000 -0700
@@ -27,13 +27,13 @@
comment 'IDE chipset support/bugfixes'
if [ "$CONFIG_BLK_DEV_IDE" != "n" ]; then
- dep_bool ' CMD640 chipset bugfix/support' CONFIG_BLK_DEV_CMD640 $CONFIG_X86
+ dep_tristate ' CMD640 chipset bugfix/support' CONFIG_BLK_DEV_CMD640 $CONFIG_X86 $CONFIG_BLK_DEV_IDE
dep_bool ' CMD640 enhanced support' CONFIG_BLK_DEV_CMD640_ENHANCED $CONFIG_BLK_DEV_CMD640
dep_bool ' ISA-PNP EIDE support' CONFIG_BLK_DEV_ISAPNP $CONFIG_ISAPNP
if [ "$CONFIG_PCI" = "y" ]; then
bool ' PCI IDE chipset support' CONFIG_BLK_DEV_IDEPCI
if [ "$CONFIG_BLK_DEV_IDEPCI" = "y" ]; then
- dep_bool ' Generic PCI IDE Chipset Support' CONFIG_BLK_DEV_GENERIC $CONFIG_BLK_DEV_IDEPCI
+ dep_tristate ' Generic PCI IDE Chipset Support' CONFIG_BLK_DEV_GENERIC $CONFIG_BLK_DEV_IDEPCI $CONFIG_BLK_DEV_IDE
bool ' Sharing PCI IDE interrupts support' CONFIG_IDEPCI_SHARE_IRQ
bool ' Generic PCI bus-master DMA support' CONFIG_BLK_DEV_IDEDMA_PCI
bool ' Boot off-board chipsets first support' CONFIG_BLK_DEV_OFFBOARD
diff -u -r linux-2.5.41/drivers/ide/Makefile linux/drivers/ide/Makefile
--- linux-2.5.41/drivers/ide/Makefile 2002-10-07 11:24:36.000000000 -0700
+++ linux/drivers/ide/Makefile 2002-10-08 05:34:20.000000000 -0700
@@ -14,19 +14,20 @@
# Core IDE code - must come before legacy
-obj-$(CONFIG_BLK_DEV_IDE) += ide-probe.o ide-geometry.o ide-iops.o ide-taskfile.o ide.o ide-lib.o
+ide-mod-objs := ide.o ide-iops.o ide-taskfile.o ide-probe.o ide-geometry.o ide-lib.o
+obj-$(CONFIG_BLK_DEV_IDE) += ide-mod.o
+obj-$(CONFIG_BLK_DEV_IDE) += ide-mod.o
obj-$(CONFIG_BLK_DEV_IDEDISK) += ide-disk.o
obj-$(CONFIG_BLK_DEV_IDECD) += ide-cd.o
obj-$(CONFIG_BLK_DEV_IDETAPE) += ide-tape.o
obj-$(CONFIG_BLK_DEV_IDEFLOPPY) += ide-floppy.o
-obj-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
-obj-$(CONFIG_BLK_DEV_IDEDMA_PCI) += ide-dma.o
-obj-$(CONFIG_BLK_DEV_ISAPNP) += ide-pnp.o
-
-ifeq ($(CONFIG_BLK_DEV_IDE),y)
-obj-$(CONFIG_PROC_FS) += ide-proc.o
-endif
+obj-ide-$(CONFIG_BLK_DEV_IDEPCI) += setup-pci.o
+obj-ide-$(CONFIG_BLK_DEV_IDEDMA_PCI) += ide-dma.o
+obj-ide-$(CONFIG_BLK_DEV_ISAPNP) += ide-pnp.o
+obj-ide-$(CONFIG_PROC_FS) += ide-proc.o
+ide-mod-objs += $(obj-ide-y)
+
obj-$(CONFIG_BLK_DEV_IDE) += legacy/ ppc/ arm/
diff -u -r linux-2.5.41/drivers/ide/ide-pnp.c linux/drivers/ide/ide-pnp.c
--- linux-2.5.41/drivers/ide/ide-pnp.c 2002-10-07 11:24:41.000000000 -0700
+++ linux/drivers/ide/ide-pnp.c 2002-10-07 18:45:37.000000000 -0700
@@ -19,6 +19,7 @@
#include <linux/ide.h>
#include <linux/init.h>
+#include <linux/module.h>
#include <linux/isapnp.h>
#define DEV_IO(dev, index) (dev->resource[index].start)
@@ -88,6 +89,18 @@
{ 0 }
};
+#ifdef MODULE
+static struct isapnp_card_id ide_isa_ids[] __initdata = {
+ {
+ card_vendor: ISAPNP_ANY_ID,
+ card_device: ISAPNP_ANY_ID,
+ devs: { ISAPNP_DEVICE_ID('P', 'N', 'P', 0x0600) },
+ },
+ { ISAPNP_CARD_END }
+};
+ISAPNP_CARD_TABLE(ide_isa_ids);
+#endif
+
#define NR_PNP_DEVICES 8
struct pnp_dev_inst {
struct pci_dev *dev;
diff -u -r linux-2.5.41/drivers/ide/ide-probe.c linux/drivers/ide/ide-probe.c
--- linux-2.5.41/drivers/ide/ide-probe.c 2002-10-07 11:24:39.000000000 -0700
+++ linux/drivers/ide/ide-probe.c 2002-10-08 05:34:20.000000000 -0700
@@ -1126,10 +1126,10 @@
return 0;
}
-#ifdef MODULE
-extern int (*ide_xlate_1024_hook)(kdev_t, int, int, const char *);
+int (*ide_xlate_1024_hook)(kdev_t, int, int, const char *);
+EXPORT_SYMBOL(ide_xlate_1024_hook);
-int init_module (void)
+int ide_probe_init (void)
{
unsigned int index;
@@ -1141,10 +1141,9 @@
return 0;
}
-void cleanup_module (void)
+void ide_probe_cleanup (void)
{
ide_probe = NULL;
ide_xlate_1024_hook = 0;
}
MODULE_LICENSE("GPL");
-#endif /* MODULE */
diff -u -r linux-2.5.41/drivers/ide/ide.c linux/drivers/ide/ide.c
--- linux-2.5.41/drivers/ide/ide.c 2002-10-07 11:24:00.000000000 -0700
+++ linux/drivers/ide/ide.c 2002-10-10 07:22:02.000000000 -0700
@@ -197,6 +197,9 @@
EXPORT_SYMBOL(noautodma);
+int cmd640_vlb; /* = 0, flag for cmd640.c */
+EXPORT_SYMBOL(cmd640_vlb);
+
/*
* ide_modules keeps track of the available IDE chipset/probe/driver modules.
*/
@@ -3006,7 +3009,6 @@
#ifdef CONFIG_BLK_DEV_CMD640
case -14: /* "cmd640_vlb" */
{
- extern int cmd640_vlb; /* flag for cmd640.c */
cmd640_vlb = 1;
goto done;
}
@@ -3123,12 +3125,6 @@
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_PDC4030
{
extern int ide_probe_for_pdc4030(void);
@@ -3514,6 +3510,27 @@
struct bus_type ide_bus_type = {
.name = "ide",
};
+EXPORT_SYMBOL(ide_bus_type);
+
+#ifdef MODULE
+static char *options = NULL;
+MODULE_PARM(options,"s");
+MODULE_LICENSE("GPL");
+
+static void __init parse_options (char *line)
+{
+ char *next = line;
+
+ if (line == NULL || !*line)
+ return;
+ while ((line = next) != NULL) {
+ if ((next = strchr(line,' ')) != NULL)
+ *next++ = 0;
+ if (!ide_setup(line))
+ printk ("Unknown option '%s'\n", line);
+ }
+}
+#endif /* MODULE */
/*
* This is gets invoked once during initialization, to set *everything* up
@@ -3521,6 +3538,9 @@
int __init ide_init (void)
{
static char banner_printed;
+#ifdef MODULE
+ parse_options(options);
+#endif
if (!banner_printed) {
printk(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n");
ide_devfs_handle = devfs_mk_dir(NULL, "ide", NULL);
@@ -3537,40 +3557,16 @@
initializing = 0;
register_reboot_notifier(&ide_notifier);
- return 0;
+ return ide_probe_init();
}
module_init(ide_init);
-#ifdef MODULE
-char *options = NULL;
-MODULE_PARM(options,"s");
-MODULE_LICENSE("GPL");
-
-static void __init parse_options (char *line)
-{
- char *next = line;
-
- if (line == NULL || !*line)
- return;
- while ((line = next) != NULL) {
- if ((next = strchr(line,' ')) != NULL)
- *next++ = 0;
- if (!ide_setup(line))
- printk ("Unknown option '%s'\n", line);
- }
-}
-
-int init_module (void)
-{
- parse_options(options);
- return ide_init();
-}
-
-void cleanup_module (void)
+static void __exit ide_cleanup (void)
{
int index;
+ ide_probe_cleanup();
unregister_reboot_notifier(&ide_notifier);
for (index = 0; index < MAX_HWIFS; ++index) {
ide_unregister(index);
@@ -3585,11 +3581,8 @@
#endif
devfs_unregister (ide_devfs_handle);
- bus_unregister(&ide_bus_type);
+ put_bus(&ide_bus_type);
}
-
-#else /* !MODULE */
+module_exit(ide_cleanup);
__setup("", ide_setup);
-
-#endif /* MODULE */
diff -u -r linux-2.5.41/drivers/ide/pci/cmd640.c linux/drivers/ide/pci/cmd640.c
--- linux-2.5.41/drivers/ide/pci/cmd640.c 2002-10-07 11:25:15.000000000 -0700
+++ linux/drivers/ide/pci/cmd640.c 2002-10-10 06:25:31.000000000 -0700
@@ -102,6 +102,7 @@
#define CMD640_PREFETCH_MASKS 1
#include <linux/config.h>
+#include <linux/module.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/delay.h>
@@ -120,7 +121,7 @@
/*
* This flag is set in ide.c by the parameter: ide0=cmd640_vlb
*/
-int cmd640_vlb = 0;
+extern int cmd640_vlb;
/*
* CMD640 specific registers definition.
@@ -723,7 +724,7 @@
/*
* Probe for a cmd640 chipset, and initialize it if found. Called from ide.c
*/
-int __init ide_probe_for_cmd640x (void)
+static int ide_probe_for_cmd640x (void)
{
#ifdef CONFIG_BLK_DEV_CMD640_ENHANCED
int second_port_toggled = 0;
@@ -883,4 +884,4 @@
#endif
return 1;
}
-
+module_init(ide_probe_for_cmd640x);
--- linux-2.5.41/include/linux/ide.h 2002-10-07 11:24:05.000000000 -0700
+++ linux/include/linux/ide.h 2002-10-10 07:22:02.000000000 -0700
@@ -1704,6 +1704,9 @@
extern char *ide_xfer_verbose(u8 xfer_rate);
extern void ide_toggle_bounce(ide_drive_t *drive, int on);
+/* ide.c */
+extern int ide_probe_init(void);
+extern void ide_probe_cleanup(void);
extern spinlock_t ide_lock;
#define local_irq_set(flags) do { local_save_flags((flags)); local_irq_enable(); } while (0)
--oyUTqETQ0mS9luUI--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/