[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