[linux-dvb] unfinshed driver for bt8xx-based DVB cards - your help is deeply appreciated!

Uwe Bugla uwe.bugla at gmx.de
Thu Jun 7 00:01:21 CEST 2007


Hello everybody reading this,

as outline attachment I send:

A. the unfinished driver called cx878, to be implied into the current 
mercurial tree instead of /drivers/media/dvb/bt8xx it should be:
/drivers/media/dvb/cx878 (cx878.tar.bz2). Makefile and Kconfig need to be 
changed then.

B. a dummy driver to show how to enhance the pci_probe function (dummy.c)

C. a kern.log with the two modules (i. e. cx878_core and cx878_budget) loaded 
with verbose=5. This will give you some hints about what function works and 
what function does not work.

D. a console.txt that shows that the I2C bus part, working on the video 
controller part (i. e. device=0x036e) works excellently fine (i. e. FRONTEND 
LOCKED, proved by using szap)

There do exist two alternatives on how to finish / complete that project:

Alternative A:
1. Using the dummy.c example to extend the capabilities of pci_probe
(i. e. probe TWO devices instead of ONE)

Alternative B:
2. Generating a separate module for the audio controller 
(i. e. the RISC DMA engine) with a separate header file

Right now, the pci_probe function is only used to probe seven different 
bt8xx-based cards to ensure that the adequate frontend is loaded.

But this is not enough to make the whole driver work fine.

Excerpt of cx878_budget.c shows that:

static struct pci_device_id cx878_budget_pci_table[] = {
        MAKE_ENTRY(0x11bd, 0x001c, 
&cx878_pctvsat_config),      /*      Pinnacle Sat            */
        MAKE_ENTRY(0x1461, 0x0761, 
&cx878_aver761_config),      /*      Avermedia 761           */
        MAKE_ENTRY(0x1461, 0x0771, 
&cx878_aver771_config),      /*      Avermedia 771           */
        MAKE_ENTRY(0x0071, 0x0101, &cx878_nebula_dtv_config),   /*      Nebula 
DigiTV           */
        MAKE_ENTRY(0x18ac, 0xdb10, &cx878_dvico_dvbt_config),   /*      DViCO 
Fusion DVB-T      
*/
        MAKE_ENTRY(0x18ac, 0xd500, &cx878_dvico_hdtv_config),   /*      DViCO 
Fusion HDTV5      
*/
        MAKE_ENTRY(0x7063, 0x2000, 
&cx878_pchdtv_config),       /*      PCHDTV-2000             */
};
MODULE_DEVICE_TABLE(pci, cx878_budget_pci_table);

static struct pci_driver cx878_budget_pci_driver = {
        .name           = "CX878 Budget",
        .id_table       = cx878_budget_pci_table,
        .probe          = cx878_budget_pci_probe,
        .remove         = cx878_budget_pci_remove,
};

Excerpt of cx878_common.h shows that also:

#define MAKE_ENTRY(subven, subdev, configptr) {                 \
                .vendor = 0x109e,                               \
                .device = 0x036e,                               \
                .subvendor = (subven),                          \
                .subdevice = (subdev),                          \
                .driver_data = (unsigned long) (configptr)      \
}

Please note:
As stated in dummy.c, all seven cards have a common video controller address 
(device=0x036e - I2C bus) and a common audio controller address 
(device=0x0878 - RISC DMA engine).

So please where is the appropriate solution?

Is it Alternative A or Alternative B?

If this is being finished or even can be finished there will be a driver for 
bt8xx-based DVB cards consuming less than 2 / 7 of RAM in comparison to the 
existing driver being dependent of some GPIO and I2C functions (derived from 
the traditional bttv concept which provides a lot of RAM-wasting 
dependency-nonsense) who AFAICS do work fine in the existing cx878 model.

The only decisive question is how to imply the DMA RISC engine (i. e. audio 
controller - device=0x0878) under the same roof without conflicts and thus 
getting out video and audio streams, which is not possible at the current 
development state.

As I said already: Everybody's help is deeply appreciated.

Cheers everybody and thanks for reading this

Uwe
-------------- next part --------------
brian:~# szap -r ZDF
reading channels from file '/root/.szap/channels.conf'
zapping to 7 'ZDF':
sat 0, frequency = 11953 MHz H, symbolrate 27500000, vpid = 0x006e, apid = 0x0078
using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
status 03 | signal 9797 | snr 0000 | ber 00000000 | unc 0000f8b4 |
status 1f | signal 9797 | snr 1c9c | ber 00007ce0 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1d5b | ber 0000779d | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1e4e | ber 000084d7 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1db9 | ber 0000828a | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1dd6 | ber 000086c7 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1e8a | ber 000083cf | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1d13 | ber 00008009 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1cc6 | ber 00007ad5 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1dc4 | ber 00007f08 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1f17 | ber 00008d54 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1e63 | ber 00008757 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1dc3 | ber 00007dc9 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1f49 | ber 00008b64 | unc 00000000 | FE_HAS_LOCK
status 1f | signal 9797 | snr 1e28 | ber 000083fe | unc 00000000 | FE_HAS_LOCK
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cx878.tar.bz2
Type: application/x-tbz
Size: 27260 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20070607/b22ef935/attachment-0002.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dummy.c
Type: text/x-csrc
Size: 1873 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20070607/b22ef935/attachment-0001.c 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kern.log.bz2
Type: application/x-bzip2
Size: 7285 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20070607/b22ef935/attachment-0003.bin 


More information about the linux-dvb mailing list