Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Add .class entry to i2c adapter



Hi,

I've dug out the patches I preparied earlier this year which add a
.class entry to the i2c adapter. This makes it possible for the i2c core
to match the .class entry of both i2c client and i2c adapter and thus
effectively isolate the busses of dvb adapters, so they can only be used
by i2c dvb clients.

The patches come in 2 mails. Does the mailing list have a size limit?

==>1 use I2C_CLASS_TV_ANALOG
#drivers/media/video/saa7110.c
#drivers/media/video/bt856.c
#drivers/media/video/saa7185.c
#drivers/media/video/bt819.c
#drivers/media/video/saa7111.c
#drivers/media/video/tuner-3036.c
#drivers/media/video/tea6420.c
#drivers/media/video/vpx3220.c
#drivers/media/video/tda9840.c
#drivers/media/video/tea6415c.c
#drivers/media/video/saa7114.c
#drivers/media/video/adv7175.c
#drivers/media/video/adv7170.c

==>2 I2C_CLASS_TV_ANALOG + tiny cleanups
#drivers/media/video/tda9887.c
#drivers/media/video/saa7134/saa6752hs.c
#drivers/media/video/tvaudio.c
#drivers/media/video/tda9875.c
#drivers/media/video/msp3400.c
#drivers/media/video/tda7432.c
#drivers/media/video/bt832.c
#drivers/media/video/saa5249.c
#drivers/media/video/tuner.c
#drivers/media/video/tvmixer.c
#drivers/media/video/saa5246a.c

==>3 I2C_CLASS_HWMON
#drivers/i2c/chips/w83781d.c
#drivers/i2c/chips/adm1021.c
#drivers/i2c/chips/via686a.c
#drivers/i2c/chips/it87.c
#drivers/i2c/chips/lm78.c
#drivers/i2c/chips/lm80.c
#drivers/i2c/chips/lm83.c
#drivers/i2c/chips/lm85.c
#drivers/i2c/chips/lm90.c
#drivers/i2c/chips/asb100.c
#drivers/i2c/chips/w83l785ts.c
#drivers/i2c/chips/fscher.c
#drivers/i2c/chips/gl518sm.c
#drivers/i2c/chips/eeprom.c
#drivers/i2c/chips/ds1621.c
#drivers/i2c/chips/w83627hf.c
#drivers/i2c/chips/pcf8574.c
#drivers/i2c/chips/pcf8591.c
#drivers/i2c/i2c-dev.c

==>4 various cleanups, should be ok
#drivers/ieee1394/pcilynx.c => I2C_CLASS_NONE
#drivers/macintosh/therm_adt746x.c => I2C_CLASS_HWMON
#drivers/macintosh/therm_pm72.c => I2C_CLASS_HWMON
#drivers/macintosh/therm_windtunnel.c => I2C_CLASS_HWMON
#drivers/acorn/char/pcf8583.c => I2C_CLASS_ALL
#drivers/acorn/char/i2c.c => I2C_CLASS_ALL
#drivers/i2c/busses/i2c-keywest.c: => I2C_CLASS_HWMON | I2C_CLASS_SOUND;
#sound/ppc/keywest.c => I2C_CLASS_SOUND
#sound/oss/dmasound/dac3550a.c => I2C_CLASS_SOUND
#sound/oss/dmasound/tas_common.c => I2C_CLASS_SOUND

==>5 unclear what these are about
#drivers/i2c/algos/i2c-algo-pcf.c => I2C_CLASS_ALL
#drivers/i2c/busses/i2c-elektor.c => I2C_CLASS_ALL
#drivers/video/aty/radeon_i2c.c => I2C_CLASS_NONE
#drivers/video/matrox/i2c-matroxfb.c => I2C_CLASS_DDC and
I2C_CLASS_TV_ANALOG
#drivers/video/matrox/matroxfb_maven.c => I2C_CLASS_TV_ANALOG
#drivers/media/video/zoran_card.c => I2C_CLASS_TV_ANALOG
#drivers/media/video/ir-kbd-i2c.c => I2C_CLASS_TV_ANALOG |
I2C_CLASS_TV_DIGITAL
#drivers/media/dvb/bt8xx/dvb-bt8xx.c => I2C_CLASS_ALL

==>6 busses converted to matching I2C_CLASS
#drivers/i2c/busses/i2c-ibm_iic.c: => I2C_CLASS_ALL
#drivers/i2c/busses/i2c-iop3xx.c:=> I2C_CLASS_ALL
#drivers/i2c/busses/scx200_i2c.c => I2C_CLASS_ALL
#drivers/i2c/busses/i2c-ite.c => I2C_CLASS_ALL
(drivers/i2c/algos/i2c-algo-ite.c:)

==>7 busses converted to I2C_CLASS_ALL
#drivers/i2c/busses/i2c-frodo.c => I2C_CLASS_ALL
#drivers/i2c/busses/i2c-i810.c => I2C_CLASS_ALL + I2C_CLASS_DDC
#drivers/i2c/busses/i2c-prosavage.c => I2C_CLASS_ALL + I2C_CLASS_DDC
#drivers/i2c/busses/i2c-savage4.c => I2C_CLASS_ALL
#drivers/i2c/busses/i2c-ixp4xx.c => I2C_CLASS_ALL, doesn't compile!?
#drivers/i2c/busses/i2c-hydra.c => I2C_CLASS_HWMON

The 8th patch makes the i2c-core check for matching .class entries. If
this is enabled and I have screwed up or forgot something then it's
possible that clients are not found anymore.

Please have a look at the patches and tell me what you think before I
submit these to the kernel mailinglist.

CU
Michael.

diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/adv7170.c linux-2.6-6-rc3-mm2/drivers/media/video/adv7170.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/adv7170.c	2004-05-09 11:03:04.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/adv7170.c	2004-05-09 11:28:12.000000000 +0200
@@ -516,6 +516,7 @@
 
 	.id = I2C_DRIVERID_ADV7170,
 	.flags = I2C_DF_NOTIFY,
+ 	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = adv7170_attach_adapter,
 	.detach_client = adv7170_detach_client,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/adv7175.c linux-2.6-6-rc3-mm2/drivers/media/video/adv7175.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/adv7175.c	2004-05-09 11:03:04.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/adv7175.c	2004-05-09 11:27:55.000000000 +0200
@@ -538,6 +538,7 @@
 
 	.id = I2C_DRIVERID_ADV7175,
 	.flags = I2C_DF_NOTIFY,
+ 	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = adv7175_attach_adapter,
 	.detach_client = adv7175_detach_client,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/bt819.c linux-2.6-6-rc3-mm2/drivers/media/video/bt819.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/bt819.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/bt819.c	2004-05-09 11:24:22.000000000 +0200
@@ -642,6 +642,7 @@
 
 	.id = I2C_DRIVERID_BT819,
 	.flags = I2C_DF_NOTIFY,
+	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = bt819_attach_adapter,
 	.detach_client = bt819_detach_client,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/bt856.c linux-2.6-6-rc3-mm2/drivers/media/video/bt856.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/bt856.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/bt856.c	2004-05-09 11:23:22.000000000 +0200
@@ -423,6 +423,7 @@
 
 	.id = I2C_DRIVERID_BT856,
 	.flags = I2C_DF_NOTIFY,
+	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = bt856_attach_adapter,
 	.detach_client = bt856_detach_client,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7110.c linux-2.6-6-rc3-mm2/drivers/media/video/saa7110.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7110.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/saa7110.c	2004-05-09 11:22:57.000000000 +0200
@@ -599,6 +599,7 @@
 
 	.id = I2C_DRIVERID_SAA7110,
 	.flags = I2C_DF_NOTIFY,
+	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = saa7110_attach_adapter,
 	.detach_client = saa7110_detach_client,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7111.c linux-2.6-6-rc3-mm2/drivers/media/video/saa7111.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7111.c	2004-05-09 11:06:43.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/saa7111.c	2004-05-09 11:24:54.000000000 +0200
@@ -608,7 +608,8 @@
 
 	.id = I2C_DRIVERID_SAA7111A,
 	.flags = I2C_DF_NOTIFY,
-
+	.class = I2C_CLASS_TV_ANALOG,
+	
 	.attach_adapter = saa7111_attach_adapter,
 	.detach_client = saa7111_detach_client,
 	.command = saa7111_command,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7114.c linux-2.6-6-rc3-mm2/drivers/media/video/saa7114.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7114.c	2004-05-09 11:03:04.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/saa7114.c	2004-05-09 11:27:15.000000000 +0200
@@ -1222,6 +1222,7 @@
 
 	.id = I2C_DRIVERID_SAA7114,
 	.flags = I2C_DF_NOTIFY,
+ 	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = saa7114_attach_adapter,
 	.detach_client = saa7114_detach_client,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7185.c linux-2.6-6-rc3-mm2/drivers/media/video/saa7185.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7185.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/saa7185.c	2004-05-09 11:23:55.000000000 +0200
@@ -505,6 +505,7 @@
 
 	.id = I2C_DRIVERID_SAA7185B,
 	.flags = I2C_DF_NOTIFY,
+	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = saa7185_attach_adapter,
 	.detach_client = saa7185_detach_client,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda9840.c linux-2.6-6-rc3-mm2/drivers/media/video/tda9840.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda9840.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tda9840.c	2004-05-09 11:26:35.000000000 +0200
@@ -263,6 +263,7 @@
 	.name		= "tda9840 driver",
 	.id		= I2C_DRIVERID_TDA9840,
 	.flags		= I2C_DF_NOTIFY,
+ 	.class 		= I2C_CLASS_TV_ANALOG,
         .attach_adapter = tda9840_attach,
         .detach_client	= tda9840_detach,
         .command	= tda9840_command,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tea6415c.c linux-2.6-6-rc3-mm2/drivers/media/video/tea6415c.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tea6415c.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tea6415c.c	2004-05-09 11:26:52.000000000 +0200
@@ -212,6 +212,7 @@
 	.name		= "tea6415c driver",
 	.id		= I2C_DRIVERID_TEA6415C,
 	.flags		= I2C_DF_NOTIFY,
+ 	.class 		= I2C_CLASS_TV_ANALOG,
         .attach_adapter = tea6415c_attach,
         .detach_client	= tea6415c_detach,
         .command	= tea6415c_command,
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tea6420.c linux-2.6-6-rc3-mm2/drivers/media/video/tea6420.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tea6420.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tea6420.c	2004-05-09 11:26:09.000000000 +0200
@@ -192,8 +192,9 @@
 	.name		= "tea6420 driver",
 	.id		= I2C_DRIVERID_TEA6420,
 	.flags		= I2C_DF_NOTIFY,
-        .attach_adapter = tea6420_attach,
+ 	.class 		= I2C_CLASS_TV_ANALOG,
+	.attach_adapter = tea6420_attach,
         .detach_client	= tea6420_detach,
         .command	= tea6420_command,
 };
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tuner-3036.c linux-2.6-6-rc3-mm2/drivers/media/video/tuner-3036.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tuner-3036.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tuner-3036.c	2004-05-09 11:25:25.000000000 +0200
@@ -185,6 +185,7 @@
 	.name		=	"sab3036",
 	.id		=	I2C_DRIVERID_SAB3036,
         .flags		=	I2C_DF_NOTIFY,
+	.class 		=	I2C_CLASS_TV_ANALOG,
 	.attach_adapter =	tuner_probe,
 	.detach_client  =	tuner_detach,
 	.command	=	tuner_command
@@ -200,8 +201,7 @@
 int __init
 tuner3036_init(void)
 {
-	i2c_add_driver(&i2c_driver_tuner);
-	return 0;
+	return i2c_add_driver(&i2c_driver_tuner);
 }
 
 void __exit
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/vpx3220.c linux-2.6-6-rc3-mm2/drivers/media/video/vpx3220.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/vpx3220.c	2004-05-09 11:03:03.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/vpx3220.c	2004-05-09 11:27:33.000000000 +0200
@@ -731,6 +731,7 @@
 
 	.id = I2C_DRIVERID_VPX3220,
 	.flags = I2C_DF_NOTIFY,
+ 	.class = I2C_CLASS_TV_ANALOG,
 
 	.attach_adapter = vpx3220_attach_adapter,
 	.detach_client = vpx3220_detach_client,

diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/bt832.c linux-2.6-6-rc3-mm2/drivers/media/video/bt832.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/bt832.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/bt832.c	2004-05-09 14:49:58.000000000 +0200
@@ -197,9 +197,7 @@
 
 static int bt832_probe(struct i2c_adapter *adap)
 {
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, bt832_attach);
-	return 0;
+	return i2c_probe(adap, &addr_data, bt832_attach);
 }
 
 static int bt832_detach(struct i2c_client *client)
@@ -243,6 +241,7 @@
         .name           = "i2c bt832 driver",
         .id             = -1, /* FIXME */
         .flags          = I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
         .attach_adapter = bt832_probe,
         .detach_client  = bt832_detach,
         .command        = bt832_command,
@@ -257,8 +256,7 @@
 
 int bt832_init_module(void)
 {
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void bt832_cleanup_module(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/msp3400.c linux-2.6-6-rc3-mm2/drivers/media/video/msp3400.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/msp3400.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/msp3400.c	2004-05-09 14:48:30.000000000 +0200
@@ -1222,6 +1222,7 @@
         .name           = "i2c msp3400 driver",
         .id             = I2C_DRIVERID_MSP3400,
         .flags          = I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
         .attach_adapter = msp_probe,
         .detach_client  = msp_detach,
         .command        = msp_command,
@@ -1353,19 +1354,7 @@
 
 static int msp_probe(struct i2c_adapter *adap)
 {
-#ifdef I2C_CLASS_TV_ANALOG
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, msp_attach);
-#else
-	switch (adap->id) {
-	case I2C_ALGO_BIT | I2C_HW_SMBUS_VOODOO3:
-	case I2C_ALGO_BIT | I2C_HW_B_BT848:
-	//case I2C_ALGO_SAA7134:
-		return i2c_probe(adap, &addr_data, msp_attach);
-		break;
-	}
-#endif
-	return 0;
+	return i2c_probe(adap, &addr_data, msp_attach);
 }
 
 static void msp_wake_thread(struct i2c_client *client)
@@ -1558,8 +1547,7 @@
 
 static int msp3400_init_module(void)
 {
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void msp3400_cleanup_module(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa5246a.c linux-2.6-6-rc3-mm2/drivers/media/video/saa5246a.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa5246a.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/saa5246a.c	2004-05-09 14:52:53.000000000 +0200
@@ -143,9 +143,7 @@
  */
 static int saa5246a_probe(struct i2c_adapter *adap)
 {
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, saa5246a_attach);
-	return 0;
+	return i2c_probe(adap, &addr_data, saa5246a_attach);
 }
 
 static int saa5246a_detach(struct i2c_client *client)
@@ -174,6 +172,7 @@
 	.name 		= IF_NAME,		/* name */
 	.id 		= I2C_DRIVERID_SAA5249, /* in i2c.h */
 	.flags 		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
 	.attach_adapter = saa5246a_probe,
 	.detach_client  = saa5246a_detach,
 	.command 	= saa5246a_command
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa5249.c linux-2.6-6-rc3-mm2/drivers/media/video/saa5249.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa5249.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/saa5249.c	2004-05-09 14:50:30.000000000 +0200
@@ -219,9 +219,7 @@
  
 static int saa5249_probe(struct i2c_adapter *adap)
 {
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, saa5249_attach);
-	return 0;
+	return i2c_probe(adap, &addr_data, saa5249_attach);
 }
 
 static int saa5249_detach(struct i2c_client *client)
@@ -249,6 +247,7 @@
 	.name 		= IF_NAME,		/* name */
 	.id 		= I2C_DRIVERID_SAA5249, /* in i2c.h */
 	.flags 		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
 	.attach_adapter = saa5249_probe,
 	.detach_client  = saa5249_detach,
 	.command 	= saa5249_command
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7134/saa6752hs.c linux-2.6-6-rc3-mm2/drivers/media/video/saa7134/saa6752hs.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/saa7134/saa6752hs.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/saa7134/saa6752hs.c	2004-05-09 14:47:01.000000000 +0200
@@ -335,9 +335,7 @@
 
 static int saa6752hs_probe(struct i2c_adapter *adap)
 {
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, saa6752hs_attach);
-	return 0;
+	return i2c_probe(adap, &addr_data, saa6752hs_attach);
 }
 
 static int saa6752hs_detach(struct i2c_client *client)
@@ -376,6 +373,7 @@
         .name           = "i2c saa6752hs MPEG encoder",
         .id             = I2C_DRIVERID_SAA6752HS,
         .flags          = I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
         .attach_adapter = saa6752hs_probe,
         .detach_client  = saa6752hs_detach,
         .command        = saa6752hs_command,
@@ -390,8 +388,7 @@
 
 static int saa6752hs_init_module(void)
 {
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void saa6752hs_cleanup_module(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda7432.c linux-2.6-6-rc3-mm2/drivers/media/video/tda7432.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda7432.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tda7432.c	2004-05-09 14:49:17.000000000 +0200
@@ -338,14 +338,7 @@
 
 static int tda7432_probe(struct i2c_adapter *adap)
 {
-#ifdef I2C_CLASS_TV_ANALOG
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, tda7432_attach);
-#else
-	if (adap->id == (I2C_ALGO_BIT | I2C_HW_B_BT848))
-		return i2c_probe(adap, &addr_data, tda7432_attach);
-#endif
-	return 0;
+	return i2c_probe(adap, &addr_data, tda7432_attach);
 }
 
 static int tda7432_detach(struct i2c_client *client)
@@ -520,6 +513,7 @@
         .name            = "i2c tda7432 driver",
 	.id              = I2C_DRIVERID_TDA7432,
         .flags           = I2C_DF_NOTIFY,
+	.class		 = I2C_CLASS_TV_ANALOG,
 	.attach_adapter  = tda7432_probe,
         .detach_client   = tda7432_detach,
         .command         = tda7432_command,
@@ -538,8 +532,7 @@
 		printk(KERN_ERR "tda7432: loudness parameter must be between 0 and 15\n");
 		return -EINVAL;
 	}
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void tda7432_fini(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda9875.c linux-2.6-6-rc3-mm2/drivers/media/video/tda9875.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda9875.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tda9875.c	2004-05-09 14:48:00.000000000 +0200
@@ -272,14 +272,7 @@
 
 static int tda9875_probe(struct i2c_adapter *adap)
 {
-#ifdef I2C_CLASS_TV_ANALOG
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, tda9875_attach);
-#else
-	if (adap->id == (I2C_ALGO_BIT | I2C_HW_B_BT848))
-		return i2c_probe(adap, &addr_data, tda9875_attach);
-#endif
-	return 0;
+	return i2c_probe(adap, &addr_data, tda9875_attach);
 }
 
 static int tda9875_detach(struct i2c_client *client)
@@ -391,6 +384,7 @@
         .name           = "i2c tda9875 driver",
         .id             = I2C_DRIVERID_TDA9875,
         .flags          = I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
 	.attach_adapter = tda9875_probe,
         .detach_client  = tda9875_detach,
         .command        = tda9875_command,
@@ -405,8 +399,7 @@
 
 static int tda9875_init(void)
 {
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void tda9875_fini(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda9887.c linux-2.6-6-rc3-mm2/drivers/media/video/tda9887.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tda9887.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tda9887.c	2004-05-09 14:46:31.000000000 +0200
@@ -370,19 +370,7 @@
 
 static int tda9887_probe(struct i2c_adapter *adap)
 {
-#ifdef I2C_CLASS_TV_ANALOG
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, tda9887_attach);
-#else
-	switch (adap->id) {
-	case I2C_ALGO_BIT | I2C_HW_B_BT848:
-	case I2C_ALGO_BIT | I2C_HW_B_RIVA:
-	case I2C_ALGO_SAA7134:
-		return i2c_probe(adap, &addr_data, tda9887_attach);
-		break;
-	}
-#endif
-	return 0;
+	return i2c_probe(adap, &addr_data, tda9887_attach);
 }
 
 static int tda9887_detach(struct i2c_client *client)
@@ -447,6 +435,7 @@
         .name           = "i2c tda9887 driver",
         .id             = -1, /* FIXME */
         .flags          = I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
         .attach_adapter = tda9887_probe,
         .detach_client  = tda9887_detach,
         .command        = tda9887_command,
@@ -460,8 +449,7 @@
 
 static int tda9887_init_module(void)
 {
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void tda9887_cleanup_module(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tuner.c linux-2.6-6-rc3-mm2/drivers/media/video/tuner.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tuner.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tuner.c	2004-05-09 14:51:10.000000000 +0200
@@ -1067,21 +1067,7 @@
 	}
 	this_adap = 0;
 
-#ifdef I2C_CLASS_TV_ANALOG
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, tuner_attach);
-#else
-	switch (adap->id) {
-	case I2C_ALGO_BIT | I2C_HW_SMBUS_VOODOO3:
-	case I2C_ALGO_BIT | I2C_HW_B_BT848:
-	case I2C_ALGO_BIT | I2C_HW_B_RIVA:
-	case I2C_ALGO_SAA7134:
-	case I2C_ALGO_SAA7146:
-		return i2c_probe(adap, &addr_data, tuner_attach);
-		break;
-	}
-#endif
-	return 0;
+	return i2c_probe(adap, &addr_data, tuner_attach);
 }
 
 static int tuner_detach(struct i2c_client *client)
@@ -1184,6 +1170,7 @@
         .name           = "i2c TV tuner driver",
         .id             = I2C_DRIVERID_TUNER,
         .flags          = I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_TV_ANALOG,
         .attach_adapter = tuner_probe,
         .detach_client  = tuner_detach,
         .command        = tuner_command,
@@ -1197,8 +1184,7 @@
 
 static int tuner_init_module(void)
 {
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void tuner_cleanup_module(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tvaudio.c linux-2.6-6-rc3-mm2/drivers/media/video/tvaudio.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tvaudio.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tvaudio.c	2004-05-09 14:47:38.000000000 +0200
@@ -1497,18 +1497,7 @@
 
 static int chip_probe(struct i2c_adapter *adap)
 {
-#ifdef I2C_CLASS_TV_ANALOG
-	if (adap->class & I2C_CLASS_TV_ANALOG)
-		return i2c_probe(adap, &addr_data, chip_attach);
-#else
-	switch (adap->id) {
-	case I2C_ALGO_BIT | I2C_HW_B_BT848:
-	case I2C_ALGO_BIT | I2C_HW_B_RIVA:
-	case I2C_ALGO_SAA7134:
-		return i2c_probe(adap, &addr_data, chip_attach);
-	}
-#endif
-	return 0;
+	return i2c_probe(adap, &addr_data, chip_attach);
 }
 
 static int chip_detach(struct i2c_client *client)
@@ -1639,6 +1628,7 @@
         .name            = "generic i2c audio driver",
         .id              = I2C_DRIVERID_TVAUDIO,
         .flags           = I2C_DF_NOTIFY,
+	.class		 = I2C_CLASS_TV_ANALOG,
         .attach_adapter  = chip_probe,
         .detach_client   = chip_detach,
         .command         = chip_command,
@@ -1659,8 +1649,7 @@
 	for (desc = chiplist; desc->name != NULL; desc++)
 		printk("%s%s", (desc == chiplist) ? "" : ",",desc->name);
 	printk("\n");
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void audiochip_cleanup_module(void)
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/tvmixer.c linux-2.6-6-rc3-mm2/drivers/media/video/tvmixer.c
--- xx-linux-2.6-6-rc3-mm2/drivers/media/video/tvmixer.c	2004-05-09 11:11:11.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/media/video/tvmixer.c	2004-05-09 14:52:10.000000000 +0200
@@ -232,6 +232,7 @@
 	.flags           = I2C_DF_NOTIFY,
         .detach_adapter  = tvmixer_adapters,
 #endif
+	.class		 = I2C_CLASS_TV_ANALOG,
         .attach_adapter  = tvmixer_adapters,
         .detach_client   = tvmixer_clients,
 };
@@ -263,23 +264,6 @@
 	struct video_audio va;
 	int i,minor;
 
-#ifdef I2C_CLASS_TV_ANALOG
-	if (!(client->adapter->class & I2C_CLASS_TV_ANALOG))
-		return -1;
-#else
-	/* TV card ??? */
-	switch (client->adapter->id) {
-	case I2C_ALGO_BIT | I2C_HW_SMBUS_VOODOO3:
-	case I2C_ALGO_BIT | I2C_HW_B_BT848:
-	case I2C_ALGO_BIT | I2C_HW_B_RIVA:
-		/* ok, have a look ... */
-		break;
-	default:
-		/* ignore that one */
-		return -1;
-	}
-#endif
-
 	/* unregister ?? */
 	for (i = 0; i < DEV_MAX; i++) {
 		if (devices[i].dev == client) {
@@ -334,8 +318,7 @@
 	
 	for (i = 0; i < DEV_MAX; i++)
 		devices[i].minor = -1;
-	i2c_add_driver(&driver);
-	return 0;
+	return i2c_add_driver(&driver);
 }
 
 static void tvmixer_cleanup_module(void)

diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/adm1021.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/adm1021.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/adm1021.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/adm1021.c	2004-05-09 16:17:00.000000000 +0200
@@ -144,6 +144,7 @@
 	.name		= "adm1021",
 	.id		= I2C_DRIVERID_ADM1021,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= adm1021_attach_adapter,
 	.detach_client	= adm1021_detach_client,
 };
@@ -200,8 +201,6 @@
 
 static int adm1021_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, adm1021_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/asb100.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/asb100.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/asb100.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/asb100.c	2004-05-09 16:13:42.000000000 +0200
@@ -233,6 +233,7 @@
 	.name		= "asb100",
 	.id		= I2C_DRIVERID_ASB100,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= asb100_attach_adapter,
 	.detach_client	= asb100_detach_client,
 };
@@ -609,8 +610,6 @@
  */
 static int asb100_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, asb100_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/ds1621.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/ds1621.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/ds1621.c	2004-05-09 11:05:29.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/ds1621.c	2004-05-09 16:11:42.000000000 +0200
@@ -92,6 +92,7 @@
 	.name		= "ds1621",
 	.id		= I2C_DRIVERID_DS1621,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= ds1621_attach_adapter,
 	.detach_client	= ds1621_detach_client,
 };
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/eeprom.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/eeprom.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/eeprom.c	2004-05-09 11:05:29.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/eeprom.c	2004-05-09 16:11:59.000000000 +0200
@@ -82,6 +82,7 @@
 	.name		= "eeprom",
 	.id		= I2C_DRIVERID_EEPROM,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= eeprom_attach_adapter,
 	.detach_client	= eeprom_detach_client,
 };
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/fscher.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/fscher.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/fscher.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/fscher.c	2004-05-09 16:13:00.000000000 +0200
@@ -124,6 +124,7 @@
 	.name		= "fscher",
 	.id		= I2C_DRIVERID_FSCHER,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= fscher_attach_adapter,
 	.detach_client	= fscher_detach_client,
 };
@@ -293,8 +294,6 @@
 
 static int fscher_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, fscher_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/gl518sm.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/gl518sm.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/gl518sm.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/gl518sm.c	2004-05-09 16:12:21.000000000 +0200
@@ -156,6 +156,7 @@
 	.name		= "gl518sm",
 	.id		= I2C_DRIVERID_GL518,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= gl518_attach_adapter,
 	.detach_client	= gl518_detach_client,
 };
@@ -335,8 +336,6 @@
 
 static int gl518_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, gl518_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/it87.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/it87.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/it87.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/it87.c	2004-05-09 16:16:14.000000000 +0200
@@ -173,6 +173,7 @@
 	.name		= "it87",
 	.id		= I2C_DRIVERID_IT87,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= it87_attach_adapter,
 	.detach_client	= it87_detach_client,
 };
@@ -500,8 +501,6 @@
      * when a new adapter is inserted (and it87_driver is still present) */
 static int it87_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, it87_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm78.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm78.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm78.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm78.c	2004-05-09 16:15:57.000000000 +0200
@@ -229,6 +229,7 @@
 	.name		= "lm78",
 	.id		= I2C_DRIVERID_LM78,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= lm78_attach_adapter,
 	.detach_client	= lm78_detach_client,
 };
@@ -488,8 +489,6 @@
      * when a new adapter is inserted (and lm78_driver is still present) */
 static int lm78_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, lm78_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm80.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm80.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm80.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm80.c	2004-05-09 16:15:28.000000000 +0200
@@ -156,6 +156,7 @@
 	.name		= "lm80",
 	.id		= I2C_DRIVERID_LM80,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= lm80_attach_adapter,
 	.detach_client	= lm80_detach_client,
 };
@@ -376,8 +377,6 @@
 
 static int lm80_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, lm80_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm83.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm83.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm83.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm83.c	2004-05-09 16:15:08.000000000 +0200
@@ -125,6 +125,7 @@
 	.name		= "lm83",
 	.id		= I2C_DRIVERID_LM83,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= lm83_attach_adapter,
 	.detach_client	= lm83_detach_client,
 };
@@ -216,8 +217,6 @@
 
 static int lm83_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, lm83_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm85.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm85.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm85.c	2004-05-09 11:05:29.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm85.c	2004-05-09 16:14:53.000000000 +0200
@@ -403,6 +403,7 @@
 	.name           = "lm85",
 	.id             = I2C_DRIVERID_LM85,
 	.flags          = I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter = lm85_attach_adapter,
 	.detach_client  = lm85_detach_client,
 };
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm90.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm90.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm90.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/lm90.c	2004-05-09 16:14:33.000000000 +0200
@@ -146,6 +146,7 @@
 	.name		= "lm90",
 	.id		= I2C_DRIVERID_LM90,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= lm90_attach_adapter,
 	.detach_client	= lm90_detach_client,
 };
@@ -274,8 +275,6 @@
 
 static int lm90_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, lm90_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8574.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8574.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8574.c	2004-05-09 11:05:29.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8574.c	2004-05-09 16:10:36.000000000 +0200
@@ -73,6 +73,7 @@
 	.name		= "pcf8574",
 	.id		= I2C_DRIVERID_PCF8574,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= pcf8574_attach_adapter,
 	.detach_client	= pcf8574_detach_client,
 };
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8591.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8591.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8591.c	2004-05-09 11:05:29.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/pcf8591.c	2004-05-09 16:10:09.000000000 +0200
@@ -95,6 +95,7 @@
 	.name		= "pcf8591",
 	.id		= I2C_DRIVERID_PCF8591,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= pcf8591_attach_adapter,
 	.detach_client	= pcf8591_detach_client,
 };
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/via686a.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/via686a.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/via686a.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/via686a.c	2004-05-09 16:16:46.000000000 +0200
@@ -586,6 +586,7 @@
 	.name		= "via686a",
 	.id		= I2C_DRIVERID_VIA686A,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= via686a_attach_adapter,
 	.detach_client	= via686a_detach_client,
 };
@@ -594,8 +595,6 @@
 /* This is called when the module is loaded */
 static int via686a_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, via686a_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83627hf.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83627hf.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83627hf.c	2004-05-09 11:05:29.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83627hf.c	2004-05-09 16:11:27.000000000 +0200
@@ -331,6 +331,7 @@
 	.name		= "w83627hf",
 	.id		= I2C_DRIVERID_W83627HF,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= w83627hf_attach_adapter,
 	.detach_client	= w83627hf_detach_client,
 };
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83781d.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83781d.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83781d.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83781d.c	2004-05-09 16:17:18.000000000 +0200
@@ -281,6 +281,7 @@
 	.name = "w83781d",
 	.id = I2C_DRIVERID_W83781D,
 	.flags = I2C_DF_NOTIFY,
+	.class = I2C_CLASS_HWMON,
 	.attach_adapter = w83781d_attach_adapter,
 	.detach_client = w83781d_detach_client,
 };
@@ -905,8 +906,6 @@
 static int
 w83781d_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, w83781d_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83l785ts.c linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83l785ts.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83l785ts.c	2004-05-09 11:11:10.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/chips/w83l785ts.c	2004-05-09 16:13:22.000000000 +0200
@@ -96,6 +96,7 @@
 	.name		= "w83l785ts",
 	.id		= I2C_DRIVERID_W83L785TS,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_HWMON,
 	.attach_adapter	= w83l785ts_attach_adapter,
 	.detach_client	= w83l785ts_detach_client,
 };
@@ -145,8 +146,6 @@
 
 static int w83l785ts_attach_adapter(struct i2c_adapter *adapter)
 {
-	if (!(adapter->class & I2C_CLASS_HWMON))
-		return 0;
 	return i2c_detect(adapter, &addr_data, w83l785ts_detect);
 }
 
diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/i2c-dev.c linux-2.6-6-rc3-mm2/drivers/i2c/i2c-dev.c
--- xx-linux-2.6-6-rc3-mm2/drivers/i2c/i2c-dev.c	2004-05-09 11:05:29.000000000 +0200
+++ linux-2.6-6-rc3-mm2/drivers/i2c/i2c-dev.c	2004-05-09 16:06:33.000000000 +0200
@@ -500,6 +500,7 @@
 	.name		= "dev_driver",
 	.id		= I2C_DRIVERID_I2CDEV,
 	.flags		= I2C_DF_NOTIFY,
+	.class		= I2C_CLASS_ALL,
 	.attach_adapter	= i2cdev_attach_adapter,
 	.detach_adapter	= i2cdev_detach_adapter,
 	.detach_client	= i2cdev_detach_client,


Home | Main Index | Thread Index