--- 1.28/drivers/Makefile	Wed Dec 18 16:28:25 2002
+++ edited/drivers/Makefile	Sun Dec 29 17:39:52 2002
@@ -38,8 +38,6 @@
 obj-$(CONFIG_SERIO)		+= input/serio/
 obj-$(CONFIG_I2O)		+= message/
 obj-$(CONFIG_I2C)		+= i2c/
-obj-$(CONFIG_I2C_MAINBOARD)	+= i2c/busses/
-obj-$(CONFIG_SENSORS)		+= i2c/chips/
 obj-$(CONFIG_PHONE)		+= telephony/
 obj-$(CONFIG_MD)		+= md/
 obj-$(CONFIG_BT)		+= bluetooth/
--- 1.33/drivers/char/mem.c	Thu Dec 26 02:35:14 2002
+++ edited/drivers/char/mem.c	Sun Dec 29 18:28:56 2002
@@ -27,15 +27,6 @@
 #include <asm/io.h>
 #include <asm/pgalloc.h>
 
-#ifdef CONFIG_I2C_MAINBOARD
-extern void i2c_mainboard_init_all(void);
-#endif
-#ifdef CONFIG_SENSORS
-extern void sensors_init_all(void);
-#endif
-#ifdef CONFIG_I2C
-extern int i2c_init_all(void);
-#endif
 #ifdef CONFIG_FB
 extern void fbmem_init(void);
 #endif
@@ -708,12 +699,6 @@
 		printk("unable to get major %d for memory devs\n", MEM_MAJOR);
 	memory_devfs_register();
 	rand_initialize();
-#ifdef CONFIG_I2C
-	i2c_init_all();
-#endif
-#ifdef CONFIG_I2C_MAINBOARD
-	i2c_mainboard_init_all();
-#endif
 #if defined (CONFIG_FB)
 	fbmem_init();
 #endif
@@ -728,10 +713,6 @@
 #if defined(CONFIG_S390_TAPE) && defined(CONFIG_S390_TAPE_CHAR)
 	tapechar_init();
 #endif
-#ifdef CONFIG_SENSORS
-	sensors_init_all();
-#endif
-
 	return 0;
 }
 
--- 1.2/drivers/i2c/Kconfig	Sun Dec  1 19:42:06 2002
+++ edited/drivers/i2c/Kconfig	Sun Dec 29 19:31:23 2002
@@ -166,8 +166,6 @@
 	tristate "IBM on-chip I2C Adapter"
 	depends on I2C_IBM_OCP_ALGO
 
-# This is needed for automatic patch generation: sensors code starts here
-# This is needed for automatic patch generation: sensors code ends here
 config I2C_CHARDEV
 	tristate "I2C device interface"
 	depends on I2C
--- 1.6/drivers/i2c/Makefile	Sat Dec 14 07:38:56 2002
+++ edited/drivers/i2c/Makefile	Sun Dec 29 19:31:06 2002
@@ -18,6 +18,4 @@
 obj-$(CONFIG_SCx200_I2C)	+= scx200_i2c.o
 obj-$(CONFIG_SCx200_ACB)	+= scx200_acb.o
 obj-$(CONFIG_I2C_PROC)		+= i2c-proc.o
-
-# This is needed for automatic patch generation: sensors code starts here
-# This is needed for automatic patch generation: sensors code ends here
+obj-y				+= busses/ chips/
--- 1.9/drivers/i2c/i2c-algo-bit.c	Sun Jul  7 20:41:49 2002
+++ edited/drivers/i2c/i2c-algo-bit.c	Sun Dec 29 18:28:36 2002
@@ -605,18 +605,9 @@
 	return 0;
 }
 
-int __init i2c_algo_bit_init (void)
-{
-	printk(KERN_INFO "i2c-algo-bit.o: i2c bit algorithm module version %s (%s)\n", I2C_VERSION, I2C_DATE);
-	return 0;
-}
-
-
-
 EXPORT_SYMBOL(i2c_bit_add_bus);
 EXPORT_SYMBOL(i2c_bit_del_bus);
 
-#ifdef MODULE
 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
 MODULE_DESCRIPTION("I2C-Bus bit-banging algorithm");
 MODULE_LICENSE("GPL");
@@ -629,13 +620,3 @@
 MODULE_PARM_DESC(bit_scan, "Scan for active chips on the bus");
 MODULE_PARM_DESC(i2c_debug,
             "debug level - 0 off; 1 normal; 2,3 more verbose; 9 bit-protocol");
-
-int init_module(void) 
-{
-	return i2c_algo_bit_init();
-}
-
-void cleanup_module(void) 
-{
-}
-#endif
--- 1.5/drivers/i2c/i2c-algo-pcf.c	Thu May 23 17:21:11 2002
+++ edited/drivers/i2c/i2c-algo-pcf.c	Sun Dec 29 18:19:38 2002
@@ -520,17 +520,9 @@
 	return 0;
 }
 
-int __init i2c_algo_pcf_init (void)
-{
-	printk(KERN_INFO "i2c-algo-pcf.o: i2c pcf8584 algorithm module version %s (%s)\n", I2C_VERSION, I2C_DATE);
-	return 0;
-}
-
-
 EXPORT_SYMBOL(i2c_pcf_add_bus);
 EXPORT_SYMBOL(i2c_pcf_del_bus);
 
-#ifdef MODULE
 MODULE_AUTHOR("Hans Berglund <hb@spacetec.no>");
 MODULE_DESCRIPTION("I2C-Bus PCF8584 algorithm");
 MODULE_LICENSE("GPL");
@@ -541,14 +533,3 @@
 MODULE_PARM_DESC(pcf_scan, "Scan for active chips on the bus");
 MODULE_PARM_DESC(i2c_debug,
         "debug level - 0 off; 1 normal; 2,3 more verbose; 9 pcf-protocol");
-
-
-int init_module(void) 
-{
-	return i2c_algo_pcf_init();
-}
-
-void cleanup_module(void) 
-{
-}
-#endif
--- 1.12/drivers/i2c/i2c-core.c	Sun Dec  1 19:42:06 2002
+++ edited/drivers/i2c/i2c-core.c	Sun Dec 29 19:43:44 2002
@@ -56,8 +56,8 @@
 /* ----- global variables -------------------------------------------------- */
 
 /**** lock for writing to global variables: the adapter & driver list */
-struct semaphore adap_lock;
-struct semaphore driver_lock;
+DECLARE_MUTEX(adap_lock);
+DECLARE_MUTEX(driver_lock);
 
 /**** adapter list */
 static struct i2c_adapter *adapters[I2C_ADAP_MAX];
@@ -76,11 +76,6 @@
  */
 
 #ifdef CONFIG_PROC_FS
-
-int __init i2cproc_init(void);
-void __exit i2cproc_exit(void);
-static int i2cproc_cleanup(void);
-
 static ssize_t i2cproc_bus_read(struct file * file, char * buf,size_t count, 
                                 loff_t *ppos);
 static int read_bus_i2c(char *buf, char **start, off_t offset, int len,
@@ -91,14 +86,6 @@
 static struct file_operations i2cproc_operations = {
 	.read		= i2cproc_bus_read,
 };
-
-static int i2cproc_initialized = 0;
-
-#else /* undef CONFIG_PROC_FS */
-
-#define i2cproc_init() 0
-#define i2cproc_cleanup() 0
-
 #endif /* CONFIG_PROC_FS */
 
 
@@ -136,8 +123,7 @@
 	init_MUTEX(&adap->lock);
 
 #ifdef CONFIG_PROC_FS
-
-	if (i2cproc_initialized) {
+	{
 		char name[8];
 		struct proc_dir_entry *proc_entry;
 
@@ -155,7 +141,6 @@
 		proc_entry->owner = THIS_MODULE;
 		adap->inode = proc_entry->low_ino;
 	}
-
 #endif /* def CONFIG_PROC_FS */
 
 	/* inform drivers of new adapters */
@@ -234,10 +219,10 @@
 			}
 	}
 #ifdef CONFIG_PROC_FS
-	if (i2cproc_initialized) {
+	{
 		char name[8];
 		sprintf(name,"i2c-%d", i);
-		remove_proc_entry(name,proc_bus);
+		remove_proc_entry(name, proc_bus);
 	}
 #endif /* def CONFIG_PROC_FS */
 
@@ -681,41 +666,30 @@
 	return -ENOENT;
 }
 
-int i2cproc_init(void)
+static int i2cproc_init(void)
 {
 
 	struct proc_dir_entry *proc_bus_i2c;
 
-	i2cproc_initialized = 0;
-
-	if (! proc_bus) {
-		printk(KERN_ERR "i2c-core.o: /proc/bus/ does not exist");
-		i2cproc_cleanup();
-		return -ENOENT;
- 	} 
 	proc_bus_i2c = create_proc_entry("i2c",0,proc_bus);
 	if (!proc_bus_i2c) {
 		printk(KERN_ERR "i2c-core.o: Could not create /proc/bus/i2c");
-		i2cproc_cleanup();
 		return -ENOENT;
  	}
+
 	proc_bus_i2c->read_proc = &read_bus_i2c;
 	proc_bus_i2c->owner = THIS_MODULE;
-	i2cproc_initialized += 2;
 	return 0;
 }
 
-int i2cproc_cleanup(void)
+static void __exit i2cproc_cleanup(void)
 {
 
-	if (i2cproc_initialized >= 1) {
-		remove_proc_entry("i2c",proc_bus);
-		i2cproc_initialized -= 2;
-	}
-	return 0;
+	remove_proc_entry("i2c",proc_bus);
 }
 
-
+module_init(i2cproc_init);
+module_exit(i2cproc_cleanup);
 #endif /* def CONFIG_PROC_FS */
 
 /* ----------------------------------------------------
@@ -1440,120 +1414,6 @@
 	return (func & adap_func) == func;
 }
 
-
-static int __init i2c_init(void)
-{
-	printk(KERN_INFO "i2c-core.o: i2c core module version %s (%s)\n", I2C_VERSION, I2C_DATE);
-	memset(adapters,0,sizeof(adapters));
-	memset(drivers,0,sizeof(drivers));
-	adap_count=0;
-	driver_count=0;
-
-	init_MUTEX(&adap_lock);
-	init_MUTEX(&driver_lock);
-	
-	i2cproc_init();
-	
-	return 0;
-}
-
-void __exit i2c_exit(void)
-{
-	i2cproc_cleanup();
-}
-
-#ifndef MODULE
-#ifdef CONFIG_I2C_CHARDEV
-	extern int i2c_dev_init(void);
-#endif
-#ifdef CONFIG_I2C_ALGOBIT
-	extern int i2c_algo_bit_init(void);
-#endif
-#ifdef CONFIG_I2C_PHILIPSPAR
-	extern int i2c_bitlp_init(void);
-#endif
-#ifdef CONFIG_I2C_ELV
-	extern int i2c_bitelv_init(void);
-#endif
-#ifdef CONFIG_I2C_VELLEMAN
-	extern int i2c_bitvelle_init(void);
-#endif
-#ifdef CONFIG_I2C_BITVIA
-	extern int i2c_bitvia_init(void);
-#endif
-
-#ifdef CONFIG_I2C_ALGOPCF
-	extern int i2c_algo_pcf_init(void);	
-#endif
-#ifdef CONFIG_I2C_ELEKTOR
-	extern int i2c_pcfisa_init(void);
-#endif
-
-#ifdef CONFIG_I2C_ALGO8XX
-	extern int i2c_algo_8xx_init(void);
-#endif
-#ifdef CONFIG_I2C_RPXLITE
-	extern int i2c_rpx_init(void);
-#endif
-#ifdef CONFIG_I2C_PROC
-	extern int sensors_init(void);
-#endif
-
-/* This is needed for automatic patch generation: sensors code starts here */
-/* This is needed for automatic patch generation: sensors code ends here   */
-
-int __init i2c_init_all(void)
-{
-	/* --------------------- global ----- */
-	i2c_init();
-
-#ifdef CONFIG_I2C_CHARDEV
-	i2c_dev_init();
-#endif
-	/* --------------------- bit -------- */
-#ifdef CONFIG_I2C_ALGOBIT
-	i2c_algo_bit_init();
-#endif
-#ifdef CONFIG_I2C_PHILIPSPAR
-	i2c_bitlp_init();
-#endif
-#ifdef CONFIG_I2C_ELV
-	i2c_bitelv_init();
-#endif
-#ifdef CONFIG_I2C_VELLEMAN
-	i2c_bitvelle_init();
-#endif
-
-	/* --------------------- pcf -------- */
-#ifdef CONFIG_I2C_ALGOPCF
-	i2c_algo_pcf_init();	
-#endif
-#ifdef CONFIG_I2C_ELEKTOR
-	i2c_pcfisa_init();
-#endif
-
-	/* --------------------- 8xx -------- */
-#ifdef CONFIG_I2C_ALGO8XX
-	i2c_algo_8xx_init();
-#endif
-#ifdef CONFIG_I2C_RPXLITE
-	i2c_rpx_init();
-#endif
-
-	/* -------------- proc interface ---- */
-#ifdef CONFIG_I2C_PROC
-	sensors_init();
-#endif
-/* This is needed for automatic patch generation: sensors code starts here */
-/* This is needed for automatic patch generation: sensors code ends here */
-
-	return 0;
-}
-
-#endif
-
-
-
 EXPORT_SYMBOL(i2c_add_adapter);
 EXPORT_SYMBOL(i2c_del_adapter);
 EXPORT_SYMBOL(i2c_add_driver);
@@ -1594,9 +1454,7 @@
 
 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
 MODULE_DESCRIPTION("I2C-Bus main module");
-MODULE_PARM(i2c_debug, "i");
-MODULE_PARM_DESC(i2c_debug,"debug level");
 MODULE_LICENSE("GPL");
 
-module_init(i2c_init);
-module_exit(i2c_exit);
+MODULE_PARM(i2c_debug, "i");
+MODULE_PARM_DESC(i2c_debug,"debug level");
--- 1.18/drivers/i2c/i2c-dev.c	Sat Dec 14 06:56:33 2002
+++ edited/drivers/i2c/i2c-dev.c	Sun Dec 29 18:20:26 2002
@@ -48,10 +48,6 @@
 #include <linux/i2c.h>
 #include <linux/i2c-dev.h>
 
-int __init i2c_dev_init(void);
-void __exit i2c_dev_exit(void);
-static int dev_cleanup(void);
-
 /* struct file_operations changed too often in the 2.1 series for nice code */
 
 static ssize_t i2cdev_read (struct file *file, char *buf, size_t count, 
@@ -437,19 +433,6 @@
 	return -1;
 }
 
-static int dev_cleanup(void)
-{
-	int res;
-
-	if ((res = i2c_del_driver(&i2cdev_driver))) {
-		printk(KERN_ERR "i2c-dev.o: Driver deregistration failed, "
-		       "module not removed.\n");
-	}
-
-	devfs_remove("i2c");
-	unregister_chrdev(I2C_MAJOR,"i2c");
-}
-
 int __init i2c_dev_init(void)
 {
 	int res;
@@ -471,12 +454,12 @@
 	return 0;
 }
 
-void __exit i2c_dev_exit(void)
+static void __exit i2c_dev_exit(void)
 {
-	dev_cleanup();
+	i2c_del_driver(&i2cdev_driver);
+	devfs_remove("i2c");
+	unregister_chrdev(I2C_MAJOR,"i2c");
 }
-
-EXPORT_NO_SYMBOLS;
 
 MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and Simon G. Vogl <simon@tk.uni-linz.ac.at>");
 MODULE_DESCRIPTION("I2C /dev entries driver");
--- 1.10/drivers/i2c/i2c-elektor.c	Mon Nov 18 07:42:08 2002
+++ edited/drivers/i2c/i2c-elektor.c	Sun Dec 29 19:48:40 2002
@@ -159,19 +159,6 @@
 	return 0;
 }
 
-
-static void pcf_isa_exit(void)
-{
-	if (irq > 0) {
-		disable_irq(irq);
-		free_irq(irq, 0);
-	}
-	if (!mmapped) {
-		release_region(base , 2);
-	}
-}
-
-
 static int pcf_isa_reg(struct i2c_client *client)
 {
 	return 0;
@@ -223,7 +210,7 @@
 	.client_unregister = pcf_isa_unreg,
 };
 
-int __init i2c_pcfisa_init(void) 
+static int __init i2c_pcfisa_init(void) 
 {
 #ifdef __alpha__
 	/* check to see we have memory mapped PCF8584 connected to the 
@@ -281,23 +268,39 @@
 	}
 
 	init_waitqueue_head(&pcf_wait);
-	if (pcf_isa_init() == 0) {
-		if (i2c_pcf_add_bus(&pcf_isa_ops) < 0) {
-			pcf_isa_exit();
-			return -ENODEV;
-		}
-	} else {
+	if (pcf_isa_init())
 		return -ENODEV;
-	}
+	if (i2c_pcf_add_bus(&pcf_isa_ops) < 0)
+		goto fail;
 	
 	printk(KERN_ERR "i2c-elektor.o: found device at %#x.\n", base);
 
 	return 0;
+
+ fail:
+	if (irq > 0) {
+		disable_irq(irq);
+		free_irq(irq, 0);
+	}
+
+	if (!mmapped)
+		release_region(base , 2);
+	return -ENODEV;
 }
 
-EXPORT_NO_SYMBOLS;
+static void i2c_pcfisa_exit(void)
+{
+	i2c_pcf_del_bus(&pcf_isa_ops);
+
+	if (irq > 0) {
+		disable_irq(irq);
+		free_irq(irq, 0);
+	}
+
+	if (!mmapped)
+		release_region(base , 2);
+}
 
-#ifdef MODULE
 MODULE_AUTHOR("Hans Berglund <hb@spacetec.no>");
 MODULE_DESCRIPTION("I2C-Bus adapter routines for PCF8584 ISA bus adapter");
 MODULE_LICENSE("GPL");
@@ -309,15 +312,5 @@
 MODULE_PARM(mmapped, "i");
 MODULE_PARM(i2c_debug, "i");
 
-int init_module(void) 
-{
-	return i2c_pcfisa_init();
-}
-
-void cleanup_module(void) 
-{
-	i2c_pcf_del_bus(&pcf_isa_ops);
-	pcf_isa_exit();
-}
-
-#endif
+module_init(i2c_pcfisa_init);
+module_exit(i2c_pcfisa_exit);
--- 1.6/drivers/i2c/i2c-elv.c	Tue May 14 18:01:25 2002
+++ edited/drivers/i2c/i2c-elv.c	Sun Dec 29 19:44:23 2002
@@ -113,11 +113,6 @@
 	return 0;
 }
 
-static void __exit bit_elv_exit(void)
-{
-	release_region( base , (base == 0x3bc)? 3 : 8 );
-}
-
 static int bit_elv_reg(struct i2c_client *client)
 {
 	return 0;
@@ -166,7 +161,7 @@
 	bit_elv_unreg,	
 };
 
-int __init i2c_bitelv_init(void)
+static int __init i2c_bitelv_init(void)
 {
 	printk(KERN_INFO "i2c-elv.o: i2c ELV parallel port adapter module version %s (%s)\n", I2C_VERSION, I2C_DATE);
 	if (base==0) {
@@ -192,24 +187,17 @@
 	return 0;
 }
 
+static void __exit i2c_bitelv_exit(void)
+{
+	i2c_bit_del_bus(&bit_elv_ops);
+	release_region(base , (base == 0x3bc) ? 3 : 8);
+}
 
-#ifdef MODULE
 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
 MODULE_DESCRIPTION("I2C-Bus adapter routines for ELV parallel port adapter");
 MODULE_LICENSE("GPL");
 
-
 MODULE_PARM(base, "i");
 
-int init_module(void)
-{
-	return i2c_bitelv_init();
-}
-
-void cleanup_module(void)
-{
-	i2c_bit_del_bus(&bit_elv_ops);
-	bit_elv_exit();
-}
-
-#endif
+module_init(i2c_bitelv_init);
+module_exit(i2c_bitelv_exit);
--- 1.2/drivers/i2c/i2c-frodo.c	Mon Nov 18 09:02:17 2002
+++ edited/drivers/i2c/i2c-frodo.c	Sun Dec 29 18:25:35 2002
@@ -96,8 +96,6 @@
 	return (i2c_bit_add_bus (&frodo_ops));
 }
 
-EXPORT_NO_SYMBOLS;
-
 static void __exit i2c_frodo_exit (void)
 {
 	i2c_bit_del_bus (&frodo_ops);
@@ -105,12 +103,7 @@
 
 MODULE_AUTHOR ("Abraham van der Merwe <abraham@2d3d.co.za>");
 MODULE_DESCRIPTION ("I2C-Bus adapter routines for Frodo");
-
-#ifdef MODULE_LICENSE
 MODULE_LICENSE ("GPL");
-#endif	/* #ifdef MODULE_LICENSE */
-
-EXPORT_NO_SYMBOLS;
 
 module_init (i2c_frodo_init);
 module_exit (i2c_frodo_exit);
--- 1.5/drivers/i2c/i2c-philips-par.c	Tue Sep 17 15:53:02 2002
+++ edited/drivers/i2c/i2c-philips-par.c	Sun Dec 29 18:26:03 2002
@@ -297,14 +297,5 @@
 
 MODULE_PARM(type, "i");
 
-#ifdef MODULE
-int init_module(void)
-{
-	return i2c_bitlp_init();
-}
-
-void cleanup_module(void)
-{
-	i2c_bitlp_exit();
-}
-#endif
+module_init(i2c_bitlp_init);
+module_exit(i2c_bitlp_exit);
--- 1.8/drivers/i2c/i2c-proc.c	Sun Dec  1 19:42:06 2002
+++ edited/drivers/i2c/i2c-proc.c	Sun Dec 29 19:50:11 2002
@@ -40,10 +40,6 @@
 #define THIS_MODULE NULL
 #endif
 
-int __init sensors_init(void);
-void __exit i2c_proc_exit(void);
-static int proc_cleanup(void);
-
 static int i2c_create_name(char **name, const char *prefix,
 			       struct i2c_adapter *adapter, int addr);
 static int i2c_parse_reals(int *nrels, void *buffer, int bufsize,
@@ -92,7 +88,6 @@
 
 
 static struct ctl_table_header *i2c_proc_header;
-static int i2c_initialized;
 
 /* This returns a nice name for a new directory; for example lm78-isa-0310
    (for a LM78 chip on the ISA bus at port 0x310), or lm75-i2c-3-4e (for
@@ -848,10 +843,9 @@
 	return 0;
 }
 
-int __init sensors_init(void)
+static int __init i2c_proc_init(void)
 {
 	printk(KERN_INFO "i2c-proc.o version %s (%s)\n", I2C_VERSION, I2C_DATE);
-	i2c_initialized = 0;
 	if (!
 	    (i2c_proc_header =
 	     register_sysctl_table(i2c_proc, 0))) {
@@ -859,22 +853,12 @@
 		return -EPERM;
 	}
 	i2c_proc_header->ctl_table->child->de->owner = THIS_MODULE;
-	i2c_initialized++;
 	return 0;
 }
 
-void __exit i2c_proc_exit(void)
-{
-	proc_cleanup();
-}
-
-static int proc_cleanup(void)
+static void __exit i2c_proc_exit(void)
 {
-	if (i2c_initialized >= 1) {
-		unregister_sysctl_table(i2c_proc_header);
-		i2c_initialized--;
-	}
-	return 0;
+	unregister_sysctl_table(i2c_proc_header);
 }
 
 EXPORT_SYMBOL(i2c_deregister_entry);
@@ -887,5 +871,5 @@
 MODULE_DESCRIPTION("i2c-proc driver");
 MODULE_LICENSE("GPL");
 
-module_init(sensors_init);
+module_init(i2c_proc_init);
 module_exit(i2c_proc_exit);
--- 1.2/drivers/i2c/i2c-rpx.c	Mon Nov 18 02:09:32 2002
+++ edited/drivers/i2c/i2c-rpx.c	Sun Dec 29 18:27:25 2002
@@ -126,11 +126,8 @@
 	i2c_8xx_del_bus(&rpx_ops);
 }
 
-#ifdef MODULE
 MODULE_AUTHOR("Dan Malek <dmalek@jlc.net>");
 MODULE_DESCRIPTION("I2C-Bus adapter routines for MPC8xx boards");
 
 module_init(i2c_rpx_init);
 module_exit(i2c_rpx_exit);
-#endif
-
--- 1.5/drivers/i2c/i2c-velleman.c	Tue May 14 18:04:11 2002
+++ edited/drivers/i2c/i2c-velleman.c	Sun Dec 29 19:46:32 2002
@@ -102,12 +102,6 @@
 	return 0;
 }
 
-static void __exit bit_velle_exit(void)
-{	
-	release_region( base , (base == 0x3bc)? 3 : 8 );
-}
-
-
 static int bit_velle_reg(struct i2c_client *client)
 {
 	return 0;
@@ -157,7 +151,7 @@
 	bit_velle_unreg,
 };
 
-int __init  i2c_bitvelle_init(void)
+static int __init i2c_bitvelle_init(void)
 {
 	printk(KERN_INFO "i2c-velleman.o: i2c Velleman K8000 adapter module version %s (%s)\n", I2C_VERSION, I2C_DATE);
 	if (base==0) {
@@ -183,22 +177,17 @@
 	return 0;
 }
 
-#ifdef MODULE
+static void __exit i2c_bitvelle_exit(void)
+{	
+	i2c_bit_del_bus(&bit_velle_ops);
+	release_region(base, (base == 0x3bc) ? 3 : 8);
+}
+
 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
 MODULE_DESCRIPTION("I2C-Bus adapter routines for Velleman K8000 adapter");
 MODULE_LICENSE("GPL");
 
 MODULE_PARM(base, "i");
 
-int init_module(void) 
-{
-	return i2c_bitvelle_init();
-}
-
-void cleanup_module(void) 
-{
-	i2c_bit_del_bus(&bit_velle_ops);
-	bit_velle_exit();
-}
-
-#endif
+module_init(i2c_bitvelle_init);
+module_exit(i2c_bitvelle_exit);
--- 1.1/drivers/i2c/busses/Kconfig	Sun Dec  1 19:42:06 2002
+++ edited/drivers/i2c/busses/Kconfig	Sun Dec 29 19:29:23 2002
@@ -5,22 +5,8 @@
 
 menu "I2C Hardware Sensors Mainboard support"
 
-config I2C_MAINBOARD
-	bool "Hardware sensors mainboard support"
-	depends on EXPERIMENTAL && I2C && I2C_PROC
-	help
-	  Many modern mainboards have some kind of I2C interface integrated. This
-	  is often in the form of a SMBus, or System Management Bus, which is
-	  basically the same as I2C but which uses only a subset of the I2C
-	  protocol.
-
-	  You will also want the latest user-space utilties: you can find them
-	  in the lm_sensors package, which you can download at 
-	  http://www.lm-sensors.nu
-
 config I2C_AMD756
 	tristate "  AMD 756/766"
-	depends on I2C_MAINBOARD
 	help
 	  If you say yes to this option, support will be included for the AMD
 	  756/766/768 mainboard I2C interfaces.
@@ -37,7 +23,6 @@
 
 config I2C_AMD8111
 	tristate "  AMD 8111"
-	depends on I2C_MAINBOARD
 	help
 	  If you say yes to this option, support will be included for the AMD
 	  8111 mainboard I2C interfaces.
--- 1.1/drivers/i2c/busses/Makefile	Wed Dec 18 16:41:22 2002
+++ edited/drivers/i2c/busses/Makefile	Sun Dec 29 18:10:44 2002
@@ -2,6 +2,5 @@
 # Makefile for the kernel hardware sensors bus drivers.
 #
 
-obj-$(CONFIG_I2C_MAINBOARD)	+= i2c-mainboard.o
 obj-$(CONFIG_I2C_AMD756)	+= i2c-amd756.o
--- 1.1/drivers/i2c/busses/i2c-mainboard.c	Sun Dec  1 19:42:06 2002
+++ edited/drivers/i2c/busses/i2c-mainboard.c	Sun Dec 29 18:10:37 2002
@@ -1,34 +0,0 @@
-/*
-    i2c-mainboard.c - Part of lm_sensors, Linux kernel modules for hardware
-                monitoring
-    Copyright (c) 1998, 1999  Frodo Looijaard <frodol@dds.nl> 
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/* Not configurable as a module */
-
-#include <linux/init.h>
-
-extern int i2c_amd756_init(void);
-
-int __init i2c_mainboard_init_all(void)
-{
-#ifdef CONFIG_I2C_AMD756
-	i2c_amd756_init();
-#endif
-
-	return 0;
-}
--- 1.1/drivers/i2c/chips/Kconfig	Sun Dec  1 19:42:06 2002
+++ edited/drivers/i2c/chips/Kconfig	Sun Dec 29 19:30:33 2002
@@ -5,22 +5,8 @@
 
 menu "I2C Hardware Sensors Chip support"
 
-config SENSORS
-	bool "Hardware sensors chip support"
-	depends on EXPERIMENTAL && I2C && I2C_PROC
-	help
-	  Many modern mainboards have some kind of I2C interface integrated.
-	  This is often in the form of a SMBus, or System Management Bus, which
-	  is basically the same as I2C but which uses only a subset of the I2C
-	  protocol.
-
-	  You will also want the latest user-space utilties: you can find them
-	  in the lm_sensors package, which you can download at 
-	  http://www.lm-sensors.nu
-
 config SENSORS_ADM1021
 	tristate "  Analog Devices ADM1021 and compatibles"
-	depends on SENSORS
 	help
 	  If you say yes here you get support for Analog Devices ADM1021 
 	  and ADM1023 sensor chips and clones: Maxim MAX1617 and MAX1617A,
@@ -37,7 +23,6 @@
 
 config SENSORS_LM75
 	tristate "  National Semiconductors LM75 and compatibles"
-	depends on SENSORS
 	help
 	  If you say yes here you get support for National Semiconductor LM75
 	  sensor chips and clones: Dallas Semi DS75 and DS1775, TelCon
@@ -51,4 +36,3 @@
 	  http://www.lm-sensors.nu
 
 endmenu
-
--- 1.1/drivers/i2c/chips/Makefile	Wed Dec 18 16:41:29 2002
+++ edited/drivers/i2c/chips/Makefile	Sun Dec 29 18:17:10 2002
@@ -2,6 +2,5 @@
 # Makefile for the kernel hardware sensors chip drivers.
 #
 
-obj-$(CONFIG_SENSORS)		+= sensors.o
 obj-$(CONFIG_SENSORS_ADM1021)	+= adm1021.o
 obj-$(CONFIG_SENSORS_LM75)	+= lm75.o
--- 1.1/drivers/i2c/chips/adm1021.c	Sun Dec  1 19:51:47 2002
+++ edited/drivers/i2c/chips/adm1021.c	Sun Dec 29 20:13:58 2002
@@ -26,7 +26,6 @@
 #include <linux/sensors.h>
 #include <linux/init.h>
 
-MODULE_LICENSE("GPL");
 
 /* Addresses to scan */
 static unsigned short normal_i2c[] = { SENSORS_I2C_END };
@@ -108,10 +107,6 @@
 	   remote_temp_offset, remote_temp_offset_prec;
 };
 
-int __init sensors_adm1021_init(void);
-void __exit sensors_adm1021_exit(void);
-static int adm1021_cleanup(void);
-
 static int adm1021_attach_adapter(struct i2c_adapter *adapter);
 static int adm1021_detect(struct i2c_adapter *adapter, int address,
 			  unsigned short flags, int kind);
@@ -178,9 +173,6 @@
 	{0}
 };
 
-/* Used by init/cleanup */
-static int __initdata adm1021_initialized = 0;
-
 /* I choose here for semi-static allocation. Complete dynamic
    allocation could also be used; the code needed for this would probably
    take more memory than the datastructure takes now. */
@@ -585,46 +577,21 @@
 	}
 }
 
-int __init sensors_adm1021_init(void)
+static int __init sensors_adm1021_init(void)
 {
-	int res;
 
-	printk("adm1021.o version %s (%s)\n", LM_VERSION, LM_DATE);
-	adm1021_initialized = 0;
-	if ((res = i2c_add_driver(&adm1021_driver))) {
-		printk
-		    ("adm1021.o: Driver registration failed, module not inserted.\n");
-		adm1021_cleanup();
-		return res;
-	}
-	adm1021_initialized++;
-	return 0;
+	return i2c_add_driver(&adm1021_driver);
 }
 
-void __exit sensors_adm1021_exit(void)
+static void __exit sensors_adm1021_exit(void)
 {
-	adm1021_cleanup();
-}
-
-static int adm1021_cleanup(void)
-{
-	int res;
-
-	if (adm1021_initialized >= 1) {
-		if ((res = i2c_del_driver(&adm1021_driver))) {
-			printk
-			    ("adm1021.o: Driver deregistration failed, module not removed.\n");
-			return res;
-		}
-		adm1021_initialized--;
-	}
-
-	return 0;
+	i2c_del_driver(&adm1021_driver);
 }
 
 MODULE_AUTHOR
     ("Frodo Looijaard <frodol@dds.nl> and Philip Edelbrock <phil@netroedge.com>");
 MODULE_DESCRIPTION("adm1021 driver");
+MODULE_LICENSE("GPL");
 
 MODULE_PARM(read_only, "i");
 MODULE_PARM_DESC(read_only, "Don't set any values, read only mode");
--- 1.1/drivers/i2c/chips/lm75.c	Sun Dec  1 19:49:04 2002
+++ edited/drivers/i2c/chips/lm75.c	Sun Dec 29 20:14:30 2002
@@ -25,7 +25,6 @@
 #include <linux/sensors.h>
 #include <linux/init.h>
 
-MODULE_LICENSE("GPL");
 
 /* Addresses to scan */
 static unsigned short normal_i2c[] = { SENSORS_I2C_END };
@@ -66,10 +65,6 @@
 	u16 temp, temp_os, temp_hyst;	/* Register values */
 };
 
-int __init sensors_lm75_init(void);
-void __exit sensors_lm75_exit(void);
-static int lm75_cleanup(void);
-
 static int lm75_attach_adapter(struct i2c_adapter *adapter);
 static int lm75_detect(struct i2c_adapter *adapter, int address,
 		       unsigned short flags, int kind);
@@ -110,9 +105,6 @@
 	{0}
 };
 
-/* Used by init/cleanup */
-static int __initdata lm75_initialized = 0;
-
 static int lm75_id = 0;
 
 int lm75_attach_adapter(struct i2c_adapter *adapter)
@@ -188,10 +180,7 @@
 		type_name = "lm75";
 		client_name = "LM75 chip";
 	} else {
-#ifdef DEBUG
-		printk("lm75.o: Internal error: unknown kind (%d)?!?",
-		       kind);
-#endif
+		pr_debug("lm75.o: Internal error: unknown kind (%d)?!?", kind);
 		goto error1;
 	}
 
@@ -314,10 +303,7 @@
 
 	if ((jiffies - data->last_updated > HZ + HZ / 2) ||
 	    (jiffies < data->last_updated) || !data->valid) {
-
-#ifdef DEBUG
-		printk("Starting lm75 update\n");
-#endif
+		pr_debug("Starting lm75 update\n");
 
 		data->temp = lm75_read_value(client, LM75_REG_TEMP);
 		data->temp_os = lm75_read_value(client, LM75_REG_TEMP_OS);
@@ -359,45 +345,17 @@
 
 int __init sensors_lm75_init(void)
 {
-	int res;
-
-	printk("lm75.o version %s (%s)\n", LM_VERSION, LM_DATE);
-	lm75_initialized = 0;
-	if ((res = i2c_add_driver(&lm75_driver))) {
-		printk
-		    ("lm75.o: Driver registration failed, module not inserted.\n");
-		lm75_cleanup();
-		return res;
-	}
-	lm75_initialized++;
-	return 0;
-}
-
-void __exit sensors_lm75_exit(void)
-{
-	lm75_cleanup();
+	return i2c_add_driver(&lm75_driver);
 }
 
-static int lm75_cleanup(void)
+static void __exit sensors_lm75_exit(void)
 {
-	int res;
-
-	if (lm75_initialized >= 1) {
-		if ((res = i2c_del_driver(&lm75_driver))) {
-			printk
-			    ("lm75.o: Driver deregistration failed, module not removed.\n");
-			return res;
-		}
-		lm75_initialized--;
-	}
-
-	return 0;
+	i2c_del_driver(&lm75_driver);
 }
 
-EXPORT_NO_SYMBOLS;
-
 MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>");
 MODULE_DESCRIPTION("LM75 driver");
+MODULE_LICENSE("GPL");
 
 module_init(sensors_lm75_init);
 module_exit(sensors_lm75_exit);
--- 1.1/drivers/i2c/chips/sensors.c	Sun Dec  1 19:42:06 2002
+++ edited/drivers/i2c/chips/sensors.c	Sun Dec 29 18:17:05 2002
@@ -1,37 +0,0 @@
-/*
-    sensors.c - Part of lm_sensors, Linux kernel modules for hardware
-                monitoring
-    Copyright (c) 1998, 1999  Frodo Looijaard <frodol@dds.nl> 
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-/* Not configurable as a module */
-
-#include <linux/init.h>
-
-extern int sensors_adm1021_init(void);
-extern int sensors_lm75_init(void);
-
-int __init sensors_init_all(void)
-{
-#ifdef CONFIG_SENSORS_ADM1021
-	sensors_adm1021_init();
-#endif
-#ifdef CONFIG_SENSORS_LM75
-	sensors_lm75_init();
-#endif
-	return 0;
-}
-
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/