On Mon, Jul 19, 2004 at 02:55:39PM +0200, Kenneth Aafløy wrote: > On Monday 19 July 2004 00:15, Johannes Stezenbach wrote: > > It is very common for STB chips to have more than one I2C controller -- > > which doesn't mean that all I2C buses are used to connect DVB frontends, > > but it is not unexpected for a dual-FE box to have each FE on its own I2C > > bus. > > Ok, so there is hardware with both multiple I2C buses and frontends, nice to > know. What I wonder about now, is how are these implemented multiple frontend > drivers implemented? Would this x extra frontend be registered together with > the same adapter or will there be multiple adapters, each attached to their > frontend?
One adapter, with multiple frontends and demuxes (one device for each simultaneously usable channel, e.g. 2+1 for the frontends and playback). > On Sunday 18 July 2004 01:59, Ralph Metzler wrote: > > Sorry, but to get all this done properly in the way you want to do it > > (i.e. without the kernel i2c registration callback) you will basically > > have to reimplement the whole dvb_i2c layer again ... > > And that is unacceptable, is it not? Because the goal here is to remove that > layer completly, or have I missed something. For the V4 API I'm just working on a platform where the I2C drivers have been implemented seperately from DVB, i.e. I can't use the client_register() callback. I tried to solve this by adding a extern int dvb_register_i2c_adapter(struct i2c_adapter *i2c_adapter, struct dvb_adapter *dvb_adapter); (I still have to get hold of the i2c_adapter pointer, but that's managable). Frontends would then call extern int dvb_register_frontend(struct i2c_client *client, struct dvb_frontend *fe_data); from their attach_adapter() function. However, if the frontend driver is loaded after the i2c adapter driver, but before the DVB driver, registration would fail. To solve this I would need a second list to keep track of known-but-not-yet-registered frontends. Not difficult to do, but awful. Maybe that's what Ralph means when he says "reimplement the whole dvb_i2c layer"? I'm still looking for a better solution, but i fear there will be none. Johannes