i2c driver changes for 2.5.66
Subsystems (5)
PATCH 1/1 i2c driver changes for 2.5.66
Hi,
Here are some i2c driver changes for 2.5.66. These include changes that I previously sent, but didn't end up in 2.5.65.
They do the following:
- hook up i2c devices with the driver core.
- remove some redundant fields from i2c structures now that the driver and device structures are being used.
- fix up i2c drivers outside of the i2c tree.
- fix some other minor bugs.
The i2c bus, drivers, and devices are now all hooked up to the driver core. On one of my boxes this looks like:
/sys/bus/i2c/
|-- devices
| `-- i2c_dev_0 -> ../../../devices/pci0/00:1f.3/i2c-0/i2c_dev_0
`-- drivers
`-- LM75 sensor
`-- i2c_dev_0 -> ../../../../devices/pci0/00:1f.3/i2c-0/i2c_dev_0Please pull from: bk://kernel.bkbits.net/gregkh/linux/i2c-2.5
thanks,
greg k-h
drivers/acorn/char/i2c.c | 4 drivers/i2c/busses/i2c-ali15x3.c | 8 - drivers/i2c/busses/i2c-amd756.c | 6 - drivers/i2c/busses/i2c-amd8111.c | 4 drivers/i2c/busses/i2c-i801.c | 8 - drivers/i2c/busses/i2c-isa.c | 4 drivers/i2c/busses/i2c-piix4.c | 8 - drivers/i2c/chips/adm1021.c | 21 +-- drivers/i2c/chips/lm75.c | 14 +- drivers/i2c/i2c-algo-bit.c | 13 +- drivers/i2c/i2c-algo-pcf.c | 19 +-- drivers/i2c/i2c-core.c | 108 +++++++++--------- drivers/i2c/i2c-dev.c | 42 +++---- drivers/i2c/i2c-elektor.c | 10 + drivers/i2c/i2c-elv.c | 6 - drivers/i2c/i2c-philips-par.c | 4 drivers/i2c/i2c-proc.c | 180 +++++++----------------------- drivers/i2c/i2c-velleman.c | 4 drivers/i2c/scx200_acb.c | 34 ++--- drivers/ieee1394/pcilynx.c | 4 drivers/media/video/adv7175.c | 22 ++- drivers/media/video/bt819.c | 33 +++-- drivers/media/video/bt856.c | 27 ++-- drivers/media/video/bttv-if.c | 22 ++- drivers/media/video/msp3400.c | 32 ++--- drivers/media/video/saa5249.c | 13 +- drivers/media/video/saa7110.c | 19 +-- drivers/media/video/saa7111.c | 21 ++- drivers/media/video/saa7134/saa7134-i2c.c | 10 + drivers/media/video/saa7185.c | 19 +-- drivers/media/video/tda7432.c | 16 +- drivers/media/video/tda9875.c | 16 +- drivers/media/video/tda9887.c | 14 +- drivers/media/video/tuner-3036.c | 6 - drivers/media/video/tuner.c | 29 ++-- drivers/media/video/tvaudio.c | 44 +++---- drivers/video/matrox/i2c-matroxfb.c | 11 + include/linux/i2c.h | 33 +++-- 38 files changed, 444 insertions(+), 444 deletions(-)
-----
Greg Kroah-Hartman <[email protected]>:
o i2c: set up a "generic" i2c driver to prevent oopses when devices are registering
o i2c: fix typo that newer versions of gcc catch
o i2c: fix up drivers/video/matrox/i2c-matroxfb.c due to previous i2c changes
o i2c: fix up drivers/ieee1394/pcilynx.c due to previous i2c changes
o i2c: fix up drivers/acorn/char/i2c.c due to previous i2c changes
o i2c: fix up drivers/media/video/* due to previous i2c changes
o i2c: ugh, clean up lindent mess in i2c-proc.c::i2c_detect()
o i2c: fix up the chip driver names to play nice with sysfs
o i2c: actually register the i2c client device with the driver core
o i2c: Removed the name variable from i2c_client as the dev one should be used instead
o i2c: remove the data field from struct i2c_client
o i2c: add struct device to i2c_client structure
o i2c: remove *data from i2c_adapter, as dev->data should be used instead
o i2c: remove i2c_adapter->name and use dev->name instead
Petr Vandrovec <[email protected]>:
o Fix kobject_get oopses triggered by i2c in 2.5.65-bk
PATCH 1/1 i2c driver changes for 2.5.66
ChangeSet 1.889.355.14, 2003/03/22 23:20:40-08:00, [email protected]
i2c: fix up drivers/media/video/* due to previous i2c changes.
drivers/media/video/adv7175.c | 22 ++++++++------- drivers/media/video/bt819.c | 33 ++++++++++++---------- drivers/media/video/bt856.c | 27 ++++++++++-------- drivers/media/video/bttv-if.c | 22 ++++++++------- drivers/media/video/msp3400.c | 32 +++++++++++---------- drivers/media/video/saa5249.c | 13 +++++--- drivers/media/video/saa7110.c | 19 +++++++----- drivers/media/video/saa7111.c | 21 ++++++++------ drivers/media/video/saa7134/saa7134-i2c.c | 10 ++++-- drivers/media/video/saa7185.c | 19 +++++++----- drivers/media/video/tda7432.c | 16 ++++++---- drivers/media/video/tda9875.c | 16 ++++++---- drivers/media/video/tda9887.c | 14 +++++---- drivers/media/video/tuner-3036.c | 6 ++-- drivers/media/video/tuner.c | 29 ++++++++++--------- drivers/media/video/tvaudio.c | 44 +++++++++++++++--------------- 16 files changed, 194 insertions(+), 149 deletions(-)
drivers/media/video/adv7175.c +13 -9
@@ -170,6 +170,7 @@ client=kmalloc (sizeof (*client),GFP_KERNEL );if (client ==NULL )return -ENOMEM ; +memset (client,0 ,sizeof (*client)); client_template.adapter = adap; client_template.addr = addr;
@@ -190,9 +191,10 @@// We should never get here!!! dname = unknown_name; } -strcpy (client->name, dname); +strncpy (client->dev.name, dname,DEVICE_NAME_SIZE );init_MUTEX (&encoder->lock); encoder->client = client; +i2c_set_clientdata (client, encoder); encoder->addr = addr; encoder->norm =VIDEO_MODE_PAL ; encoder->input =0 ;
@@ -201,7 +203,7 @@for (i=1 ; i<x_common; i++) { rv =i2c_smbus_write_byte (client,init_common[i]);if (rv <0 ) { -printk (KERN_ERR "%s_attach: init error %d\n" , client->name, rv); +printk (KERN_ERR "%s_attach: init error %d\n" , client->dev.name, rv);break ; } }
@@ -211,7 +213,7 @@i2c_smbus_write_byte_data (client,0x07 ,TR0MODE );i2c_smbus_read_byte_data (client,0x12 );printk (KERN_INFO "%s_attach: %s rev. %d at 0x%02x\n" , - client->name, dname, rv &1 , client->addr); + client->dev.name, dname, rv &1 , client->addr); }i2c_attach_client (client);
@@ -229,7 +231,7 @@static int adv717x_detach (struct i2c_client *client) {i2c_detach_client (client); -kfree (client->data); +i2c_get_clientdata (client);kfree (client);return 0 ; }
@@ -237,7 +239,7 @@static int adv717x_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct adv7175 *encoder = client->data; +struct adv7175 *encoder =i2c_get_clientdata (client);int i, x_ntsc=13 , x_pal=13 ;/* x_ntsc is number of entries in init_ntsc -1 */ /* x_pal is number of entries in init_pal -1 */
@@ -297,7 +299,7 @@default :printk (KERN_ERR "%s: illegal norm: %d\n" , - client->name, iarg); + client->dev.name, iarg);return -EINVAL ; }
@@ -353,7 +355,7 @@default :printk (KERN_ERR "%s: illegal input: %d\n" , - client->name, iarg); + client->dev.name, iarg);return -EINVAL ; }
@@ -419,8 +421,10 @@ };static struct i2c_client client_template = { - .name ="adv7175_client" , - .driver = &i2c_driver_adv7175 + .driver = &i2c_driver_adv7175, + .dev = { + .name ="adv7175_client" , + }, };static int adv717x_init (void )
drivers/media/video/bt819.c +18 -15
@@ -128,7 +128,7 @@struct timing *timing; - decoder = client->data; + decoder =i2c_get_clientdata (client); timing = &timing_data[decoder->norm]; init[3 * 2 - 1] = (((timing->vdelay >> 8) & 0x03) << 6) |
@@ -159,6 +159,7 @@ client =kmalloc (sizeof (*client),GFP_KERNEL );if (client ==NULL )return -ENOMEM ; +memset (client,0 ,sizeof (*client)); client_template.adapter = adap; client_template.addr = addr;memcpy (client, &client_template,sizeof (*client));
@@ -170,8 +171,8 @@ }memset (decoder,0 ,sizeof (struct bt819 )); -strcpy (client->name,"bt819" ); - client->data = decoder; +strncpy (client->dev.name,"bt819" ,DEVICE_NAME_SIZE ); +i2c_set_clientdata (client, decoder); decoder->client = client; decoder->addr = addr; decoder->norm =VIDEO_MODE_NTSC ;
@@ -186,10 +187,10 @@ i =bt819_init (client);if (i <0 ) {printk (KERN_ERR "%s: bt819_attach: init status %d\n" , - decoder->client->name, i); + decoder->client->dev.name, i); }else {printk (KERN_INFO "%s: bt819_attach: chip version %x\n" , - decoder->client->name,i2c_smbus_read_byte_data (client, + decoder->client->dev.name,i2c_smbus_read_byte_data (client,0x17 ) &0x0f ); }init_MUTEX (&decoder->lock);
@@ -205,7 +206,7 @@static int bt819_detach (struct i2c_client *client) {i2c_detach_client (client); -kfree (client->data); +i2c_get_clientdata (client);kfree (client);MOD_DEC_USE_COUNT ;return 0 ;
@@ -215,7 +216,7 @@ {int temp; -struct bt819 *decoder = client->data; +struct bt819 *decoder =i2c_get_clientdata (client);//return 0; if (!decoder->initialized) {// First call to bt819_init could be
@@ -268,7 +269,7 @@ *iarg = res;DEBUG (printk (KERN_INFO "%s-bt819: get status %x\n" , - decoder->client->name, *iarg)); + decoder->client->dev.name, *iarg)); }break ;
@@ -278,7 +279,7 @@struct timing *timing;DEBUG (printk (KERN_INFO "%s-bt819: set norm %x\n" , - decoder->client->name, *iarg)); + decoder->client->dev.name, *iarg));if (*iarg ==VIDEO_MODE_NTSC ) {bt819_setbit (decoder,0x01 ,0 ,1 );
@@ -319,7 +320,7 @@int *iarg = arg;DEBUG (printk (KERN_INFO "%s-bt819: set input %x\n" , - decoder->client->name, *iarg)); + decoder->client->dev.name, *iarg));if (*iarg <0 || *iarg >7 ) {return -EINVAL ;
@@ -344,7 +345,7 @@int *iarg = arg;DEBUG (printk (KERN_INFO "%s-bt819: set output %x\n" , - decoder->client->name, *iarg)); + decoder->client->dev.name, *iarg));/* not much choice of outputs */ if (*iarg !=0 ) {
@@ -360,7 +361,7 @@DEBUG (printk (KERN_INFO "%s-bt819: enable output %x\n" , - decoder->client->name, *iarg)); + decoder->client->dev.name, *iarg));if (decoder->enable != enable) { decoder->enable = enable;
@@ -381,7 +382,7 @@DEBUG (printk (KERN_INFO "%s-bt819: set picture brightness %d contrast %d colour %d\n" , - decoder->client->name, pic->brightness, + decoder->client->dev.name, pic->brightness, pic->contrast, pic->colour));
@@ -448,9 +449,11 @@ };static struct i2c_client client_template = { - .name ="bt819_client" , .id =-1 , - .driver = &i2c_driver_bt819 + .driver = &i2c_driver_bt819, + .dev = { + .name ="bt819_client" , + }, };static int bt819_setup (void )
drivers/media/video/bt856.c +15 -12
@@ -106,6 +106,7 @@ client =kmalloc (sizeof (*client),GFP_KERNEL );if (client ==NULL )return -ENOMEM ; +memset (client,0 ,sizeof (*client)); client_template.adapter = adap; client_template.addr = addr;memcpy (client, &client_template,sizeof (*client));
@@ -123,14 +124,14 @@memset (encoder,0 ,sizeof (struct bt856 )); -strcpy (client->name,"bt856" ); +strncpy (client->dev.name,"bt856" ,DEVICE_NAME_SIZE ); encoder->client = client; - client->data = encoder; +i2c_set_clientdata (client, encoder); encoder->addr = client->addr; encoder->norm =VIDEO_MODE_NTSC ; encoder->enable =1 ; -DEBUG (printk (KERN_INFO "%s-bt856: attach\n" , encoder->client->name)); +DEBUG (printk (KERN_INFO "%s-bt856: attach\n" , encoder->client->dev.name));i2c_smbus_write_byte_data (client,0xdc ,0x18 ); encoder->reg[0xdc ] =0x18 ;
@@ -171,7 +172,7 @@static int bt856_detach (struct i2c_client *client) {i2c_detach_client (client); -kfree (client->data); +i2c_get_clientdata (client);kfree (client);MOD_DEC_USE_COUNT ;return 0 ;
@@ -180,7 +181,7 @@static int bt856_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct bt856 *encoder = client->data; +struct bt856 *encoder =i2c_get_clientdata (client);switch (cmd) {
@@ -190,7 +191,7 @@DEBUG (printk (KERN_INFO "%s-bt856: get capabilities\n" , - encoder->client->name)); + encoder->client->dev.name)); cap->flags =VIDEO_ENCODER_PAL
@@ -205,7 +206,7 @@int *iarg = arg;DEBUG (printk (KERN_INFO "%s-bt856: set norm %d\n" , - encoder->client->name, *iarg)); + encoder->client->dev.name, *iarg));switch (*iarg) {
@@ -232,7 +233,7 @@int *iarg = arg;DEBUG (printk (KERN_INFO "%s-bt856: set input %d\n" , - encoder->client->name, *iarg)); + encoder->client->dev.name, *iarg));/* We only have video bus. *iarg = 0: input is from bt819
@@ -268,7 +269,7 @@int *iarg = arg;DEBUG (printk (KERN_INFO "%s-bt856: set output %d\n" , - encoder->client->name, *iarg)); + encoder->client->dev.name, *iarg));/* not much choice of outputs */ if (*iarg !=0 ) {
@@ -285,7 +286,7 @@DEBUG (printk (KERN_INFO "%s-bt856: enable output %d\n" , - encoder->client->name, encoder->enable)); + encoder->client->dev.name, encoder->enable)); }break ;
@@ -309,9 +310,11 @@ };static struct i2c_client client_template = { - .name ="bt856_client" , .id =-1 , - .driver = &i2c_driver_bt856 + .driver = &i2c_driver_bt856, + .dev = { + .name ="bt856_client" , + }, };static int bt856_init (void )
drivers/media/video/bttv-if.c +13 -9
@@ -194,7 +194,7 @@static int attach_inform (struct i2c_client *client) { -struct bttv *btv = (struct bttv *)client->adapter->data; +struct bttv *btv =i2c_get_adapdata (client->adapter);int i;for (i =0 ; i <I2C_CLIENTS_MAX ; i++) {
@@ -207,13 +207,13 @@bttv_call_i2c_clients (btv,TUNER_SET_TYPE ,&btv->tuner_type);if (bttv_verbose)printk ("bttv%d: i2c attach [client=%s,%s]\n" ,btv->nr, - client->name, (i <I2C_CLIENTS_MAX ) ?"ok" :"failed" ); + client->dev.name, (i <I2C_CLIENTS_MAX ) ?"ok" :"failed" );return 0 ; }static int detach_inform (struct i2c_client *client) { -struct bttv *btv = (struct bttv *)client->adapter->data; +struct bttv *btv =i2c_get_adapdata (client->adapter);int i;for (i =0 ; i <I2C_CLIENTS_MAX ; i++) {
@@ -224,7 +224,7 @@ }if (bttv_verbose)printk ("bttv%d: i2c detach [client=%s,%s]\n" ,btv->nr, - client->name, (i <I2C_CLIENTS_MAX ) ?"ok" :"failed" ); + client->dev.name, (i <I2C_CLIENTS_MAX ) ?"ok" :"failed" );return 0 ; }
@@ -261,15 +261,19 @@static struct i2c_adapter bttv_i2c_adap_template = { .owner =THIS_MODULE , - .name ="bt848" , .id =I2C_HW_B_BT848 , .client_register = attach_inform, .client_unregister = detach_inform, + .dev = { + .name ="bt848" , + }, };static struct i2c_client bttv_i2c_client_template = { - .name ="bttv internal use only" , - .id =-1 , + .id =-1 , + .dev = { + .name ="bttv internal" , + }, };
@@ -343,10 +347,10 @@memcpy (&btv->i2c_client, &bttv_i2c_client_template,sizeof (struct i2c_client )); -sprintf (btv->i2c_adap.name+strlen (btv->i2c_adap.name), +sprintf (btv->i2c_adap.dev.name+strlen (btv->i2c_adap.dev.name)," #%d" , btv->nr); btv->i2c_algo.data = btv; - btv->i2c_adap.data = btv; +i2c_set_adapdata (&btv->i2c_adap, btv); btv->i2c_adap.algo_data = &btv->i2c_algo; btv->i2c_client.adapter = &btv->i2c_adap;
drivers/media/video/msp3400.c +17 -15
@@ -349,7 +349,7 @@static void msp3400c_set_scart (struct i2c_client *client,int in,int out) { -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);if (-1 == scarts[out][in])return ;
@@ -411,7 +411,7 @@static void msp3400c_setmode (struct i2c_client *client,int type) { -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);int i;dprintk ("msp3400: setmode: %d\n" ,type);
@@ -471,7 +471,7 @@ {static char *strmode[] = {"0" ,"mono" ,"stereo" ,"3" ,"lang1" ,"5" ,"6" ,"7" ,"lang2" }; -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);int nicam=0 ;/* channel source: FM/AM or nicam */ int src=0 ;
@@ -599,7 +599,7 @@static void msp3400c_restore_dfp (struct i2c_client *client) { -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);int i;for (i =0 ; i <DFP_COUNT ; i++) {
@@ -627,7 +627,7 @@static int autodetect_stereo (struct i2c_client *client) { -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);int val;int newstereo = msp->stereo;int newnicam = msp->nicam_on;
@@ -727,7 +727,7 @@/* stereo/multilang monitoring */ static void watch_stereo (struct i2c_client *client) { -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);if (autodetect_stereo (client)) {if (msp->stereo &VIDEO_SOUND_STEREO )
@@ -746,7 +746,7 @@static int msp3400c_thread (void *data) {struct i2c_client *client = data; -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);struct CARRIER_DETECT *cd;int count, max1,max2,val1,val2, val,this;
@@ -1002,7 +1002,7 @@static int msp3410d_thread (void *data) {struct i2c_client *client = data; -struct msp3400c *msp = client->data; +struct msp3400c *msp =i2c_get_clientdata (client);int mode,val,i,std;#ifdef CONFIG_SMP
@@ -1226,9 +1226,11 @@static struct i2c_client client_template = { - .name ="(unset)" , .flags =I2C_CLIENT_ALLOW_USE , .driver = &driver, + .dev = { + .name ="(unset)" , + }, }; static int msp_attach(struct i2c_adapter *adap, int addr,
@@ -1265,7 +1267,7 @@for (i =0 ; i <DFP_COUNT ; i++) msp->dfp_regs[i] =-1 ; - c->data = msp; +i2c_set_clientdata (c, msp);init_waitqueue_head (&msp->wq);if (-1 ==msp3400c_reset (c)) {
@@ -1291,7 +1293,7 @@#endif msp3400c_setvolume (c,msp->muted,msp->left,msp->right); -sprintf (c->name,"MSP34%02d%c-%c%d" , +snprintf (c->dev.name,DEVICE_NAME_SIZE ,"MSP34%02d%c-%c%d" , (rev2>>8 )&0xff , (rev1&0xff )+'@' , ((rev1>>8 )&0xff )+'@' , rev2&0x1f ); msp->nicam = (((rev2>>8 )&0xff ) !=00 ) ?1 :0 ;
@@ -1310,7 +1312,7 @@ msp->wake_stereo.data = (unsigned long )msp;/* hello world :-) */ -printk (KERN_INFO "msp34xx: init: chip=%s" ,c->name); +printk (KERN_INFO "msp34xx: init: chip=%s" ,c->dev.name);if (msp->nicam)printk (", has NICAM support" );printk ("\n" );
@@ -1340,7 +1342,7 @@static int msp_detach (struct i2c_client *client) {DECLARE_MUTEX_LOCKED (sem); -struct msp3400c *msp = (struct msp3400c *)client->data; +struct msp3400c *msp =i2c_get_clientdata (client);int i;/* shutdown control thread */
@@ -1379,7 +1381,7 @@static void msp_wake_thread (struct i2c_client *client) { -struct msp3400c *msp = (struct msp3400c *)client->data; +struct msp3400c *msp =i2c_get_clientdata (client);msp3400c_setvolume (client,msp->muted,0 ,0 ); msp->watch_stereo=0 ;
@@ -1391,7 +1393,7 @@static int msp_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct msp3400c *msp = (struct msp3400c *)client->data; +struct msp3400c *msp =i2c_get_clientdata (client);__u16 *sarg = arg;#if 0 int *iarg = (int *)arg;
drivers/media/video/saa5249.c +8 -5
@@ -171,20 +171,21 @@return -ENOMEM ; }memset (t,0 ,sizeof (*t)); -strcpy (client->name,IF_NAME ); +strncpy (client->dev.name,IF_NAME ,DEVICE_NAME_SIZE );init_MUTEX (&t->lock);/* * Now create a video4linux device */ - client->data = vd=(struct video_device *)kmalloc (sizeof (struct video_device ),GFP_KERNEL ); + vd = (struct video_device *)kmalloc (sizeof (struct video_device ),GFP_KERNEL );if (vd==NULL ) {kfree (t);kfree (client);return -ENOMEM ; } +i2c_set_clientdata (client, vd);memcpy (vd, &saa_template,sizeof (*vd));for (pgbuf =0 ; pgbuf <NUM_DAUS ; pgbuf++)
@@ -234,7 +235,7 @@static int saa5249_detach (struct i2c_client *client) { -struct video_device *vd=client->data; +struct video_device *vd =i2c_get_clientdata (client);i2c_detach_client (client);video_unregister_device (vd);kfree (vd->priv);
@@ -264,9 +265,11 @@ };static struct i2c_client client_template = { - .name ="(unset)" , .id =-1 , - .driver = &i2c_driver_videotext + .driver = &i2c_driver_videotext, + .dev = { + .name ="(unset)" , + }, };/*
drivers/media/video/saa7110.c +11 -8
@@ -163,6 +163,7 @@ client=kmalloc (sizeof (*client),GFP_KERNEL );if (client ==NULL )return -ENOMEM ; +memset (client,0 ,sizeof (*client)); client_template.adapter = adap; client_template.addr = addr;memcpy (client, &client_template,sizeof (*client));
@@ -175,9 +176,9 @@/* clear our private data */ memset (decoder,0 ,sizeof (*decoder)); -strcpy (client->name,IF_NAME ); +strncpy (client->dev.name,IF_NAME ,DEVICE_NAME_SIZE ); decoder->client = client; - client->data = decoder; +i2c_set_clientdata (client, decoder); decoder->addr = addr; decoder->norm =VIDEO_MODE_PAL ; decoder->input =0 ;
@@ -189,7 +190,7 @@ rv =i2c_master_send (client, initseq,sizeof (initseq));if (rv <0 ) -printk (KERN_ERR "%s_attach: init status %d\n" , client->name, rv); +printk (KERN_ERR "%s_attach: init status %d\n" , client->dev.name, rv);else {i2c_smbus_write_byte_data (client,0x21 ,0x16 );i2c_smbus_write_byte_data (client,0x0D ,0x04 );
@@ -213,7 +214,7 @@static int saa7110_detach (struct i2c_client *client) { -struct saa7110 * decoder = client->data; +struct saa7110 * decoder =i2c_get_clientdata (client);i2c_detach_client (client);
@@ -232,7 +233,7 @@static int saa7110_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct saa7110 * decoder = client->data; +struct saa7110 * decoder =i2c_get_clientdata (client);int v;switch (cmd) {
@@ -251,7 +252,7 @@case DECODER_GET_STATUS : { -struct saa7110 * decoder = client->data; +struct saa7110 * decoder =i2c_get_clientdata (client);int status;int res =0 ;
@@ -390,9 +391,11 @@ .command = saa7110_command };static struct i2c_client client_template = { - .name ="saa7110_client" , .id =-1 , - .driver = &i2c_driver_saa7110 + .driver = &i2c_driver_saa7110, + .dev = { + .name ="saa7110_client" , + }, };static int saa7110_init (void )
drivers/media/video/saa7111.c +12 -9
@@ -120,6 +120,7 @@ client =kmalloc (sizeof (*client),GFP_KERNEL );if (client ==NULL )return -ENOMEM ; +memset (client,0 ,sizeof (*client)); client_template.adapter = adap; client_template.addr = addr;memcpy (client, &client_template,sizeof (*client));
@@ -132,9 +133,9 @@ }memset (decoder,0 ,sizeof (*decoder)); -strcpy (client->name,"saa7111" ); +strncpy (client->dev.name,"saa7111" ,DEVICE_NAME_SIZE ); decoder->client = client; - client->data = decoder; +i2c_set_clientdata (client, decoder); decoder->addr = addr; decoder->norm =VIDEO_MODE_NTSC ; decoder->input =0 ;
@@ -147,10 +148,10 @@ i =i2c_master_send (client, init,sizeof (init));if (i <0 ) {printk (KERN_ERR "%s_attach: init status %d\n" , - client->name, i); + client->dev.name, i); }else {printk (KERN_INFO "%s_attach: chip version %x\n" , - client->name,i2c_smbus_read_byte_data (client,0x00 ) >>4 ); + client->dev.name,i2c_smbus_read_byte_data (client,0x00 ) >>4 ); }init_MUTEX (&decoder->lock);i2c_attach_client (client);
@@ -164,7 +165,7 @@static int saa7111_detach (struct i2c_client *client) { -struct saa7111 *decoder = client->data; +struct saa7111 *decoder =i2c_get_clientdata (client);i2c_detach_client (client);kfree (decoder);kfree (client);
@@ -175,7 +176,7 @@static int saa7111_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct saa7111 *decoder = client->data; +struct saa7111 *decoder =i2c_get_clientdata (client);switch (cmd) {
@@ -187,7 +188,7 @@for (i =0 ; i <32 ; i +=16 ) {int j; -printk ("KERN_DEBUG %s: %03x" , client->name, +printk ("KERN_DEBUG %s: %03x" , client->dev.name, i);for (j =0 ; j <16 ; ++j) { printk(" %02x",
@@ -407,9 +408,11 @@ };static struct i2c_client client_template = { - .name ="saa7111_client" , .id =-1 , - .driver = &i2c_driver_saa7111 + .driver = &i2c_driver_saa7111, + .dev = { + .name ="saa7111_client" , + }, };static int saa7111_init (void )
drivers/media/video/saa7134/saa7134-i2c.c +7 -3
@@ -334,15 +334,19 @@static struct i2c_adapter saa7134_adap_template = { .owner =THIS_MODULE , - .name ="saa7134" , .id =I2C_ALGO_SAA7134 , .algo = &saa7134_algo, .client_register = attach_inform, + .dev = { + .name ="saa7134" , + }, };static struct i2c_client saa7134_client_template = { - .name ="saa7134 internal" , .id =-1 , + .dev = { + .name ="saa7134 internal" , + }, };/* ----------------------------------------------------------- */
@@ -410,7 +414,7 @@int saa7134_i2c_register (struct saa7134_dev *dev) { dev->i2c_adap = saa7134_adap_template; -strcpy (dev->i2c_adap.name,dev->name); +strncpy (dev->i2c_adap.dev.name, dev->name,DEVICE_NAME_SIZE ); dev->i2c_adap.algo_data = dev;i2c_add_adapter (&dev->i2c_adap);
drivers/media/video/saa7185.c +11 -8
@@ -191,6 +191,7 @@ client =kmalloc (sizeof (*client),GFP_KERNEL );if (client ==NULL )return -ENOMEM ; +memset (client,0 ,sizeof (*client)); client_template.adapter = adap; client_template.addr = addr;memcpy (client, &client_template,sizeof (*client));
@@ -202,9 +203,9 @@memset (encoder,0 ,sizeof (*encoder)); -strcpy (client->name,"saa7185" ); +strncpy (client->dev.name,"saa7185" ,DEVICE_NAME_SIZE ); encoder->client = client; - client->data = encoder; +i2c_set_clientdata (client, encoder); encoder->addr = addr; encoder->norm =VIDEO_MODE_NTSC ; encoder->enable =1 ;
@@ -215,11 +216,11 @@ sizeof(init_ntsc)); }if (i <0 ) { -printk (KERN_ERR "%s_attach: init error %d\n" , client->name, +printk (KERN_ERR "%s_attach: init error %d\n" , client->dev.name, i); }else {printk (KERN_INFO "%s_attach: chip version %d\n" , - client->name,i2c_smbus_read_byte (client) >>5 ); + client->dev.name,i2c_smbus_read_byte (client) >>5 ); }init_MUTEX (&encoder->lock);i2c_attach_client (client);
@@ -233,7 +234,7 @@static int saa7185_detach (struct i2c_client *client) { -struct saa7185 *encoder = client->data; +struct saa7185 *encoder =i2c_get_clientdata (client);i2c_detach_client (client);i2c_smbus_write_byte_data (client,0x61 , (encoder->reg[0x61 ]) |0x40 );/* SW: output off is active */ //i2c_smbus_write_byte_data(client, 0x3a, (encoder->reg[0x3a]) | 0x80); /* SW: color bar */
@@ -246,7 +247,7 @@static int saa7185_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct saa7185 *encoder = client->data; +struct saa7185 *encoder =i2c_get_clientdata (client);switch (cmd) {
@@ -365,9 +366,11 @@ };static struct i2c_client client_template = { - .name ="saa7185_client" , .id =-1 , - .driver = &i2c_driver_saa7185 + .driver = &i2c_driver_saa7185, + .dev = { + .name ="saa7185_client" , + }, };static int saa7185_init (void )
drivers/media/video/tda7432.c +9 -7
@@ -260,7 +260,7 @@static int tda7432_set (struct i2c_client *client) { -struct tda7432 *t = client->data; +struct tda7432 *t =i2c_get_clientdata (client);unsigned char buf[16 ];d2printk ("tda7432: In tda7432_set\n" );
@@ -287,7 +287,7 @@static void do_tda7432_init (struct i2c_client *client) { -struct tda7432 *t = client->data; +struct tda7432 *t =i2c_get_clientdata (client);d2printk ("tda7432: In tda7432_init\n" ); t->input = TDA7432_STEREO_IN | /* Main (stereo) input */
@@ -328,11 +328,11 @@memcpy (client,&client_template,sizeof (struct i2c_client )); client->adapter = adap; client->addr = addr; - client->data = t; +i2c_set_clientdata (client, t);do_tda7432_init (client);MOD_INC_USE_COUNT ; -strcpy (client->name,"TDA7432" ); +strncpy (client->dev.name,"TDA7432" ,DEVICE_NAME_SIZE );printk (KERN_INFO "tda7432: init\n" );i2c_attach_client (client);
@@ -348,7 +348,7 @@static int tda7432_detach (struct i2c_client *client) { -struct tda7432 *t = client->data; +struct tda7432 *t =i2c_get_clientdata (client);do_tda7432_init (client);i2c_detach_client (client);
@@ -361,7 +361,7 @@static int tda7432_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct tda7432 *t = client->data; +struct tda7432 *t =i2c_get_clientdata (client);d2printk ("tda7432: In tda7432_command\n" );switch (cmd) {
@@ -526,9 +526,11 @@static struct i2c_client client_template = { - .name ="tda7432" , .id =-1 , .driver = &driver, + .dev = { + .name ="tda7432" , + }, };static int tda7432_init (void )
drivers/media/video/tda9875.c +9 -7
@@ -158,7 +158,7 @@static void tda9875_set (struct i2c_client *client) { -struct tda9875 *tda = client->data; +struct tda9875 *tda =i2c_get_clientdata (client);unsigned char a;dprintk (KERN_DEBUG "tda9875_set(%04x,%04x,%04x,%04x)\n" ,tda->lvol,tda->rvol,tda->bass,tda->treble);
@@ -176,7 +176,7 @@static void do_tda9875_init (struct i2c_client *client) { -struct tda9875 *t = client->data; +struct tda9875 *t =i2c_get_clientdata (client);dprintk ("In tda9875_init\n" );tda9875_write (client,TDA9875_CFG ,0xd0 );/*reg de config 0 (reset)*/ tda9875_write (client,TDA9875_MSR ,0x03 );/* Monitor 0b00000XXX*/
@@ -256,7 +256,7 @@memcpy (client,&client_template,sizeof (struct i2c_client )); client->adapter = adap; client->addr = addr; - client->data = t; +i2c_set_clientdata (client, t);if (!tda9875_checkit (adap,addr)) {kfree (t);
@@ -265,7 +265,7 @@do_tda9875_init (client);MOD_INC_USE_COUNT ; -strcpy (client->name,"TDA9875" ); +strncpy (client->dev.name,"TDA9875" ,DEVICE_NAME_SIZE );printk (KERN_INFO "tda9875: init\n" );i2c_attach_client (client);
@@ -281,7 +281,7 @@static int tda9875_detach (struct i2c_client *client) { -struct tda9875 *t = client->data; +struct tda9875 *t =i2c_get_clientdata (client);do_tda9875_init (client);i2c_detach_client (client);
@@ -294,7 +294,7 @@static int tda9875_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct tda9875 *t = client->data; +struct tda9875 *t =i2c_get_clientdata (client);dprintk ("In tda9875_command...\n" );
@@ -396,9 +396,11 @@static struct i2c_client client_template = { - .name ="tda9875" , .id =-1 , .driver = &driver, + .dev = { + .name ="tda9875" , + }, };static int tda9875_init (void )
drivers/media/video/tda9887.c +8 -6
@@ -359,7 +359,7 @@return -ENOMEM ;memset (t,0 ,sizeof (*t)); t->client = client_template; - t->client.data = t; +i2c_set_clientdata (&t->client, t); t->pinnacle_id =-1 ;i2c_attach_client (&t->client);
@@ -376,12 +376,12 @@case I2C_ALGO_BIT |I2C_HW_B_RIVA :case I2C_ALGO_SAA7134 :printk ("tda9887: probing %s i2c adapter [id=0x%x]\n" , - adap->name,adap->id); + adap->dev.name,adap->id); rc =i2c_probe (adap, &addr_data, tda9887_attach);break ;default :printk ("tda9887: ignoring %s i2c adapter [id=0x%x]\n" , - adap->name,adap->id); + adap->dev.name,adap->id); rc =0 ;/* nothing */ }
@@ -390,7 +390,7 @@static int tda9887_detach (struct i2c_client *client) { -struct tda9887 *t = (struct tda9887 *)client->data; +struct tda9887 *t =i2c_get_clientdata (client);i2c_detach_client (client);kfree (t);
@@ -401,7 +401,7 @@static int tda9887_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct tda9887 *t = (struct tda9887 *)client->data; +struct tda9887 *t =i2c_get_clientdata (client);switch (cmd) {
@@ -456,9 +456,11 @@ };static struct i2c_client client_template = { - .name ="tda9887" , .flags =I2C_CLIENT_ALLOW_USE , .driver = &driver, + .dev = { + .name ="tda9887" , + }, };static int tda9887_init_module (void )
drivers/media/video/tuner-3036.c +4 -2
@@ -196,9 +196,11 @@static struct i2c_client client_template = { - .name ="SAB3036" , .id =-1 , - .driver = &i2c_driver_tuner + .driver = &i2c_driver_tuner, + .dev = { + .name ="SAB3036" , + }, };int __init
drivers/media/video/tuner.c +16 -13
@@ -226,7 +226,7 @@ {unsigned char byte; -struct tuner *t = (struct tuner *)c->data; +struct tuner *t =i2c_get_clientdata (c);if (t->type ==TUNER_MT2032 )return 0 ;
@@ -276,7 +276,7 @@ {unsigned char buf[21 ];int ret,xogc,xok=0 ; -struct tuner *t = (struct tuner *)c->data; +struct tuner *t =i2c_get_clientdata (c); buf[0 ]=0 ; ret=i2c_master_send (c,buf,1 );
@@ -517,7 +517,7 @@ {unsigned char buf[21 ];int lint_try,ret,sel,lock=0 ; -struct tuner *t = (struct tuner *)c->data; +struct tuner *t =i2c_get_clientdata (c);dprintk ("mt2032_set_if_freq rfin=%d if1=%d if2=%d from=%d to=%d\n" ,rfin,if1,if2,from,to);
@@ -594,7 +594,7 @@u8 config;u16 div;struct tunertype *tun; -struct tuner *t = c->data; +struct tuner *t =i2c_get_clientdata (c);unsigned char buffer[4 ];int rc;
@@ -733,7 +733,7 @@static void set_radio_freq (struct i2c_client *c,int freq) {struct tunertype *tun; -struct tuner *t = (struct tuner *)c->data; +struct tuner *t =i2c_get_clientdata (c);unsigned char buffer[4 ];int rc,div;
@@ -794,16 +794,17 @@if (NULL == (client =kmalloc (sizeof (struct i2c_client ),GFP_KERNEL )))return -ENOMEM ;memcpy (client,&client_template,sizeof (struct i2c_client )); - client->data = t =kmalloc (sizeof (struct tuner ),GFP_KERNEL ); + t =kmalloc (sizeof (struct tuner ),GFP_KERNEL );if (NULL == t) {kfree (client);return -ENOMEM ; } +i2c_set_clientdata (client, t);memset (t,0 ,sizeof (struct tuner ));if (type >=0 && type <TUNERS ) { t->type = type;printk ("tuner(bttv): type forced to %d (%s) [insmod]\n" ,t->type,tuners[t->type].name); -strncpy (client->name, tuners[t->type].name,sizeof (client->name)); +strncpy (client->dev.name, tuners[t->type].name,DEVICE_NAME_SIZE ); }else { t->type =-1 ; }
@@ -830,12 +831,12 @@case I2C_ALGO_SAA7134 :case I2C_ALGO_SAA7146 :printk ("tuner: probing %s i2c adapter [id=0x%x]\n" , - adap->name,adap->id); + adap->dev.name,adap->id); rc =i2c_probe (adap, &addr_data, tuner_attach);break ;default :printk ("tuner: ignoring %s i2c adapter [id=0x%x]\n" , - adap->name,adap->id); + adap->dev.name,adap->id); rc =0 ;/* nothing */ }
@@ -844,7 +845,7 @@static int tuner_detach (struct i2c_client *client) { -struct tuner *t = (struct tuner *)client->data; +struct tuner *t =i2c_get_clientdata (client);i2c_detach_client (client);kfree (t);
@@ -856,7 +857,7 @@static int tuner_command (struct i2c_client *client,unsigned int cmd,void *arg) { -struct tuner *t = (struct tuner *)client->data; +struct tuner *t =i2c_get_clientdata (client);int *iarg = (int *)arg;#if 0 __u16 *sarg = (__u16 *)arg;
@@ -875,7 +876,7 @@ t->type = *iarg;printk ("tuner: type set to %d (%s)\n" , t->type,tuners[t->type].name); -strncpy (client->name, tuners[t->type].name,sizeof (client->name)); +strncpy (client->dev.name, tuners[t->type].name,DEVICE_NAME_SIZE );if (t->type ==TUNER_MT2032 )mt2032_init (client);break ;
@@ -977,9 +978,11 @@ };static struct i2c_client client_template = { - .name ="(tuner unset)" , .flags =I2C_CLIENT_ALLOW_USE , .driver = &driver, + .dev = { + .name ="(tuner unset)" , + }, };static int tuner_init_module (void )
drivers/media/video/tvaudio.c +23 -21
153 lines not on this page · raw message
ChangeSet 1.889.355.15, 2003/03/22 23:26:58-08:00, [email protected]
i2c: fix up drivers/acorn/char/i2c.c due to previous i2c changes
I'm not going to touch the other driver in this directory, as it will need more than just minor fixups to get correct.
drivers/acorn/char/i2c.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-)
drivers/acorn/char/i2c.c +3 -1
@@ -303,11 +303,13 @@ }static struct i2c_adapter ioc_ops = { - .name ="IOC/IOMD" , .id =I2C_HW_B_IOC , .algo_data = &ioc_data, .client_register = ioc_client_reg, .client_unregister = ioc_client_unreg + .dev = { + .name ="IOC/IOMD" , + }, };static int __init i2c_ioc_init (void )
ChangeSet 1.889.355.16, 2003/03/22 23:29:40-08:00, [email protected]
i2c: fix up drivers/ieee1394/pcilynx.c due to previous i2c changes.
drivers/ieee1394/pcilynx.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-)
drivers/ieee1394/pcilynx.c +3 -1
@@ -138,10 +138,12 @@ };static struct i2c_adapter bit_ops = { - .name ="PCILynx I2C adapter" , .id =0xAA ,//FIXME: probably we should get an id in i2c-id.h .client_register = bit_reg, .client_unregister = bit_unreg, + .dev = { + .name ="PCILynx I2C" , + }, };
ChangeSet 1.889.357.1, 2003/03/21 12:29:44-08:00, [email protected]
[PATCH] Fix kobject_get oopses triggered by i2c in 2.5.65-bk
i2c initialization must not use module_init now, when it was converted to the kobject interface. There are dozens of users which need it working much sooner. i2c is subsystem after all, isn't it?
Fixes kernel oopses in kobject_get during system init which were happening to me.
drivers/i2c/i2c-core.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
drivers/i2c/i2c-core.c +1 -1
@@ -675,7 +675,7 @@bus_unregister (&i2c_bus_type); } -module_init (i2c_init); +subsys_initcall (i2c_init);module_exit (i2c_exit);/* ----------------------------------------------------
ChangeSet 1.889.357.2, 2003/03/21 12:45:28-08:00, [email protected]
i2c: remove i2c_adapter->name and use dev->name instead.
drivers/i2c/busses/i2c-ali15x3.c | 8 ++-- drivers/i2c/busses/i2c-amd756.c | 6 ++- drivers/i2c/busses/i2c-amd8111.c | 4 +- drivers/i2c/busses/i2c-i801.c | 8 ++-- drivers/i2c/busses/i2c-isa.c | 4 +- drivers/i2c/busses/i2c-piix4.c | 8 ++-- drivers/i2c/i2c-algo-bit.c | 13 +++--- drivers/i2c/i2c-algo-pcf.c | 19 ++++------ drivers/i2c/i2c-core.c | 73 ++++++++++++++++----------------------- drivers/i2c/i2c-dev.c | 17 +++------ drivers/i2c/i2c-elektor.c | 10 +++-- drivers/i2c/i2c-elv.c | 4 +- drivers/i2c/i2c-philips-par.c | 4 +- drivers/i2c/i2c-velleman.c | 4 +- drivers/i2c/scx200_acb.c | 28 ++++++-------- include/linux/i2c.h | 1 16 files changed, 105 insertions(+), 106 deletions(-)
drivers/i2c/busses/i2c-ali15x3.c +5 -3
@@ -474,9 +474,11 @@static struct i2c_adapter ali15x3_adapter = { .owner =THIS_MODULE , - .name ="unset" , .id =I2C_ALGO_SMBUS |I2C_HW_SMBUS_ALI15X3 , .algo = &smbus_algorithm, + .dev = { + .name ="unset" , + }, };static struct pci_device_id ali15x3_ids[]__devinitdata = {
@@ -500,8 +502,8 @@/* set up the driverfs linkage to our parent device */ ali15x3_adapter.dev.parent = &dev->dev; -sprintf (ali15x3_adapter.name,"SMBus ALI15X3 adapter at %04x" , - ali15x3_smba); +snprintf (ali15x3_adapter.dev.name,DEVICE_NAME_SIZE , +"SMBus ALI15X3 adapter at %04x" , ali15x3_smba);return i2c_add_adapter (&ali15x3_adapter); }
drivers/i2c/busses/i2c-amd756.c +4 -2
@@ -312,9 +312,11 @@static struct i2c_adapter amd756_adapter = { .owner =THIS_MODULE , - .name ="unset" , .id =I2C_ALGO_SMBUS |I2C_HW_SMBUS_AMD756 , .algo = &smbus_algorithm, + .dev = { + .name ="unset" , + }, };enum chiptype {AMD756 ,AMD766 ,AMD768 ,NFORCE };
@@ -376,7 +378,7 @@/* set up the driverfs linkage to our parent device */ amd756_adapter.dev.parent = &pdev->dev; -sprintf (amd756_adapter.name, +snprintf (amd756_adapter.dev.name,DEVICE_NAME_SIZE ,"SMBus AMD75x adapter at %04x" , amd756_ioport); error =i2c_add_adapter (&amd756_adapter);
drivers/i2c/busses/i2c-amd8111.c +2 -2
@@ -357,8 +357,8 @@ goto out_kfree; smbus->adapter.owner =THIS_MODULE ; -sprintf (smbus->adapter.name, -"SMBus2 AMD8111 adapter at %04x" , smbus->base); +snprintf (smbus->adapter.dev.name,DEVICE_NAME_SIZE , +"SMBus2 AMD8111 adapter at %04x" , smbus->base); smbus->adapter.id =I2C_ALGO_SMBUS |I2C_HW_SMBUS_AMD8111 ; smbus->adapter.algo = &smbus_algorithm; smbus->adapter.algo_data = smbus;
drivers/i2c/busses/i2c-i801.c +5 -3
@@ -546,9 +546,11 @@static struct i2c_adapter i801_adapter = { .owner =THIS_MODULE , - .name ="unset" , .id =I2C_ALGO_SMBUS |I2C_HW_SMBUS_I801 , .algo = &smbus_algorithm, + .dev = { + .name ="unset" , + }, };static struct pci_device_id i801_ids[]__devinitdata = {
@@ -597,8 +599,8 @@/* set up the driverfs linkage to our parent device */ i801_adapter.dev.parent = &dev->dev; -sprintf (i801_adapter.name,"SMBus I801 adapter at %04x" , - i801_smba); +snprintf (i801_adapter.dev.name,DEVICE_NAME_SIZE , +"SMBus I801 adapter at %04x" , i801_smba);return i2c_add_adapter (&i801_adapter); }
drivers/i2c/busses/i2c-isa.c +3 -1
@@ -39,9 +39,11 @@/* There can only be one... */ static struct i2c_adapter isa_adapter = { .owner =THIS_MODULE , - .name ="ISA main adapter" , .id =I2C_ALGO_ISA |I2C_HW_ISA , .algo = &isa_algorithm, + .dev = { + .name ="ISA main adapter" , + }, };static int __init i2c_isa_init (void )
drivers/i2c/busses/i2c-piix4.c +5 -3
@@ -394,9 +394,11 @@static struct i2c_adapter piix4_adapter = { .owner =THIS_MODULE , - .name ="unset" , .id =I2C_ALGO_SMBUS |I2C_HW_SMBUS_PIIX4 , .algo = &smbus_algorithm, + .dev = { + .name ="unset" , + }, };static struct pci_device_id piix4_ids[]__devinitdata = {
@@ -449,8 +451,8 @@/* set up the driverfs linkage to our parent device */ piix4_adapter.dev.parent = &dev->dev; -sprintf (piix4_adapter.name,"SMBus PIIX4 adapter at %04x" , - piix4_smba); +snprintf (piix4_adapter.dev.name,DEVICE_NAME_SIZE , +"SMBus PIIX4 adapter at %04x" , piix4_smba); retval =i2c_add_adapter (&piix4_adapter);
drivers/i2c/i2c-algo-bit.c +6 -7
@@ -23,6 +23,8 @@/* $Id: i2c-algo-bit.c,v 1.44 2003/01/21 08:08:16 kmalkki Exp $ */ +/* #define DEBUG 1 */ +#include <linux/kernel.h> #include <linux/module.h> #include <linux/delay.h>
@@ -338,16 +340,14 @@while (count >0 ) { c = *temp; -DEB2 (printk (KERN_DEBUG "i2c-algo-bit.o: %s sendbytes: writing %2.2X\n" , - i2c_adap->name, c&0xff )); +DEB2 (dev_dbg (&i2c_adap->dev,"sendbytes: writing %2.2X\n" , c&0xff )); retval =i2c_outb (i2c_adap,c);if ((retval>0 ) || (nak_ok && (retval==0 ))) {/* ok or ignored NAK */ count--; temp++; wrcount++; }else {/* arbitration or no acknowledge */ -printk (KERN_ERR "i2c-algo-bit.o: %s sendbytes: error - bailout.\n" , - i2c_adap->name); +dev_err (&i2c_adap->dev,"sendbytes: error - bailout.\n" );i2c_stop (adap);return (retval<0 )? retval : -EFAULT ;/* got a better one ?? */
@@ -527,13 +527,12 @@struct i2c_algo_bit_data *bit_adap = adap->algo_data;if (bit_test) { -int ret =test_bus (bit_adap, adap->name); +int ret =test_bus (bit_adap, adap->dev.name);if (ret<0 )return -ENODEV ; } -DEB2 (printk (KERN_DEBUG "i2c-algo-bit.o: hw routines for %s registered.\n" , - adap->name)); +DEB2 (dev_dbg (&adap->dev,"hw routines registered.\n" ));/* register new adapter to i2c module... */
drivers/i2c/i2c-algo-pcf.c +9 -10
@@ -27,6 +27,8 @@messages, proper stop/repstart signaling during receive, added detect code */ +/* #define DEBUG 1 */ /* to pick up dev_dbg calls */ +#include <linux/kernel.h> #include <linux/module.h> #include <linux/delay.h>
@@ -222,21 +224,19 @@int wrcount, status, timeout;for (wrcount=0 ; wrcount<count; ++wrcount) { -DEB2 (printk (KERN_DEBUG "i2c-algo-pcf.o: %s i2c_write: writing %2.2X\n" , - i2c_adap->name, buf[wrcount]&0xff )); +DEB2 (dev_dbg (&i2c_adap->dev,"i2c_write: writing %2.2X\n" , + buf[wrcount]&0xff ));i2c_outb (adap, buf[wrcount]); timeout =wait_for_pin (adap, &status);if (timeout) {i2c_stop (adap); -printk (KERN_ERR "i2c-algo-pcf.o: %s i2c_write: " -"error - timeout.\n" , i2c_adap->name); +dev_err (&i2c_adap->dev,"i2c_write: error - timeout.\n" );return -EREMOTEIO ;/* got a better one ?? */ }#ifndef STUB_I2C if (status &I2C_PCF_LRB ) {i2c_stop (adap); -printk (KERN_ERR "i2c-algo-pcf.o: %s i2c_write: " -"error - no ack.\n" , i2c_adap->name); +dev_err (&i2c_adap->dev,"i2c_write: error - no ack.\n" );return -EREMOTEIO ;/* got a better one ?? */ }#endif
@@ -263,14 +263,14 @@if (wait_for_pin (adap, &status)) {i2c_stop (adap); -printk (KERN_ERR "i2c-algo-pcf.o: pcf_readbytes timed out.\n" ); +dev_err (&i2c_adap->dev,"pcf_readbytes timed out.\n" );return (-1 ); }#ifndef STUB_I2C if ((status &I2C_PCF_LRB ) && (i != count)) {i2c_stop (adap); -printk (KERN_ERR "i2c-algo-pcf.o: i2c_read: i2c_inb, No ack.\n" ); +dev_err (&i2c_adap->dev,"i2c_read: i2c_inb, No ack.\n" );return (-1 ); }#endif
@@ -445,8 +445,7 @@struct i2c_algo_pcf_data *pcf_adap = adap->algo_data;int rval; -DEB2 (printk (KERN_DEBUG "i2c-algo-pcf.o: hw routines for %s registered.\n" , - adap->name)); +DEB2 (dev_dbg (&adap->dev,"hw routines registered.\n" ));/* register new adapter to i2c module... */
drivers/i2c/i2c-core.c +31 -42
188 lines not on this page · raw message
drivers/i2c/i2c-dev.c +7 -10
@@ -30,6 +30,9 @@/* $Id: i2c-dev.c,v 1.53 2003/01/21 08:08:16 kmalkki Exp $ */ +/* If you want debugging uncomment: */ +/* #define DEBUG 1 */ +#include <linux/kernel.h> #include <linux/module.h> #include <linux/fs.h>
@@ -41,10 +44,6 @@#include <linux/i2c-dev.h> #include <asm/uaccess.h> -/* If you want debugging uncomment: */ -/* #define DEBUG */ - -/* 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,
@@ -386,11 +385,11 @@char name[12 ];if ((i =i2c_adapter_id (adap)) <0 ) { -printk (KERN_DEBUG "i2c-dev.o: Unknown adapter ?!?\n" ); +dev_dbg (&adap->dev,"Unknown adapter ?!?\n" );return -ENODEV ; }if (i >=I2CDEV_ADAPS_MAX ) { -printk (KERN_DEBUG "i2c-dev.o: Adapter number too large?!? (%d)\n" ,i); +dev_dbg (&adap->dev,"Adapter number too large?!? (%d)\n" ,i);return -ENODEV ; }
@@ -401,14 +400,12 @@DEVFS_FL_DEFAULT ,I2C_MAJOR , i,S_IFCHR |S_IRUSR |S_IWUSR , &i2cdev_fops, NULL); -printk (KERN_DEBUG "i2c-dev.o: Registered '%s' as minor %d\n" ,adap->name,i); +dev_dbg (&adap->dev,"Registered as minor %d\n" , i); }else {/* This is actually a detach_adapter call! */ devfs_remove ("i2c/%d" , i); i2cdev_adaps[i] =NULL ; -#ifdef DEBUG -printk (KERN_DEBUG "i2c-dev.o: Adapter unregistered: %s\n" ,adap->name); -#endif +dev_dbg (&adap->dev,"Adapter unregistered\n" ); }return 0 ;
drivers/i2c/i2c-elektor.c +6 -4
@@ -174,10 +174,12 @@ };static struct i2c_adapter pcf_isa_ops = { - .owner =THIS_MODULE , - .name ="PCF8584 ISA adapter" , - .id =I2C_HW_P_ELEK , - .algo_data = &pcf_isa_data, + .owner =THIS_MODULE , + .id =I2C_HW_P_ELEK , + .algo_data = &pcf_isa_data, + .dev = { + .name ="PCF8584 ISA adapter" , + }, };static int __init i2c_pcfisa_init (void )
drivers/i2c/i2c-elv.c +3 -1
@@ -129,9 +129,11 @@static struct i2c_adapter bit_elv_ops = { .owner =THIS_MODULE , - .name ="ELV Parallel port adaptor" , .id =I2C_HW_B_ELV , .algo_data = &bit_elv_data, + .dev = { + .name ="ELV Parallel port adaptor" , + }, };static int __init i2c_bitelv_init (void )
drivers/i2c/i2c-philips-par.c +3 -1
@@ -151,8 +151,10 @@static struct i2c_adapter bit_lp_ops = { .owner =THIS_MODULE , - .name ="Philips Parallel port adapter" , .id =I2C_HW_B_LP , + .dev = { + .name ="Philips Parallel port adapter" , + }, };static void i2c_parport_attach (struct parport *port)
drivers/i2c/i2c-velleman.c +3 -1
@@ -114,9 +114,11 @@static struct i2c_adapter bit_velle_ops = { .owner =THIS_MODULE , - .name ="Velleman K8000" , .id =I2C_HW_B_VELLE , .algo_data = &bit_velle_data, + .dev = { + .name ="Velleman K8000" , + }, };static int __init i2c_bitvelle_init (void )
drivers/i2c/scx200_acb.c +13 -15
@@ -140,8 +140,7 @@switch (iface->state) {case state_idle: - printk(KERN_WARNING NAME ": %s, interrupt in idle state\n", - iface->adapter.name); + dev_warn(&iface->adapter.dev, "interrupt in idle state\n",);break ;case state_address:
@@ -226,8 +225,8 @@return ; error: - printk(KERN_ERR NAME ": %s, %s in state %s\n", iface->adapter.name, - errmsg, scx200_acb_state_name[iface->state]); +dev_err (&iface->adapter.dev,"%s in state %s\n" , errmsg, + scx200_acb_state_name[iface->state]); iface->state = state_idle; iface->result = -EIO ;
@@ -236,8 +235,8 @@static void scx200_acb_timeout (struct scx200_acb_iface *iface) { - printk(KERN_ERR NAME ": %s, timeout in state %s\n", - iface->adapter.name, scx200_acb_state_name[iface->state]); +dev_err (&iface->adapter.dev,"timeout in state %s\n" , + scx200_acb_state_name[iface->state]); iface->state = state_idle; iface->result = -EIO ;
@@ -331,13 +330,12 @@ size, address, command, len, rw == I2C_SMBUS_READ);if (!len && rw ==I2C_SMBUS_READ ) { - printk(KERN_WARNING NAME ": %s, zero length read\n", - adapter->name); +dev_warn (&adapter->dev,"zero length read\n" );return -EINVAL ; }if (len && !buffer) { - printk(KERN_WARNING NAME ": %s, nonzero length but no buffer\n", adapter->name); +dev_warn (&adapter->dev,"nonzero length but no buffer\n" );return -EFAULT ; }
@@ -458,17 +456,17 @@memset (iface,0 ,sizeof (*iface)); adapter = &iface->adapter; adapter->data = iface; -sprintf (adapter->name,"SCx200 ACB%d" , index); +snprintf (adapter->dev.name,DEVICE_NAME_SIZE ,"SCx200 ACB%d" , index); adapter->owner =THIS_MODULE ; adapter->id =I2C_ALGO_SMBUS ; adapter->algo = &scx200_acb_algorithm;init_MUTEX (&iface->sem); -sprintf (description,"NatSemi SCx200 ACCESS.bus [%s]" , adapter->name); +snprintf (description,sizeof (description),"NatSemi SCx200 ACCESS.bus [%s]" , adapter->dev.name);if (request_region (base,8 , description) ==0 ) { - printk(KERN_ERR NAME ": %s, can't allocate io 0x%x-0x%x\n", - adapter->name, base, base + 8-1); +dev_err (&adapter->dev,"can't allocate io 0x%x-0x%x\n" , + base, base +8 -1 ); rc = -EBUSY ; goto errout; }
@@ -476,14 +474,14 @@ rc =scx200_acb_probe (iface);if (rc) { - printk(KERN_WARNING NAME ": %s, probe failed\n", adapter->name); +dev_warn (&adapter->dev,"probe failed\n" ); goto errout; }scx200_acb_reset (iface);if (i2c_add_adapter (adapter) <0 ) { - printk(KERN_ERR NAME ": %s, failed to register\n", adapter->name); +dev_err (&adapter->dev,"failed to register\n" ); rc = -ENODEV ; goto errout; }
include/linux/i2c.h +0 -1
@@ -210,7 +210,6 @@*/ struct i2c_adapter {struct module *owner; -char name[32 ];/* some useful name to identify the adapter */ unsigned int id;/* == is algo->id | hwdep.struct->id, */ /* for registered values see below */ struct i2c_algorithm *algo;/* the algorithm to access the bus */
ChangeSet 1.889.357.3, 2003/03/21 14:38:21-08:00, [email protected]
[PATCH] i2c: remove *data from i2c_adapter, as dev->data should be used instead.
drivers/i2c/i2c-elv.c | 2 +- drivers/i2c/scx200_acb.c | 4 ++-- include/linux/i2c.h | 17 +++++++++++------ 3 files changed, 14 insertions(+), 9 deletions(-)
drivers/i2c/i2c-elv.c +1 -1
@@ -150,7 +150,7 @@return -ENODEV ; } }else { - bit_elv_ops.data=(void *)base; +i2c_set_adapdata (&bit_elv_ops, (void *)base);if (bit_elv_init ()==0 ) {if (i2c_bit_add_bus (&bit_elv_ops) <0 )return -ENODEV ;
drivers/i2c/scx200_acb.c +2 -2
@@ -289,7 +289,7 @@ char rw, u8 command, int size, union i2c_smbus_data *data) { - struct scx200_acb_iface *iface = adapter->data; + struct scx200_acb_iface *iface = i2c_get_adapdata(adapter);int len;u8 *buffer;u16 cur_word;
@@ -455,7 +455,7 @@memset (iface,0 ,sizeof (*iface)); adapter = &iface->adapter; - adapter->data = iface; +i2c_set_adapdata (adapter, iface);snprintf (adapter->dev.name,DEVICE_NAME_SIZE ,"SCx200 ACB%d" , index); adapter->owner =THIS_MODULE ; adapter->id =I2C_ALGO_SMBUS ;
include/linux/i2c.h +11 -6
@@ -219,12 +219,7 @@int (*client_register)(struct i2c_client *);int (*client_unregister)(struct i2c_client *); -void *data;/* private data for the adapter */ -/* some data fields that are used by all types */ -/* these data fields are readonly to the public */ -/* and can be set via the i2c_ioctl call */ - -/* data fields that are valid for all devices */ +/* data fields that are valid for all devices */ struct semaphore bus;struct semaphore list;unsigned int flags;/* flags specifying div. data */
@@ -241,6 +236,16 @@#endif /* def CONFIG_PROC_FS */ };#define to_i2c_adapter (d) container_of(d, struct i2c_adapter, dev) + +static inline void *i2c_get_adapdata (struct i2c_adapter *dev) +{ +return dev_get_drvdata (&dev->dev); +} + +static inline void i2c_set_adapdata (struct i2c_adapter *dev,void *data) +{ +return dev_set_drvdata (&dev->dev, data); +}/*flags for the driver struct: */ #define I2C_DF_NOTIFY 0x01/* notify on bus (de/a)ttaches */
ChangeSet 1.889.357.4, 2003/03/21 16:00:39-08:00, [email protected]
i2c: add struct device to i2c_client structure
Not quite ready to hook it up to the driver core yet.
include/linux/i2c.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-)
include/linux/i2c.h +2 -1
@@ -170,8 +170,9 @@void *data;/* for the clients */ int usage_count;/* How many accesses currently */ /* to the client */ +struct device dev;/* the device structure */ }; - +#define to_i2c_client (d) container_of(d, struct i2c_client, dev)/* * The following structs are for those who like to implement new bus drivers:
ChangeSet 1.889.357.5, 2003/03/21 16:07:30-08:00, [email protected]
[PATCH] i2c: remove the data field from struct i2c_client
It's no longer needed, as the struct device should be used instead.
Created i2c_get_clientdata() and i2c_set_clientdata() to access the data.
drivers/i2c/chips/adm1021.c | 15 +++++++-------- drivers/i2c/chips/lm75.c | 8 ++++---- include/linux/i2c.h | 11 ++++++++++- 3 files changed, 21 insertions(+), 13 deletions(-)
drivers/i2c/chips/adm1021.c +7 -8
@@ -223,8 +223,8 @@ } data = (struct adm1021_data *) (new_client +1 ); +i2c_set_clientdata (new_client, data); new_client->addr = address; - new_client->data = data; new_client->adapter = adapter; new_client->driver = &adm1021_driver; new_client->flags =0 ;
@@ -354,8 +354,7 @@int err; -i2c_deregister_entry (((struct adm1021_data *) (client->data))-> - sysctl_id); +i2c_deregister_entry (((struct adm1021_data *) (i2c_get_clientdata (client)))->sysctl_id);if ((err =i2c_detach_client (client))) { printk
@@ -384,7 +383,7 @@static void adm1021_update_client (struct i2c_client *client) { -struct adm1021_data *data = client->data; +struct adm1021_data *data =i2c_get_clientdata (client);down (&data->update_lock);
@@ -435,7 +434,7 @@static void adm1021_temp (struct i2c_client *client,int operation,int ctl_name,int *nrels_mag,long *results) { -struct adm1021_data *data = client->data; +struct adm1021_data *data =i2c_get_clientdata (client);if (operation ==SENSORS_PROC_REAL_INFO ) *nrels_mag =0 ;
@@ -462,7 +461,7 @@static void adm1021_remote_temp (struct i2c_client *client,int operation,int ctl_name,int *nrels_mag,long *results) { -struct adm1021_data *data = client->data; +struct adm1021_data *data =i2c_get_clientdata (client);int prec =0 ;if (operation ==SENSORS_PROC_REAL_INFO )
@@ -535,7 +534,7 @@static void adm1021_die_code (struct i2c_client *client,int operation,int ctl_name,int *nrels_mag,long *results) { -struct adm1021_data *data = client->data; +struct adm1021_data *data =i2c_get_clientdata (client);if (operation ==SENSORS_PROC_REAL_INFO ) *nrels_mag =0 ;
@@ -551,7 +550,7 @@static void adm1021_alarms (struct i2c_client *client,int operation,int ctl_name,int *nrels_mag,long *results) { -struct adm1021_data *data = client->data; +struct adm1021_data *data =i2c_get_clientdata (client);if (operation ==SENSORS_PROC_REAL_INFO ) *nrels_mag =0 ;else if (operation ==SENSORS_PROC_REAL_READ ) {
drivers/i2c/chips/lm75.c +4 -4
@@ -142,8 +142,8 @@ } data = (struct lm75_data *) (new_client +1 ); +i2c_set_clientdata (new_client, data); new_client->addr = address; - new_client->data = data; new_client->adapter = adapter; new_client->driver = &lm75_driver; new_client->flags =0 ;
@@ -215,7 +215,7 @@static int lm75_detach_client (struct i2c_client *client) { -struct lm75_data *data = client->data; +struct lm75_data *data =i2c_get_clientdata (client);i2c_deregister_entry (data->sysctl_id);i2c_detach_client (client);
@@ -263,7 +263,7 @@static void lm75_update_client (struct i2c_client *client) { -struct lm75_data *data = client->data; +struct lm75_data *data =i2c_get_clientdata (client);down (&data->update_lock);
@@ -286,7 +286,7 @@static void lm75_temp (struct i2c_client *client,int operation,int ctl_name,int *nrels_mag,long *results) { -struct lm75_data *data = client->data; +struct lm75_data *data =i2c_get_clientdata (client);if (operation ==SENSORS_PROC_REAL_INFO ) *nrels_mag =1 ;else if (operation ==SENSORS_PROC_REAL_READ ) {
include/linux/i2c.h +10 -1
@@ -167,12 +167,21 @@alignment considerations */ struct i2c_adapter *adapter;/* the adapter we sit on */ struct i2c_driver *driver;/* and our access routines */ -void *data;/* for the clients */ int usage_count;/* How many accesses currently */ /* to the client */ struct device dev;/* the device structure */ };#define to_i2c_client (d) container_of(d, struct i2c_client, dev) + +static inline void *i2c_get_clientdata (struct i2c_client *dev) +{ +return dev_get_drvdata (&dev->dev); +} + +static inline void i2c_set_clientdata (struct i2c_client *dev,void *data) +{ +return dev_set_drvdata (&dev->dev, data); +}/* * The following structs are for those who like to implement new bus drivers:
ChangeSet 1.889.357.6, 2003/03/21 16:16:01-08:00, [email protected]
i2c: Removed the name variable from i2c_client as the dev one should be used instead.
drivers/i2c/chips/adm1021.c | 2 +- drivers/i2c/chips/lm75.c | 2 +- drivers/i2c/i2c-core.c | 14 +++++++------- drivers/i2c/i2c-dev.c | 4 +++- include/linux/i2c.h | 1 - 5 files changed, 12 insertions(+), 11 deletions(-)
drivers/i2c/chips/adm1021.c +1 -1
@@ -299,7 +299,7 @@ }/* Fill in the remaining client fields and put it into the global list */ -strcpy (new_client->name, client_name); +strncpy (new_client->dev.name, client_name,DEVICE_NAME_SIZE ); data->type = kind; new_client->id = adm1021_id++;
drivers/i2c/chips/lm75.c +1 -1
@@ -180,7 +180,7 @@ }/* Fill in the remaining client fields and put it into the global list */ -strcpy (new_client->name, client_name); +strncpy (new_client->dev.name, client_name,DEVICE_NAME_SIZE ); new_client->id = lm75_id++; data->valid =0 ;
drivers/i2c/i2c-core.c +7 -7
@@ -291,9 +291,9 @@ client->driver == driver) {DEB2 (printk (KERN_DEBUG "i2c-core.o: " "detaching client %s:\n" , - client->name)); + client->dev.name));if ((res = driver->detach_client (client))) { -dev_err (&adap->dev,"while " +dev_err (&adap->dev,"while " "unregistering driver " "`%s', the client at " "address %02x of "
@@ -355,7 +355,7 @@printk (KERN_WARNING " i2c-core.o: attach_client(%s) - enlarge I2C_CLIENT_MAX.\n" , - client->name); + client->dev.name); out_unlock_list:up (&adapter->list);
@@ -374,7 +374,7 @@ }DEB (dev_dbg (&adapter->dev,"client [%s] registered to adapter " -"(pos. %d).\n" , client->name, i)); +"(pos. %d).\n" , client->dev.name, i));if (client->flags &I2C_CLIENT_ALLOW_USE ) client->usage_count =0 ;
@@ -395,7 +395,7 @@if (res) {printk (KERN_ERR "i2c-core.o: client_unregister [%s] failed, " -"client not detached" , client->name); +"client not detached" , client->dev.name); goto out; } }
@@ -410,7 +410,7 @@printk (KERN_WARNING " i2c-core.o: unregister_client [%s] not found\n" , - client->name); + client->dev.name); res = -ENODEV ; out_unlock:
@@ -522,7 +522,7 @@ client = adapters[i]->clients[order[j]]; len +=sprintf (kbuf+len,"%02x\t%-32s\t%-32s\n" , client->addr, - client->name, + client->dev.name, client->driver->name); } len = len - file->f_pos;
drivers/i2c/i2c-dev.c +3 -1
@@ -86,7 +86,9 @@ };static struct i2c_client i2cdev_client_template = { - .name ="I2C /dev entry" , + .dev = { + .name ="I2C /dev entry" , + }, .id =1 , .addr =-1 , .driver = &i2cdev_driver,
include/linux/i2c.h +0 -1
@@ -156,7 +156,6 @@* function is mainly used for lookup & other admin. functions. */ struct i2c_client { -char name[32 ];int id;unsigned int flags;/* div., see below */ unsigned int addr;/* chip address - NOTE: 7bit */
ChangeSet 1.889.357.7, 2003/03/21 16:26:04-08:00, [email protected]
i2c: actually register the i2c client device with the driver core.
We have to initialize the client structure with 0 to keep the driver core from oopsing.
Now everything is hooked up enough to start removing the i2c sysctl and proc crud.
drivers/i2c/chips/adm1021.c | 2 ++ drivers/i2c/chips/lm75.c | 2 ++ drivers/i2c/i2c-core.c | 10 ++++++++++ 3 files changed, 14 insertions(+)
drivers/i2c/chips/adm1021.c +2 -0
@@ -221,6 +221,8 @@ err = -ENOMEM ; goto error0; } +memset (new_client,0x00 ,sizeof (struct i2c_client ) + +sizeof (struct adm1021_data )); data = (struct adm1021_data *) (new_client +1 );i2c_set_clientdata (new_client, data);
drivers/i2c/chips/lm75.c +2 -0
@@ -140,6 +140,8 @@ err = -ENOMEM ; goto error0; } +memset (new_client,0x00 ,sizeof (struct i2c_client ) + +sizeof (struct lm75_data )); data = (struct lm75_data *) (new_client +1 );i2c_set_clientdata (new_client, data);
drivers/i2c/i2c-core.c +10 -0
@@ -378,6 +378,15 @@if (client->flags &I2C_CLIENT_ALLOW_USE ) client->usage_count =0 ; + + client->dev.parent = &client->adapter->dev; + client->dev.driver = &client->driver->driver; + client->dev.bus = &i2c_bus_type; + +snprintf (&client->dev.bus_id[0 ],sizeof (client->dev.bus_id),"i2c_dev_%d" , i); +printk ("registering %s\n" , client->dev.bus_id); +device_register (&client->dev); +return 0 ; }
@@ -414,6 +423,7 @@ res = -ENODEV ; out_unlock: +device_unregister (&client->dev);up (&adapter->list); out:return res;
ChangeSet 1.889.357.8, 2003/03/21 16:39:04-08:00, [email protected]
[PATCH] i2c: fix up the chip driver names to play nice with sysfs
drivers/i2c/chips/adm1021.c | 2 +- drivers/i2c/chips/lm75.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/i2c/chips/adm1021.c +1 -1
@@ -144,7 +144,7 @@/* This is the driver that will be inserted */ static struct i2c_driver adm1021_driver = { .owner =THIS_MODULE , - .name ="ADM1021, MAX1617 sensor driver" , + .name ="ADM1021-MAX1617" , .id =I2C_DRIVERID_ADM1021 , .flags =I2C_DF_NOTIFY , .attach_adapter = adm1021_attach_adapter,
drivers/i2c/chips/lm75.c +1 -1
@@ -82,7 +82,7 @@/* This is the driver that will be inserted */ static struct i2c_driver lm75_driver = { .owner =THIS_MODULE , - .name ="LM75 sensor chip driver" , + .name ="LM75 sensor" , .id =I2C_DRIVERID_LM75 , .flags =I2C_DF_NOTIFY , .attach_adapter = lm75_attach_adapter,
ChangeSet 1.889.357.9, 2003/03/21 16:45:59-08:00, [email protected]
i2c: ugh, clean up lindent mess in i2c-proc.c::i2c_detect()
Yes, this function now goes beyond 80 columns, but it's almost readable, while the previous version was not.
Also removed some #ifdefs
drivers/i2c/i2c-proc.c | 180 ++++++++++++------------------------------------- 1 files changed, 47 insertions(+), 133 deletions(-)
drivers/i2c/i2c-proc.c +47 -133
@@ -23,6 +23,8 @@This driver puts entries in /proc/sys/dev/sensors for each I2C device */ +/* #define DEBUG 1 */ +#include <linux/module.h> #include <linux/kernel.h> #include <linux/slab.h>
@@ -581,9 +583,9 @@ is_isa ?SENSORS_ISA_BUS :i2c_adapter_id (adapter);/* Forget it if we can't probe using SMBUS_QUICK */ -if ((!is_isa) - && !i2c_check_functionality (adapter, -I2C_FUNC_SMBUS_QUICK ))return -1 ; +if ((!is_isa) && + !i2c_check_functionality (adapter,I2C_FUNC_SMBUS_QUICK )) +return -1 ;for (addr =0x00 ; addr <= (is_isa ?0xffff :0x7f ); addr++) {/* XXX: WTF is going on here??? */
@@ -594,31 +596,14 @@/* If it is in one of the force entries, we don't do any detection at all */ found =0 ; -for (i =0 ; - !found - && (this_force = - address_data->forces + i, this_force->force); i++) { -for (j =0 ; - !found - && (this_force->force[j] !=SENSORS_I2C_END ); - j +=2 ) { -if ( - ((adapter_id == this_force->force[j]) - || - ((this_force-> - force[j] ==SENSORS_ANY_I2C_BUS ) - && !is_isa)) - && (addr == this_force->force[j +1 ])) { -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found force parameter for adapter %d, addr %04x\n" , - adapter_id, addr); -#endif -if ( - (err = -found_proc (adapter, addr,0 , - this_force-> - kind)))return err; +for (i =0 ; !found && (this_force = address_data->forces + i, this_force->force); i++) { +for (j =0 ; !found && (this_force->force[j] !=SENSORS_I2C_END ); j +=2 ) { +if ( ((adapter_id == this_force->force[j]) || + ((this_force->force[j] ==SENSORS_ANY_I2C_BUS ) && !is_isa)) && + (addr == this_force->force[j +1 ]) ) { +dev_dbg (&adapter->dev,"found force parameter for adapter %d, addr %04x\n" , adapter_id, addr); +if ((err =found_proc (adapter, addr,0 , this_force->kind))) +return err; found =1 ; } }
@@ -628,42 +613,22 @@/* If this address is in one of the ignores, we can forget about it right now */ -for (i =0 ; - !found - && (address_data->ignore[i] !=SENSORS_I2C_END ); - i +=2 ) { -if ( - ((adapter_id == address_data->ignore[i]) - || - ((address_data-> - ignore[i] ==SENSORS_ANY_I2C_BUS ) - && !is_isa)) - && (addr == address_data->ignore[i +1 ])) { -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found ignore parameter for adapter %d, " -"addr %04x\n" , adapter_id, addr); -#endif +for (i =0 ; !found && (address_data->ignore[i] !=SENSORS_I2C_END ); i +=2 ) { +if ( ((adapter_id == address_data->ignore[i]) || + ((address_data->ignore[i] ==SENSORS_ANY_I2C_BUS ) && + !is_isa)) && + (addr == address_data->ignore[i +1 ])) { +dev_dbg (&adapter->dev,"found ignore parameter for adapter %d, addr %04x\n" , adapter_id, addr); found =1 ; } } -for (i =0 ; - !found - && (address_data->ignore_range[i] !=SENSORS_I2C_END ); - i +=3 ) { -if ( - ((adapter_id == address_data->ignore_range[i]) - || - ((address_data-> - ignore_range[i] == -SENSORS_ANY_I2C_BUS ) & !is_isa)) - && (addr >= address_data->ignore_range[i +1 ]) - && (addr <= address_data->ignore_range[i +2 ])) { -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found ignore_range parameter for adapter %d, " -"addr %04x\n" , adapter_id, addr); -#endif +for (i =0 ; !found && (address_data->ignore_range[i] !=SENSORS_I2C_END ); i +=3 ) { +if ( ((adapter_id == address_data->ignore_range[i]) || + ((address_data-> ignore_range[i] ==SENSORS_ANY_I2C_BUS ) & + !is_isa)) && + (addr >= address_data->ignore_range[i +1 ]) && + (addr <= address_data->ignore_range[i +2 ])) { +dev_dbg (&adapter->dev,"found ignore_range parameter for adapter %d, addr %04x\n" , adapter_id, addr); found =1 ; } }
@@ -673,68 +638,31 @@/* Now, we will do a detection, but only if it is in the normal or probe entries */ if (is_isa) { -for (i =0 ; - !found - && (address_data->normal_isa[i] != -SENSORS_ISA_END ); i +=1 ) { +for (i =0 ; !found && (address_data->normal_isa[i] !=SENSORS_ISA_END ); i +=1 ) {if (addr == address_data->normal_isa[i]) { -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found normal isa entry for adapter %d, " -"addr %04x\n" , adapter_id, - addr); -#endif +dev_dbg (&adapter->dev,"found normal isa entry for adapter %d, addr %04x\n" , adapter_id, addr); found =1 ; } } -for (i =0 ; - !found - && (address_data->normal_isa_range[i] != -SENSORS_ISA_END ); i +=3 ) { -if ((addr >= - address_data->normal_isa_range[i]) - && (addr <= - address_data->normal_isa_range[i +1 ]) - && - ((addr - - address_data->normal_isa_range[i]) % - address_data->normal_isa_range[i +2 ] == -0 )) { -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found normal isa_range entry for adapter %d, " -"addr %04x" , adapter_id, addr); -#endif +for (i =0 ; !found && (address_data->normal_isa_range[i] !=SENSORS_ISA_END ); i +=3 ) { +if ((addr >= address_data->normal_isa_range[i]) && + (addr <= address_data->normal_isa_range[i +1 ]) && + ((addr - address_data->normal_isa_range[i]) % address_data->normal_isa_range[i +2 ] ==0 )) { +dev_dbg (&adapter->dev,"found normal isa_range entry for adapter %d, addr %04x" , adapter_id, addr); found =1 ; } } }else { -for (i =0 ; - !found && (address_data->normal_i2c[i] != -SENSORS_I2C_END ); i +=1 ) { +for (i =0 ; !found && (address_data->normal_i2c[i] !=SENSORS_I2C_END ); i +=1 ) {if (addr == address_data->normal_i2c[i]) { found =1 ; -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found normal i2c entry for adapter %d, " -"addr %02x" , adapter_id, addr); -#endif +dev_dbg (&adapter->dev,"found normal i2c entry for adapter %d, addr %02x" , adapter_id, addr); } } -for (i =0 ; - !found - && (address_data->normal_i2c_range[i] != -SENSORS_I2C_END ); i +=2 ) { -if ((addr >= - address_data->normal_i2c_range[i]) - && (addr <= - address_data->normal_i2c_range[i +1 ])) - { -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found normal i2c_range entry for adapter %d, " -"addr %04x\n" , adapter_id, addr); -#endif +for (i =0 ; !found && (address_data->normal_i2c_range[i] !=SENSORS_I2C_END ); i +=2 ) { +if ((addr >= address_data->normal_i2c_range[i]) && + (addr <= address_data->normal_i2c_range[i +1 ])) { +dev_dbg (&adapter->dev,"found normal i2c_range entry for adapter %d, addr %04x\n" , adapter_id, addr); found =1 ; } }
@@ -747,30 +675,17 @@ ((address_data-> probe[i] == SENSORS_ANY_I2C_BUS) & !is_isa)) && (addr == address_data->probe[i + 1])) { -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found probe parameter for adapter %d, " -"addr %04x\n" , adapter_id, addr); -#endif +dev_dbg (&adapter->dev,"found probe parameter for adapter %d, addr %04x\n" , adapter_id, addr); found =1 ; } } -for (i =0 ; !found && - (address_data->probe_range[i] !=SENSORS_I2C_END ); - i +=3 ) { -if ( - ((adapter_id == address_data->probe_range[i]) - || - ((address_data->probe_range[i] == -SENSORS_ANY_I2C_BUS ) & !is_isa)) - && (addr >= address_data->probe_range[i +1 ]) - && (addr <= address_data->probe_range[i +2 ])) { +for (i =0 ; !found && (address_data->probe_range[i] !=SENSORS_I2C_END ); i +=3 ) { +if ( ((adapter_id == address_data->probe_range[i]) || + ((address_data->probe_range[i] ==SENSORS_ANY_I2C_BUS ) & !is_isa)) && + (addr >= address_data->probe_range[i +1 ]) && + (addr <= address_data->probe_range[i +2 ])) { found =1 ; -#ifdef DEBUG -printk - (KERN_DEBUG "i2c-proc.o: found probe_range parameter for adapter %d, " -"addr %04x\n" , adapter_id, addr); -#endif +dev_dbg (&adapter->dev,"found probe_range parameter for adapter %d, addr %04x\n" , adapter_id, addr); } }if (!found)
@@ -779,8 +694,7 @@/* OK, so we really should examine this address. First check whether there is some client here at all! */ if (is_isa || - (i2c_smbus_xfer - (adapter, addr,0 ,0 ,0 ,I2C_SMBUS_QUICK ,NULL ) >=0 )) + (i2c_smbus_xfer (adapter, addr,0 ,0 ,0 ,I2C_SMBUS_QUICK ,NULL ) >=0 ))if ((err =found_proc (adapter, addr,0 ,-1 )))return err; }
ChangeSet 1.985.1.2, 2003/03/23 00:06:48-08:00, [email protected]
i2c: fix up drivers/video/matrox/i2c-matroxfb.c due to previous i2c changes
drivers/video/matrox/i2c-matroxfb.c | 11 ++++++----- 1 files changed, 6 insertions(+), 5 deletions(-)
drivers/video/matrox/i2c-matroxfb.c +6 -5
@@ -111,7 +111,8 @@ b->mask.data = data; b->mask.clock = clock; b->adapter = matrox_i2c_adapter_template; -sprintf (b->adapter.name, name,minor (minfo->fbcon.node)); +snprintf (b->adapter.dev.name,DEVICE_NAME_SIZE , name, +minor (minfo->fbcon.node)); b->adapter.data = b; b->adapter.algo_data = &b->bac; b->bac = matrox_i2c_algo_template;
@@ -159,22 +160,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 on i2c-matroxfb" ); + err =i2c_bus_reg (&m2info->ddc1, minfo,DDC1B_DATA ,DDC1B_CLK ,"DDC:fb%u #0" );break ;default : - err =i2c_bus_reg (&m2info->ddc1, minfo,DDC1_DATA ,DDC1_CLK ,"DDC:fb%u #0 on i2c-matroxfb" ); + err =i2c_bus_reg (&m2info->ddc1, minfo,DDC1_DATA ,DDC1_CLK ,"DDC:fb%u #0" );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 on i2c-matroxfb" ); + err =i2c_bus_reg (&m2info->ddc2, minfo,DDC2_DATA ,DDC2_CLK ,"DDC:fb%u #1" );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 on i2c-matroxfb" ); + err =i2c_bus_reg (&m2info->maven, minfo,MAT_DATA ,MAT_CLK ,"MAVEN:fb%u" );if (err)printk (KERN_INFO "i2c-matroxfb: Could not register Maven i2c bus. Continuing anyway.\n" ); }
ChangeSet 1.985.1.3, 2003/03/24 12:58:59-08:00, [email protected]
[PATCH] i2c: fix typo that newer versions of gcc catch.
drivers/i2c/scx200_acb.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
drivers/i2c/scx200_acb.c +1 -1
@@ -140,7 +140,7 @@switch (iface->state) {case state_idle: - dev_warn(&iface->adapter.dev, "interrupt in idle state\n",); +dev_warn (&iface->adapter.dev,"interrupt in idle state\n" );break ;case state_address:
ChangeSet 1.985.1.4, 2003/03/24 15:16:12-08:00, [email protected]
[PATCH] i2c: set up a "generic" i2c driver to prevent oopses when devices are registering.
This is needed as we are still not using the driver core model for matching up devices to drivers, but doing it by hand. Once that is changed, this will not be needed.
drivers/i2c/i2c-core.c | 9 +++++++++ 1 files changed, 9 insertions(+)
drivers/i2c/i2c-core.c +9 -0
@@ -65,6 +65,14 @@return 0 ; } +static struct device_driver i2c_generic_driver = { + .name ="i2c" , + .bus = &i2c_bus_type, + .probe = i2c_device_probe, + .remove = i2c_device_remove, +}; + +/* --------------------------------------------------- * registering functions * ---------------------------------------------------
@@ -106,6 +114,7 @@if (adap->dev.parent ==NULL ) adap->dev.parent = &legacy_bus;sprintf (adap->dev.bus_id,"i2c-%d" , i); + adap->dev.driver = &i2c_generic_driver;device_register (&adap->dev);/* inform drivers of new adapters */
drivers/acorn/char/i2c.c line 313
Quoted 10 lines · Greg KH
static struct
i2c_adapterioc_ops= {drivers/acorn/char/i2c.c +3
-1- .name = "IOC/IOMD", .id = I2C_HW_B_IOC, .algo_data = &ioc_data, .client_register = ioc_client_reg, .client_unregister = ioc_client_unreg + .dev = { + .name = "IOC/IOMD", + }, };
Are you sure that "IOC/IOMD" is a good name to stick in sysfs? s|/|,| would probably be a good idea.
Signature · 2 lines
Russell King ([email protected]) The developer of ARM Linux http://www.arm.linux.org.uk/personal/aboutme.html
Quoted 2 lines · Russell King
Are you sure that "IOC/IOMD" is a good name to stick in sysfs? s|/|,| would probably be a good idea.
Gah, ignore that comment.
Signature · 2 lines
Russell King ([email protected]) The developer of ARM Linux http://www.arm.linux.org.uk/personal/aboutme.html
Quoted 4 lines · Greg KH
ChangeSet 1.889.355.14, 2003/03/22 23:20:40-08:00, [email protected]
i2c: fix up
drivers/media/video/*due to previous i2c changes.
Additionally I need the following patch to tvmixer.c to compile properly with CONFIG_SOUND_TVMIXER=m. Just a /client->name/client->dev.name/g.
Thanks,
Jan
drivers/media/video/tvmixer.c +10 -10
@@ -87,7 +87,7 @@if (cmd ==SOUND_MIXER_INFO ) {mixer_info info;strncpy (info.id,"tv card" ,sizeof (info.id)); -strncpy (info.name, client->name,sizeof (info.name)); +strncpy (info.name, client->dev.name,sizeof (info.name)); info.modify_counter =42 /* FIXME */ ;if (copy_to_user ((void *)arg, &info,sizeof (info)))return -EFAULT ;
@@ -96,7 +96,7 @@if (cmd ==SOUND_OLD_MIXER_INFO ) {_old_mixer_info info;strncpy (info.id,"tv card" ,sizeof (info.id)); -strncpy (info.name, client->name,sizeof (info.name)); +strncpy (info.name, client->dev.name,sizeof (info.name));if (copy_to_user ((void *)arg, &info,sizeof (info)))return -EFAULT ;return 0 ;
@@ -237,7 +237,7 @@int i;if (debug) -printk ("tvmixer: adapter %s\n" ,adap->name); +printk ("tvmixer: adapter %s\n" ,adap->dev.name);for (i=0 ; i<I2C_CLIENT_MAX ; i++) {if (!adap->clients[i])continue ;
@@ -261,10 +261,10 @@/* ignore that one */ if (debug)printk ("tvmixer: %s is not a tv card\n" , - client->adapter->name); + client->adapter->dev.name);return -1 ; } -printk ("tvmixer: debug: %s\n" ,client->name); +printk ("tvmixer: debug: %s\n" ,client->dev.name);/* unregister ?? */ for (i =0 ; i <DEV_MAX ; i++) {
@@ -273,7 +273,7 @@unregister_sound_mixer (devices[i].minor); devices[i].dev =NULL ; devices[i].minor =-1 ; -printk ("tvmixer: %s unregistered (#1)\n" ,client->name); +printk ("tvmixer: %s unregistered (#1)\n" ,client->dev.name);return 0 ; } }
@@ -298,13 +298,13 @@if (0 != client->driver->command (client,VIDIOCGAUDIO ,&va)) {if (debug)printk ("tvmixer: %s: VIDIOCGAUDIO failed\n" , - client->name); + client->dev.name);return -1 ; }if (0 == (va.flags &VIDEO_AUDIO_VOLUME )) {if (debug)printk ("tvmixer: %s: has no volume control\n" , - client->name); + client->dev.name);return -1 ; }
@@ -318,7 +318,7 @@ devices[i].count =0 ; devices[i].dev = client;printk ("tvmixer: %s (%s) registered with minor %d\n" , - client->name,client->adapter->name,minor); + client->dev.name,client->adapter->dev.name,minor);return 0 ; }
@@ -344,7 +344,7 @@if (devices[i].minor !=-1 ) {unregister_sound_mixer (devices[i].minor);printk ("tvmixer: %s unregistered (#2)\n" , - devices[i].dev->name); + devices[i].dev->dev.name); } } }
Quoted 8 lines · Jan Dittmer
Quoted 4 lines · Greg KH
ChangeSet 1.889.355.14, 2003/03/22 23:20:40-08:00, [email protected]
i2c: fix up
drivers/media/video/*due to previous i2c changes.Additionally I need the following patch to
tvmixer.cto compile properly withCONFIG_SOUND_TVMIXER=m. Just a /client->name/client->dev.name/g.
Thanks, I've applied this to my kernel trees and will send it on to Linus with the next batch of i2c patches.
thanks,
greg k-h