Mailing List archive

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

[linux-dvb] Re: CX88 i2c issue w/ DVB tuners



On Friday 10 Sep 2004 14:56, Ralph Metzler wrote:
> Andrew de Quincey writes:
>  > On Friday 10 Sep 2004 13:10, Ralph Metzler wrote:
>  > > Holger Waechtler writes:
>  > >  > Andrew de Quincey wrote:
>  > >  > > Yeah, that sounds good. So effectively the frontend drivers will
>  > >  > > cease to be kernel i2c devices. However, we'll still use the
>  > >  > > kernel i2c for the adapter's i2c buses if need be, so no one can
>  > >  > > complain we're duplicating stuff again. That makes sense - theres
>  > >  > > no point really in making the frontends generic devices usable by
>  > >  > > non-DVB code.
>  > >  > >
>  > >  > > How will we prevent things like that tda9887 tuner from taking
>  > >  > > over our addresses on the bus accidentally if our bus is marked
>  > >  > > as ANALOGUE and DIGITAL? We should probably claim addresses on
>  > >  > > the bus that we use - but it all depends on what order things are
>  > >  > > loaded in.
>  > >  >
>  > >  > I would not claim any addresses, why should we? Even registration
>  > >  > to the kernel i2c API is optional (and only introduces delays and
>  > >  > the risk of accidentally attached devices from other subsystems).
>  > >  >
>  > >  > The generic i2c_read/write() implementations in the card drivers
>  > >  > should allow writes to all addresses. If not we should fix them,
>  > >  > we're maintaining them anyway. We also need to ensure they are
>  > >  > correctly locking on the low level because we don't rely on the i2c
>  > >  > layer locking mechanism anymore (but last time I checked most
>  > >  > drivers implemented correct semaphores, so this should not really
>  > >  > be a problem).
>  > >  >
>  > >  > If properly done both systems can existence peacefully in
>  > >  > coexistence and concurrent accesses are allowed (like it was the
>  > >  > case for the dvb_i2c_bus code).
>  >
>  > Sorry! hit the wrong key before.
>  >
>  > > And what exactly are the advantages of having these two systems for
>  > > similar things again?
>  > > You will again have a lot of code duplication with only minimal
>  > > differences depending on the card type and necessary fixes
>  > > (like the locking) to make it work with existing structures if
>  > > you happen to need other i2c clients.
>  >
>  > yeah, I don't like having multiple i2c implementations hitting the same
>  > bus. Thats why I would prefer to use the kernel i2c implementation where
>  > possible, since it handles locking and bitbanging (if necessary) for us.
>  >
>  > > Getting rid of wrong attaches is easily done by introducing a
>  > > client type field as I described before or just by getting an id range
>  > > reserved in i2c-id.h as it is already done for sensors and V4L2 common
>  > > components (is the latter used yet?).
>  >
>  > We can't have an id per frontend - from what Holger described about the
>  > binary-only firmwares.
>
> Completely closed drivers could still use their own thin I2C layers or
> other means (see below).
>
> I see how what Holger describes would make things a little bit
> easier for pure DVB drivers if you want to use existing
> i2c clients you get added complexity.
>
> But I can see how one could use such a really thin layer and
> alternatively either put a generic i2c kernel client registration
> layer above it or use it directly with a DVB driver if the latter
> really does not need anything else.

Yeah, I agree. 

IMO OSS frontends that are in the official kernel source should use the 
official kernel facilities though.

>  > Isn't a client-type field the same as the clients testing the adapter
>  > type field to check that it meets what they expect?
>
> Testing the adapter type in the client allows the client to prevent
> attaching to non-DVB adapters but the adapter might still get attach
> callbacks from unwanted other clients or from DVB frontends it
> does not know.
>
> If the client would have a type of DVB demodulator or would be in the id
> range of DVB demodulators the adapter also could always attach and
> register it as a frontend, even if it does not know this specific one.
> Configuration of specific frontend subtypes could still be handled by
> SET_TYPE calls or even config table upload calls.
>
> You could also add your own secret GET_TYPE calls where the frontend
> tells the adapter what kind it is if you really do not want one
> id per frontend for those binary-only drivers.

I get you - I seem to be heading to the same place you are.




Home | Main Index | Thread Index