Dead code in i2c

Mark D. Studebaker mds at paradyne.com
Tue Jun 3 04:01:49 CEST 2003


What Kyosti did is remove the command functions (so now the function pointer is NULL)
but add the i2c_client_command() call that checks for a NULL pointer before
it calls *command(). So it leaves the capability of commands there without
forcing each driver to have a command call that simply returns.
So it was a cleanup that left the capability there.

Philip Pokorny wrote:
> Ahh, but didn't Kyosti or Greg delete all the command functions from all 
> the chip driver modules?
> 
> I think that all the drivers had "command" functions that said "None at 
> this time", but removing that code was one of the things I had to do to 
> make my 2.7.0 driver "cvs"...  So I don't think any of drivers even have 
> a command function any more.
> 
> Which is not an argument for removing the function to access them, but 
> it seems odd that it would be an inline function in that case...
> 
> :v)
> 
> Mark D. Studebaker wrote:
> 
>> This was not in 2.7.0.
>> Kyosti put it in before the branch so it's in both branches.
>> Nothing in our trees use the driver->command function but it may be 
>> worthwhile in
>> the future. Adding an inline function to make it more accessible is 
>> fine too.
>> How about just adding #include <linux/errno.h> to i2c.h?
>>
>> Philip Pokorny wrote:
>>
>>> I'm trying to compile i2c-cvs on a Red Hat beta kernel.
>>>
>>> I'm getting an error due to EINVAL not being defined.  But the 
>>> reference to EINVAL is in a function that apears to be dead code.  
>>> The function is not referenced in any other i2c or lm_sensors files...
>>>
>>> The following patch removes the offending function...
>>>
>>> Index: kernel/i2c.h
>>> ===================================================================
>>> RCS file: /home/cvs/i2c/kernel/i2c.h,v
>>> retrieving revision 1.68
>>> diff -u -r1.68 i2c.h
>>> --- kernel/i2c.h    21 Jan 2003 08:08:16 -0000    1.68
>>> +++ kernel/i2c.h    2 Jun 2003 06:21:27 -0000
>>> @@ -318,15 +318,6 @@
>>>          struct i2c_client_address_data *address_data,
>>>          i2c_client_found_addr_proc *found_proc);
>>>
>>> -static inline int i2c_client_command(struct i2c_client *client,
>>> -                  unsigned int cmd, void *arg)
>>> -{
>>> - if (client->driver && client->driver->command)
>>> -     return client->driver->command(client, cmd, arg);
>>> - else
>>> -     return -EINVAL;
>>> -}
>>> -
>>>  /* An ioctl like call to set div. parameters of the adapter.
>>>   */
>>>  extern int i2c_control(struct i2c_client *,unsigned int, unsigned 
>>> long);
>>>
>>
> 
> 
> 



More information about the lm-sensors mailing list