All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: linux-ide@vger.kernel.org
Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Subject: [PATCH 8/8] ide: fix ide.c
Date: Wed, 14 Feb 2007 02:57:19 +0100	[thread overview]
Message-ID: <20070214015719.4619.87962.sendpatchset@localhost.localdomain> (raw)
In-Reply-To: <20070214015603.4619.41923.sendpatchset@localhost.localdomain>

[PATCH] ide: fix ide.c #ifdef madness

For some built-in host driver we need to take care of the order in which they
are probed.  Do this during link time and remove all ugly #ifdefs from ide.c.

[ We can probe m68k specific drivers before PCI drivers (no PCI on m68k except
  broken for ages HADES), ide-cris (cris arch specific), cmd640 (x86 specific)
  and pmac (powerpc specific). ]

While at it add missing __init tags to macide/q40ide drivers, fix non-ascii
character in q40ide and remove bogus comment from ide.c.

[ To test this patch I tested some strange combinations of host drivers
  (i.e. ali14xx vs setup-pci vs cmd640) and the probe order is preserved
  as it should be. ]

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

---
 drivers/ide/Makefile           |   52 +++++++++++-------
 drivers/ide/cris/ide-cris.c    |   13 +++-
 drivers/ide/h8300/Makefile     |    2 
 drivers/ide/h8300/ide-h8300.c  |   12 +++-
 drivers/ide/ide-pnp.c          |    6 +-
 drivers/ide/ide.c              |  116 +----------------------------------------
 drivers/ide/legacy/Makefile    |   17 ++++--
 drivers/ide/legacy/ali14xx.c   |    6 --
 drivers/ide/legacy/buddha.c    |   12 +++-
 drivers/ide/legacy/dtc2278.c   |    6 --
 drivers/ide/legacy/falconide.c |   12 +++-
 drivers/ide/legacy/gayle.c     |   12 +++-
 drivers/ide/legacy/ht6560b.c   |    5 -
 drivers/ide/legacy/macide.c    |   12 +++-
 drivers/ide/legacy/q40ide.c    |   13 +++-
 drivers/ide/legacy/qd65xx.c    |    6 --
 drivers/ide/legacy/umc8672.c   |    6 --
 drivers/ide/pci/cmd640.c       |   14 ++++
 drivers/ide/ppc/Makefile       |    2 
 drivers/ide/ppc/pmac.c         |   13 +++-
 drivers/ide/setup-pci.c        |   15 ++++-
 include/linux/ide.h            |    1 
 22 files changed, 178 insertions(+), 175 deletions(-)

Index: b/drivers/ide/Makefile
===================================================================
--- a/drivers/ide/Makefile
+++ b/drivers/ide/Makefile
@@ -15,33 +15,35 @@ 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-$(CONFIG_BLK_DEV_CMD640)	+= pci/cmd640.o
-
-# Core IDE code - must come before legacy
-ide-core-$(CONFIG_BLK_DEV_IDEPCI)	+= setup-pci.o
 ide-core-$(CONFIG_BLK_DEV_IDEDMA)	+= ide-dma.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_IDE_PROC_FS)		+= ide-proc.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_H8300)		+= h8300/ide-h8300.o
 
 obj-$(CONFIG_BLK_DEV_IDE)		+= ide-core.o
+
+#
+# if the host drivers are built-in we need to take care of the order
+# in which they are probed - this is handled during link time
+#
+
+obj-$(CONFIG_BLK_DEV_IDE)		+= legacy/
+obj-$(CONFIG_BLK_DEV_IDEPCI)		+= setup-pci.o
+obj-$(CONFIG_ETRAX_IDE)			+= cris/
+# no other way to preserve order without moving pci/cmd640.c around
+ifeq ($(CONFIG_BLK_DEV_CMD640), y)
+	cmd640-core-y += pci/cmd640.o
+	obj-y += cmd640-core.o
+endif
+obj-$(CONFIG_BLK_DEV_IDE_PMAC)		+= ppc/
+obj-$(CONFIG_BLK_DEV_IDEPNP)		+= ide-pnp.o
+obj-$(CONFIG_H8300)			+= h8300/
+
 obj-$(CONFIG_IDE_GENERIC)		+= ide-generic.o
 
 obj-$(CONFIG_BLK_DEV_IDEDISK)		+= ide-disk.o
@@ -49,6 +51,16 @@ 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_IDE)		+= legacy/ arm/ mips/
-obj-$(CONFIG_BLK_DEV_HD)		+= legacy/
-obj-$(CONFIG_ETRAX_IDE)		+= cris/
+# no other way to preserve order without moving legacy/ide-cs.c around
+ifeq ($(CONFIG_BLK_DEV_IDECS), y)
+	ide-cs-core-y += legacy/ide-cs.o
+	obj-y += ide-cs-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
Index: b/drivers/ide/cris/ide-cris.c
===================================================================
--- a/drivers/ide/cris/ide-cris.c
+++ b/drivers/ide/cris/ide-cris.c
@@ -773,8 +773,8 @@ static int speed_cris_ide(ide_drive_t *d
 	return 0;
 }
 
-void __init
-init_e100_ide (void)
+/* TODO: return error values */
+static void __init init_e100_ide(void)
 {
 	hw_regs_t hw;
 	int ide_offsets[IDE_NR_PORTS];
@@ -1098,3 +1098,12 @@ static void cris_dma_start(ide_drive_t *
 		LED_DISK_READ(1);
 	}
 }
+
+static int __init ide_cris_init(void)
+{
+	init_e100_ide();
+
+	return 0;
+}
+
+module_init(ide_cris_init);
Index: b/drivers/ide/h8300/Makefile
===================================================================
--- /dev/null
+++ b/drivers/ide/h8300/Makefile
@@ -0,0 +1,2 @@
+
+obj-$(CONFIG_H8300)			+= ide-h8300.o
Index: b/drivers/ide/h8300/ide-h8300.c
===================================================================
--- a/drivers/ide/h8300/ide-h8300.c
+++ b/drivers/ide/h8300/ide-h8300.c
@@ -85,7 +85,8 @@ static inline void hwif_setup(ide_hwif_t
 	hwif->INSL  = NULL;
 }
 
-void __init h8300_ide_init(void)
+/* TODO: return error values */
+static void __init h8300_ide_probe(void)
 {
 	hw_regs_t hw;
 	ide_hwif_t *hwif;
@@ -114,3 +115,12 @@ void __init h8300_ide_init(void)
 out_busy:
 	printk(KERN_ERR "ide-h8300: IDE I/F resource already used.\n");
 }
+
+static int __init h8300_ide_init(void)
+{
+	h8300_ide_probe();
+
+	return 0;
+}
+
+module_init(h8300_ide_init);
Index: b/drivers/ide/ide-pnp.c
===================================================================
--- a/drivers/ide/ide-pnp.c
+++ b/drivers/ide/ide-pnp.c
@@ -69,12 +69,14 @@ static struct pnp_driver idepnp_driver =
 	.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)
 {
 	pnp_unregister_driver(&idepnp_driver);
 }
+
+module_init(pnpide_init);
Index: b/drivers/ide/ide.c
===================================================================
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -175,7 +175,7 @@ DECLARE_MUTEX(ide_cfg_sem);
  __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock);
 
 #ifdef CONFIG_BLK_DEV_IDEPCI
-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
 
 #ifdef CONFIG_IDEDMA_AUTO
@@ -1247,26 +1247,11 @@ static int __init match_parm (char *s, c
 	return 0;	/* zero = nothing matched */
 }
 
-#ifdef CONFIG_BLK_DEV_ALI14XX
 extern int probe_ali14xx;
-extern int ali14xx_init(void);
-#endif
-#ifdef CONFIG_BLK_DEV_UMC8672
 extern int probe_umc8672;
-extern int umc8672_init(void);
-#endif
-#ifdef CONFIG_BLK_DEV_DTC2278
 extern int probe_dtc2278;
-extern int dtc2278_init(void);
-#endif
-#ifdef CONFIG_BLK_DEV_HT6560B
 extern int probe_ht6560b;
-extern int ht6560b_init(void);
-#endif
-#ifdef CONFIG_BLK_DEV_QD65XX
 extern int probe_qd65xx;
-extern int qd65xx_init(void);
-#endif
 
 static int __initdata is_chipset_set[MAX_HWIFS];
 
@@ -1565,79 +1550,6 @@ done:
 	return 1;
 }
 
-extern void __init pnpide_init(void);
-extern void __exit pnpide_exit(void);
-extern void __init h8300_ide_init(void);
-
-/*
- * probe_for_hwifs() finds/initializes "known" IDE interfaces
- */
-static void __init probe_for_hwifs (void)
-{
-#ifdef CONFIG_BLK_DEV_IDEPCI
-	ide_scan_pcibus(ide_scan_direction);
-#endif /* CONFIG_BLK_DEV_IDEPCI */
-
-#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 void pmac_ide_probe(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
-}
-
-/*
- * Probe module
- */
-
 EXPORT_SYMBOL(ide_lock);
 
 static int ide_bus_match(struct device *dev, struct device_driver *drv)
@@ -1765,30 +1677,6 @@ static int __init ide_init(void)
 
 	proc_ide_create();
 
-#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;
 }
 
@@ -1817,6 +1705,8 @@ int __init init_module (void)
 	return ide_init();
 }
 
+extern void __exit pnpide_exit(void);
+
 void __exit cleanup_module (void)
 {
 	int index;
Index: b/drivers/ide/legacy/Makefile
===================================================================
--- a/drivers/ide/legacy/Makefile
+++ b/drivers/ide/legacy/Makefile
@@ -1,13 +1,22 @@
 
+#
+# link order is important here
+#
+
 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_HT6560B)		+= ht6560b.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
 
-# Last of all
-obj-$(CONFIG_BLK_DEV_HD)		+= hd.o
+ifeq ($(CONFIG_BLK_DEV_IDECS), m)
+	obj-m += ide-cs.o
+endif
 
 EXTRA_CFLAGS	:= -Idrivers/ide
Index: b/drivers/ide/legacy/ali14xx.c
===================================================================
--- a/drivers/ide/legacy/ali14xx.c
+++ b/drivers/ide/legacy/ali14xx.c
@@ -197,6 +197,7 @@ static int __init initRegisters (void) {
 	return t;
 }
 
+/* TODO: return error values */
 static int __init ali14xx_probe(void)
 {
 	ide_hwif_t *hwif, *mate;
@@ -236,8 +237,7 @@ int probe_ali14xx = 0;
 module_param_named(probe, probe_ali14xx, bool, 0);
 MODULE_PARM_DESC(probe, "probe for ALI M14xx chipsets");
 
-/* Can be called directly from ide.c. */
-int __init ali14xx_init(void)
+static int __init ali14xx_init(void)
 {
 	if (probe_ali14xx == 0)
 		goto out;
@@ -253,9 +253,7 @@ out:
 	return -ENODEV;
 }
 
-#ifdef MODULE
 module_init(ali14xx_init);
-#endif
 
 MODULE_AUTHOR("see local file");
 MODULE_DESCRIPTION("support of ALI 14XX IDE chipsets");
Index: b/drivers/ide/legacy/buddha.c
===================================================================
--- a/drivers/ide/legacy/buddha.c
+++ b/drivers/ide/legacy/buddha.c
@@ -143,7 +143,8 @@ static int xsurf_ack_intr(ide_hwif_t *hw
      *  Probe for a Buddha or Catweasel IDE interface
      */
 
-void __init buddha_init(void)
+/* TODO: return error values */
+static void __init buddha_ide_probe(void)
 {
 	hw_regs_t hw;
 	ide_hwif_t *hwif;
@@ -233,3 +234,12 @@ fail_base2:
 		}
 	}
 }
+
+static int __init buddha_ide_init(void)
+{
+	buddha_ide_probe();
+
+	return 0;
+}
+
+module_init(buddha_ide_init);
Index: b/drivers/ide/legacy/dtc2278.c
===================================================================
--- a/drivers/ide/legacy/dtc2278.c
+++ b/drivers/ide/legacy/dtc2278.c
@@ -94,6 +94,7 @@ static void tune_dtc2278 (ide_drive_t *d
 	HWIF(drive)->drives[!drive->select.b.unit].io_32bit = 1;
 }
 
+/* TODO: return error values */
 static int __init dtc2278_probe(void)
 {
 	unsigned long flags;
@@ -151,8 +152,7 @@ int probe_dtc2278 = 0;
 module_param_named(probe, probe_dtc2278, bool, 0);
 MODULE_PARM_DESC(probe, "probe for DTC2278xx chipsets");
 
-/* Can be called directly from ide.c. */
-int __init dtc2278_init(void)
+static int __init dtc2278_init(void)
 {
 	if (probe_dtc2278 == 0)
 		return -ENODEV;
@@ -164,9 +164,7 @@ int __init dtc2278_init(void)
 	return 0;
 }
 
-#ifdef MODULE
 module_init(dtc2278_init);
-#endif
 
 MODULE_AUTHOR("See Local File");
 MODULE_DESCRIPTION("support of DTC-2278 VLB IDE chipsets");
Index: b/drivers/ide/legacy/falconide.c
===================================================================
--- a/drivers/ide/legacy/falconide.c
+++ b/drivers/ide/legacy/falconide.c
@@ -60,7 +60,8 @@ int falconide_intr_lock;
      *  Probe for a Falcon IDE interface
      */
 
-void __init falconide_init(void)
+/* TODO: return error values */
+static void __init falcon_ide_probe(void)
 {
     if (MACH_IS_ATARI && ATARIHW_PRESENT(IDE)) {
 	hw_regs_t hw;
@@ -76,3 +77,12 @@ void __init falconide_init(void)
 	    printk("ide%d: Falcon IDE interface\n", index);
     }
 }
+
+static int __init falcon_ide_init(void)
+{
+	falcon_ide_probe();
+
+	return 0;
+}
+
+module_init(falcon_ide_init);
Index: b/drivers/ide/legacy/gayle.c
===================================================================
--- a/drivers/ide/legacy/gayle.c
+++ b/drivers/ide/legacy/gayle.c
@@ -110,7 +110,8 @@ static int gayle_ack_intr_a1200(ide_hwif
      *  Probe for a Gayle IDE interface (and optionally for an IDE doubler)
      */
 
-void __init gayle_init(void)
+/* TODO: return error values */
+static void __init gayle_ide_probe(void)
 {
     int a4000, i;
 
@@ -183,3 +184,12 @@ found:
 	    release_mem_region(res_start, res_n);
     }
 }
+
+static int __init gayle_ide_init(void)
+{
+	gayle_ide_probe();
+
+	return 0;
+}
+
+module_init(gayle_ide_init);
Index: b/drivers/ide/legacy/ht6560b.c
===================================================================
--- a/drivers/ide/legacy/ht6560b.c
+++ b/drivers/ide/legacy/ht6560b.c
@@ -308,8 +308,7 @@ int probe_ht6560b = 0;
 module_param_named(probe, probe_ht6560b, bool, 0);
 MODULE_PARM_DESC(probe, "probe for HT6560B chipset");
 
-/* Can be called directly from ide.c. */
-int __init ht6560b_init(void)
+static int __init ht6560b_init(void)
 {
 	ide_hwif_t *hwif, *mate;
 	int t;
@@ -369,9 +368,7 @@ release_region:
 	return -ENODEV;
 }
 
-#ifdef MODULE
 module_init(ht6560b_init);
-#endif
 
 MODULE_AUTHOR("See Local File");
 MODULE_DESCRIPTION("HT-6560B EIDE-controller support");
Index: b/drivers/ide/legacy/macide.c
===================================================================
--- a/drivers/ide/legacy/macide.c
+++ b/drivers/ide/legacy/macide.c
@@ -90,7 +90,8 @@ static void macide_mediabay_interrupt(in
  * Probe for a Macintosh IDE interface
  */
 
-void macide_init(void)
+/* TODO: return error values */
+static void __init mac_ide_probe(void)
 {
 	hw_regs_t hw;
 	ide_hwif_t *hwif;
@@ -152,3 +153,12 @@ void macide_init(void)
 			printk(KERN_INFO "ide%d: Unknown Macintosh IDE interface\n", index);
 	}
 }
+
+static int __init mac_ide_init(void)
+{
+	mac_ide_probe();
+
+	return 0;
+}
+
+module_init(mac_ide_init);
Index: b/drivers/ide/legacy/q40ide.c
===================================================================
--- a/drivers/ide/legacy/q40ide.c
+++ b/drivers/ide/legacy/q40ide.c
@@ -102,7 +102,7 @@ void q40_ide_setup_ports ( hw_regs_t *hw
 
 /* 
  * the static array is needed to have the name reported in /proc/ioports,
- * hwif->name unfortunately isn´t available yet
+ * hwif->name unfortunately isn't available yet
  */
 static const char *q40_ide_names[Q40IDE_NUM_HWIFS]={
 	"ide0", "ide1"
@@ -112,7 +112,8 @@ static const char *q40_ide_names[Q40IDE_
  *  Probe for Q40 IDE interfaces
  */
 
-void q40ide_init(void)
+/* TODO: return error values */
+static void __init q40_ide_probe(void)
 {
     int i;
     ide_hwif_t *hwif;
@@ -149,3 +150,11 @@ void q40ide_init(void)
     }
 }
 
+static int __init q40_ide_init(void)
+{
+	q40_ide_probe();
+
+	return 0;
+}
+
+module_init(q40_ide_init);
Index: b/drivers/ide/legacy/qd65xx.c
===================================================================
--- a/drivers/ide/legacy/qd65xx.c
+++ b/drivers/ide/legacy/qd65xx.c
@@ -397,6 +397,7 @@ static void __exit qd_unsetup(ide_hwif_t
  * return 1 if another qd may be probed
  */
 
+/* TODO: return error values */
 static int __init qd_probe(int base)
 {
 	ide_hwif_t *hwif;
@@ -496,8 +497,7 @@ int probe_qd65xx = 0;
 module_param_named(probe, probe_qd65xx, bool, 0);
 MODULE_PARM_DESC(probe, "probe for QD65xx chipsets");
 
-/* Can be called directly from ide.c. */
-int __init qd65xx_init(void)
+static int __init qd65xx_init(void)
 {
 	if (probe_qd65xx == 0)
 		return -ENODEV;
@@ -510,9 +510,7 @@ int __init qd65xx_init(void)
 	return 0;
 }
 
-#ifdef MODULE
 module_init(qd65xx_init);
-#endif
 
 MODULE_AUTHOR("Samuel Thibault");
 MODULE_DESCRIPTION("support of qd65xx vlb ide chipset");
Index: b/drivers/ide/legacy/umc8672.c
===================================================================
--- a/drivers/ide/legacy/umc8672.c
+++ b/drivers/ide/legacy/umc8672.c
@@ -123,6 +123,7 @@ static void tune_umc (ide_drive_t *drive
 	spin_unlock_irqrestore(&ide_lock, flags);
 }
 
+/* TODO: return error values */
 static int __init umc8672_probe(void)
 {
 	unsigned long flags;
@@ -171,8 +172,7 @@ int probe_umc8672 = 0;
 module_param_named(probe, probe_umc8672, bool, 0);
 MODULE_PARM_DESC(probe, "probe for UMC8672 chipset");
 
-/* Can be called directly from ide.c. */
-int __init umc8672_init(void)
+static int __init umc8672_init(void)
 {
 	if (probe_umc8672 == 0)
 		goto out;
@@ -183,9 +183,7 @@ out:
 	return -ENODEV;;
 }
 
-#ifdef MODULE
 module_init(umc8672_init);
-#endif
 
 MODULE_AUTHOR("Wolfram Podien");
 MODULE_DESCRIPTION("Support for UMC 8672 IDE chipset");
Index: b/drivers/ide/pci/cmd640.c
===================================================================
--- a/drivers/ide/pci/cmd640.c
+++ b/drivers/ide/pci/cmd640.c
@@ -713,9 +713,11 @@ 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.
+ *
+ * TODO: return error values
  */
-int __init ide_probe_for_cmd640x (void)
+static int __init cmd640x_probe(void)
 {
 #ifdef CONFIG_BLK_DEV_CMD640_ENHANCED
 	int second_port_toggled = 0;
@@ -876,3 +878,11 @@ int __init ide_probe_for_cmd640x (void)
 	return 1;
 }
 
+static int __init cmd640x_init(void)
+{
+	(void)cmd640x_probe();
+
+	return 0;
+}
+
+module_init(cmd640x_init);
Index: b/drivers/ide/ppc/Makefile
===================================================================
--- /dev/null
+++ b/drivers/ide/ppc/Makefile
@@ -0,0 +1,2 @@
+
+obj-$(CONFIG_BLK_DEV_IDE_PMAC)		+= pmac.o
Index: b/drivers/ide/ppc/pmac.c
===================================================================
--- a/drivers/ide/ppc/pmac.c
+++ b/drivers/ide/ppc/pmac.c
@@ -1554,8 +1554,8 @@ static struct pci_driver pmac_ide_pci_dr
 };
 MODULE_DEVICE_TABLE(pci, pmac_ide_pci_match);
 
-void __init
-pmac_ide_probe(void)
+/* TODO: return error values */
+static void __init pmac_ide_probe(void)
 {
 	if (!machine_is(powermac))
 		return;
@@ -2073,3 +2073,12 @@ pmac_ide_setup_dma(pmac_ide_hwif_t *pmif
 }
 
 #endif /* CONFIG_BLK_DEV_IDEDMA_PMAC */
+
+static int __init pmac_ide_init(void)
+{
+	pmac_ide_probe();
+
+	return 0;
+}
+
+module_init(pmac_ide_init);
Index: b/drivers/ide/setup-pci.c
===================================================================
--- a/drivers/ide/setup-pci.c
+++ b/drivers/ide/setup-pci.c
@@ -853,8 +853,8 @@ static int __init ide_scan_pcidev(struct
  *	PCI drivers. After this all IDE pci handling becomes standard
  *	module ordering not traditionally ordered.
  */
- 	
-void __init ide_scan_pcibus (int scan_direction)
+
+static void __init ide_scan_pcibus(int scan_direction)
 {
 	struct pci_dev *dev = NULL;
 	struct pci_driver *d;
@@ -883,3 +883,14 @@ void __init ide_scan_pcibus (int scan_di
 		__pci_register_driver(d, d->driver.owner, d->driver.mod_name);
 	}
 }
+
+extern int ide_scan_direction;
+
+static int __init ide_pci_init(void)
+{
+	ide_scan_pcibus(ide_scan_direction);
+
+	return 0;
+}
+
+module_init(ide_pci_init);
Index: b/include/linux/ide.h
===================================================================
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1203,7 +1203,6 @@ void ide_init_disk(struct gendisk *, ide
 
 extern int ideprobe_init(void);
 
-extern void ide_scan_pcibus(int scan_direction) __init;
 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)
 void ide_pci_setup_ports(struct pci_dev *, struct ide_pci_device_s *, int, ata_index_t *);

  parent reply	other threads:[~2007-02-14  1:51 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-14  1:56 [PATCH 1/8] alim15x3: PIO fallback fix Bartlomiej Zolnierkiewicz
2007-02-14  1:56 ` [PATCH 2/8] alim15x3: use ide_tune_dma() Bartlomiej Zolnierkiewicz
2007-02-14  1:56 ` [PATCH 3/8] pdc202xx_new: " Bartlomiej Zolnierkiewicz
2007-02-14  1:56 ` [PATCH 4/8] ide: remove some obsoleted kernel params Bartlomiej Zolnierkiewicz
2007-02-14  1:56 ` [PATCH 5/8] ide: add "initializing" argument to ide_register_hw() Bartlomiej Zolnierkiewicz
2007-02-14  1:57 ` [PATCH 6/8] ide: add ide_proc_register_port() Bartlomiej Zolnierkiewicz
2007-02-14  1:57 ` [PATCH 7/8] ide: make legacy IDE VLB modules check for the "probe" kernel params Bartlomiej Zolnierkiewicz
2007-02-14 10:53   ` Alan
2007-02-14 11:07     ` Bartlomiej Zolnierkiewicz
2007-02-14 11:17       ` Alan
2007-02-14 11:19         ` Bartlomiej Zolnierkiewicz
2007-02-14 19:52         ` [PATCH 7/8] ide: make legacy IDE VLB modules check for the "probe" kernel params (v2) Bartlomiej Zolnierkiewicz
2007-02-14  1:57 ` Bartlomiej Zolnierkiewicz [this message]
2007-08-18 13:50 ` [PATCH 1/8] alim15x3: PIO fallback fix Sergei Shtylyov
2007-08-18 19:18   ` Bartlomiej Zolnierkiewicz
2007-08-18 19:26     ` Sergei Shtylyov
2007-11-09 16:58   ` Sergei Shtylyov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070214015719.4619.87962.sendpatchset@localhost.localdomain \
    --to=bzolnier@gmail.com \
    --cc=linux-ide@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.