diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/algos/i2c-algo-pcf.c linux-2.6-6-rc3-mm2/drivers/i2c/algos/i2c-algo-pcf.c --- xx-linux-2.6-6-rc3-mm2/drivers/i2c/algos/i2c-algo-pcf.c 2004-05-09 11:03:03.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/i2c/algos/i2c-algo-pcf.c 2004-05-09 18:00:47.000000000 +0200 @@ -449,7 +449,8 @@ adap->id |= pcf_algo.id; adap->algo = &pcf_algo; - + adap->class = I2C_CLASS_ALL; + adap->timeout = 100; /* default values, should */ adap->retries = 3; /* be replaced by defines */ diff -ura xx-linux-2.6-6-rc3-mm2/drivers/i2c/busses/i2c-elektor.c linux-2.6-6-rc3-mm2/drivers/i2c/busses/i2c-elektor.c --- xx-linux-2.6-6-rc3-mm2/drivers/i2c/busses/i2c-elektor.c 2004-05-09 11:03:02.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/i2c/busses/i2c-elektor.c 2004-05-09 17:57:16.000000000 +0200 @@ -171,6 +171,7 @@ .owner = THIS_MODULE, .id = I2C_HW_P_ELEK, .algo_data = &pcf_isa_data, + .class = I2C_CLASS_ALL, .name = "PCF8584 ISA adapter", }; diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/dvb/bt8xx/dvb-bt8xx.c linux-2.6-6-rc3-mm2/drivers/media/dvb/bt8xx/dvb-bt8xx.c --- xx-linux-2.6-6-rc3-mm2/drivers/media/dvb/bt8xx/dvb-bt8xx.c 2004-05-09 11:05:31.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/media/dvb/bt8xx/dvb-bt8xx.c 2004-05-09 17:38:16.000000000 +0200 @@ -261,6 +261,11 @@ .name = "dvb_bt8xx", .id = I2C_DRIVERID_DVB_BT878A, .flags = I2C_DF_NOTIFY, + /* ugly, but necessary: bt8x8 based budget dvb cards are handled by bttv on the + lowest level and we fake a i2c client to get to know all bt8x8 based + cards when they have been registered by bttv. + we do a check for adap->id in order to find the right cards */ + .class = I2C_CLASS_ALL, .attach_adapter = dvb_bt8xx_attach, .detach_adapter = dvb_bt8xx_detach, }; diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/ir-kbd-i2c.c linux-2.6-6-rc3-mm2/drivers/media/video/ir-kbd-i2c.c --- xx-linux-2.6-6-rc3-mm2/drivers/media/video/ir-kbd-i2c.c 2004-05-09 11:05:31.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/media/video/ir-kbd-i2c.c 2004-05-09 17:39:18.000000000 +0200 @@ -247,6 +247,7 @@ .name = "ir remote kbd driver", .id = I2C_DRIVERID_EXP3, /* FIXME */ .flags = I2C_DF_NOTIFY, + .class = I2C_CLASS_TV_ANALOG | I2C_CLASS_TV_DIGITAL; .attach_adapter = ir_probe, .detach_client = ir_detach, }; diff -ura xx-linux-2.6-6-rc3-mm2/drivers/media/video/zoran_card.c linux-2.6-6-rc3-mm2/drivers/media/video/zoran_card.c --- xx-linux-2.6-6-rc3-mm2/drivers/media/video/zoran_card.c 2004-05-09 11:03:03.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/media/video/zoran_card.c 2004-05-09 17:40:38.000000000 +0200 @@ -740,6 +740,7 @@ I2C_DEVNAME("zr36057"), .id = I2C_HW_B_ZR36067, .algo = NULL, + .class = I2C_CLASS_TV_ANALOG, .client_register = zoran_i2c_client_register, .client_unregister = zoran_i2c_client_unregister, }; diff -ura xx-linux-2.6-6-rc3-mm2/drivers/video/aty/radeon_i2c.c linux-2.6-6-rc3-mm2/drivers/video/aty/radeon_i2c.c --- xx-linux-2.6-6-rc3-mm2/drivers/video/aty/radeon_i2c.c 2004-05-09 11:03:09.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/video/aty/radeon_i2c.c 2004-05-09 17:55:49.000000000 +0200 @@ -78,6 +78,7 @@ chan->adapter.id = I2C_ALGO_ATI; chan->adapter.algo_data = &chan->algo; chan->adapter.dev.parent = &chan->rinfo->pdev->dev; + chan->adapter.class = I2C_CLASS_NONE; chan->algo.setsda = radeon_gpio_setsda; chan->algo.setscl = radeon_gpio_setscl; chan->algo.getsda = radeon_gpio_getsda; diff -ura xx-linux-2.6-6-rc3-mm2/drivers/video/matrox/i2c-matroxfb.c linux-2.6-6-rc3-mm2/drivers/video/matrox/i2c-matroxfb.c --- xx-linux-2.6-6-rc3-mm2/drivers/video/matrox/i2c-matroxfb.c 2004-05-09 11:03:09.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/video/matrox/i2c-matroxfb.c 2004-05-09 17:50:36.000000000 +0200 @@ -104,13 +104,14 @@ }; static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo, - unsigned int data, unsigned int clock, const char* name) { + unsigned int data, unsigned int clock, const char* name, unsigned int class) { int err; b->minfo = minfo; b->mask.data = data; b->mask.clock = clock; b->adapter = matrox_i2c_adapter_template; + b->class = class; snprintf(b->adapter.name, I2C_NAME_SIZE, name, minfo->fbcon.node); i2c_set_adapdata(&b->adapter, b); @@ -160,22 +161,22 @@ switch (ACCESS_FBINFO(chip)) { case MGA_2064: case MGA_2164: - err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1B_DATA, DDC1B_CLK, "DDC:fb%u #0"); + err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1B_DATA, DDC1B_CLK, "DDC:fb%u #0", I2C_CLASS_DDC); break; default: - err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1_DATA, DDC1_CLK, "DDC:fb%u #0"); + err = i2c_bus_reg(&m2info->ddc1, minfo, DDC1_DATA, DDC1_CLK, "DDC:fb%u #0", I2C_CLASS_DDC); break; } if (err) goto fail_ddc1; if (ACCESS_FBINFO(devflags.dualhead)) { - err = i2c_bus_reg(&m2info->ddc2, minfo, DDC2_DATA, DDC2_CLK, "DDC:fb%u #1"); + err = i2c_bus_reg(&m2info->ddc2, minfo, DDC2_DATA, DDC2_CLK, "DDC:fb%u #1", I2C_CLASS_DDC); if (err == -ENODEV) { printk(KERN_INFO "i2c-matroxfb: VGA->TV plug detected, DDC unavailable.\n"); } else if (err) printk(KERN_INFO "i2c-matroxfb: Could not register secondary output i2c bus. Continuing anyway.\n"); /* Register maven bus even on G450/G550 */ - err = i2c_bus_reg(&m2info->maven, minfo, MAT_DATA, MAT_CLK, "MAVEN:fb%u"); + err = i2c_bus_reg(&m2info->maven, minfo, MAT_DATA, MAT_CLK, "MAVEN:fb%u", I2C_CLASS_TV_ANALOG); if (err) printk(KERN_INFO "i2c-matroxfb: Could not register Maven i2c bus. Continuing anyway.\n"); } diff -ura xx-linux-2.6-6-rc3-mm2/drivers/video/matrox/matroxfb_maven.c linux-2.6-6-rc3-mm2/drivers/video/matrox/matroxfb_maven.c --- xx-linux-2.6-6-rc3-mm2/drivers/video/matrox/matroxfb_maven.c 2004-05-09 11:03:09.000000000 +0200 +++ linux-2.6-6-rc3-mm2/drivers/video/matrox/matroxfb_maven.c 2004-05-09 17:46:07.000000000 +0200 @@ -1297,6 +1297,7 @@ .name = "maven", .id = I2C_DRIVERID_MGATVO, .flags = I2C_DF_NOTIFY, + .class = I2C_CLASS_TV_ANALOG, .attach_adapter = maven_attach_adapter, .detach_client = maven_detach_client, .command = maven_command,