[linux-dvb] Rationalisation of /dev/adapterX/caY devices

christophpfister at bluemail.ch christophpfister at bluemail.ch
Mon Apr 10 16:43:19 CEST 2006


>Currently there is a slightly weird behaviour with DVB CA devices. Say you
>
>have an adapter with three CI slots. You would expect to see:
>
>/dev/adapter0/ca0
>/dev/adapter0/ca1
>/dev/adapter0/ca2
>
>However, what you actually see is
>/dev/adapter0/ca0
>
>Then each message sent to and from that ca0 (using read()/write()) has a
>two 
>byte header prepended:
>byte0: slot_id
>byte1: transport_connection_id.
>
>Where slot_id will vary from 0->2. This complicates writing CA related 
>things.. Its not possible to just check a specific slot for data. And when
>
>you start to support multiple adapters each with multiple slots, you have
>to 
>have a sort of virtual device layer. It also complicates the kernel 
>dvb_ca_en50221.c generic link level CA device driver.
>
>I would like to change this so that:
>1) We create a caX device per slot on the adapters.
>2) We'll keep the two byte header for back compatability (the 
>transport_connection_id is useful still). However, the slot_id will always
>be 
>set to 0.
>
>Does anyone have any thoughts on this?

Well, that's one way. We move CA related stuff from the user into the kernel
space. It doesn't matter for me (I'm trying to implement multiple CAM support
for libdvben50221 with Andrew at the moment), but wouldn't it break other
software (like vdr etc) which depend on this?

So we have two options right now:

- implementing a kernel layer with support for both, the old and the new
method
- breaking API of libdvben50221, which hasn't been published offically (only
available through mercury)

Christoph




More information about the linux-dvb mailing list