[linux-dvb] Multiple frontend support

Steven Toth stoth at hauppauge.com
Wed Oct 11 06:44:09 CEST 2006


Hi,

I've made some patches which should help the cx88 and saa7134 drivers 
with multiple frontends. The patch description should describe the basic 
changes well enough. See http://linuxtv.org/hg/~stoth/hvr3000.

The patches are far from complete but they should give anyone a basic 
overview of the approach, which is:

videobuf_dvb.c/h now has some extra structures and functions that are 
used by the cx88 and saa7134 drivers to manage a list of videobuf_dvb 
structures (a dynamic a list of 'frontends'). This dynamic list is held 
in cx8802_dev or saa7134_dev(?), replacing the existing  'struct 
videobuf_dvb' field.

The patches show how the generic structures are implement. The best tree 
to look at is the cx88 tree, especially the 
cx88-dvb.c/dvb_register+_probe and cx88-mpeg.c/_probe functions. I still 
need to implement some of this initialisation code in the saa7134 
driver, it's still in progress.

Other changes including adding a 'num_frontends' field to the 
saa7134_boards and cx88_boards structures. This is used during 
initialisation to signal how many frontends will be created and 
attached, this simplifies the switch statement in dvb_register 
significantly.

Lastly, after the list of videobuf_dvb_frontend structures is created, 
it's passed to videobuf_dvb_register_bus() via cx88-dvb/dvb_register 
which is responsible for register a single adapter and any number of 
frontends.

Over the next few days I'll be cleaning up saa7134 and testing the 
hvr3000 with multiple frontends. Todate I've tested with cx88 card=28, a 
DVICO ATSC product. The driver is working as expected and appears to be 
stable.

Te patches need cleaned up but it's ready for the public review and I'd 
appreciate any feedback or comments.

Outside of the scope of these patches is the need in the saa7134 driver 
to manage a single transport bus (if required) between multiple 
frontends. A working example of this in the cx88 driver is the 
cx88-dvb.c/cx88-dvb-bus-ctrl() function.

Regards,

Steve







More information about the linux-dvb mailing list