[RFC][2.6] Additional i2c adapter flags for i2c client isolation

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

 



Hello,

On 16.03.2004 16:44, Greg KH wrote:
> On Tue, Mar 16, 2004 at 10:25:25AM +0100, Michael Hunold wrote:
> 
>>Here, all client drivers are unconditionally told to try and attach to
>>the adapter. There is no way that an i2c adapter can keep an i2c driver
>>away from the bus.
> 
> 
> Yes, but the different i2c chip drivers all check for the class setting
> to be correct before they really do anything, right?

As you've already noticed below, it's completely up to the driver -- and 
I don't trust i2c drivers I haven't written... ;-)

>>Currently, adapters can already specify a class, for DVB
>>I2C_ADAP_CLASS_TV_DIGITAL matches perfectly.

> Yes, and that is what you should check for.  It's a bug if any of the
> non-DVB i2c drivers probe devices with the .class set to
> I2C_ADAP_CLASS_TV_DIGITAL.  Fix that and you should be fine, right?

In theory this should be sufficient, but doesn't help if you have some 
"I don't care which bus this is and I'll probe it anyway" device.

Just think of all the i2c client drivers that are not part of the 
official kernel. I don't want to fix all these, just keep them away from 
"my" i2c busses...

>>What I'd like to have is that client can specify some sort of "class",
>>too, and that i2c adapters can tell the core that only clients where the
>>class is matching are allowed to probe their existence.

> Yeah, right now it's up to the chip drivers to be honest.  If you want
> to implement a change to do this instead, I'll be glad to apply it.

Ok, thanks. I'm heading for the small solution that doesn't break any 
existing "functionality" (if it's desired or not) and that doesn't 
require to touch every i2c driver in the kernel.

Here is the agenda:

- add a "class" field to the i2c client driver struct (ie. let the 
driver specify "I'm a DVB device" for example)
- add a flag to the adapter struct telling the i2c core "I only want 
drivers with a matching class to probe on this bus"
- make the i2c core actually check if an adapter has set the flag 
mentioned above and only let any i2c clientprobe on the bus if it has 
the matching class field

This won't break existing functionality (because all "old" i2c client 
drivers don't have the "class" field set and all "old" i2c adapters 
don't have the new flag specified) and will keep all i2c client drivers 
away from my DVB i2c busses.

The DVB i2c drivers, however, will be able to probe on the DVB i2c bus.

> thanks,
> greg k-h

CU
Michael.



[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux