On Wed, 2004-09-22 at 14:38, Jean Delvare wrote: > Aha, this is an interesting point (which was missing from your previous > explanation). The base of your proposal would be to have several small i2c > "trees" (where a tree is a list of adapters and a list of clients) instead of > a larger, unique one. This would indeed solve a number of problems, and I > admit that it is somehow equivalent to Michael's classes in that it > efficiently prevents the hardware monitoring clients from probing the video > stuff. The rest is just details internal to each "tree". As I understand it, > each video device would be a tree on itself, while the whole hardware > monitoring stuff would constitute one (bigger) tree. Correct? I've been rereading the code, and it could be even simpler. How about this: 1) The card driver defines an i2c_adapter structure, but never calls i2c_add_adapter(). The only extra thing it needs to do is to initialise the semaphores in the structure. 2) The frontend calls i2c_transfer() directly. 3) The i2c core never gets involved, and there is never any i2c_client structure. This gives us the required reuse of the I2C algo-bit code, without any of the list walking or device probing being required. - Adrian Cox Humboldt Solutions Ltd.