[linux-dvb] using nxt200x in the flexcop driver

Bryan Scott sirbryan at gmail.com
Mon Jan 16 17:01:12 CET 2006


I'm seeing a similar thing now on my HDTV Wonder when I updated cvs the 
other day... Ok, not the same code, but a kernel oops nonetheless.  The 
first change was installing my Twinhan/Fujiplus VP/FD-3250 alongside it. 
  I noticed this problem when loading all the modules from development 
code Manu had checked out for the Twinhan dst code.  So I tried to go 
back to my working CVS version, but like a dummy did an update on the 10th.

Here's the oops output from my machine:

------------------------------
cx2388x dvb driver version 0.0.5 loaded
CORE cx88[0]: subsystem: 1002:a101, board: ATI HDTV Wonder 
[card=34,autodetected]
TV tuner 68 at 0x1fe, Radio tuner -1 at 0x1fe
tuner 1-0061: chip found @ 0xc2 (cx88[0])
tuner 1-0061: type set to 68 (Philips TUV1236D ATSC/NTSC dual in)
cx88[0]/2: found at 0000:00:09.2, rev: 5, irq: 17, latency: 32, mmio: 
0xe4000000
cx88[0]/2: cx2388x based dvb card
nxt200x: NXT2004 Detected
DVB: registering new adapter (cx88[0]).
DVB: registering frontend 1 (Nextwave NXT200X VSB/QAM frontend)...
nxt2004: Waiting for firmware upload (dvb-fe-nxt2004.fw)...
nxt2004: Waiting for firmware upload(2)...
nxt2004: Firmware upload complete
-------------

So far, so good.  Then I run azap...

-----------------
cx88[0]/2: queue is empty - first active
cx88[0]/2: cx8802_start_dma w: 0, h: 0, f: 2
cx88[0]/2: setting the interrupt mask
cx88[0]/2: [c78d97e0/0] cx8802_buf_queue - first active
Unable to handle kernel NULL pointer dereference at virtual address 00000000
  printing eip:
00000000
*pde = 18ad6067
*pte = 00000000
Oops: 0000 [#1]
PREEMPT
Modules linked in: cx88_dvb cx8802 cx88xx cx88_vp3054_i2c or51132 
video_buf_dvb nxt200x cx24123 cx22702 lirc_atiusb lirc_dev snd_pcm_oss 
snd_mixer_oss dvb_bt8xx dst_ca dst nxt6000 mt352 dvb_pll sp887x bt878 
tuner bttv video_buf compat_ioctl32 i2c_algo_bit v4l2_common btcx_risc 
ir_common tveeprom videodev dvb_core cx24110 or51211 lgdt330x i2c_core 
snd_via82xx gameport snd_ac97_codec snd_ac97_bus snd_pcm snd_timer 
snd_page_alloc snd_mpu401_uart snd_rawmidi snd_seq_device snd soundcore 
nfsd exportfs lockd autofs4 rfcomm l2cap bluetooth sunrpc via_rhine mii 
sg binfmt_misc dm_mod uhci_hcd ehci_hcd nvidia ipv6 tsdev ext3 jbd 
aic7xxx scsi_transport_spi sd_mod scsi_mod
CPU:    0
EIP:    0060:[<00000000>]    Tainted: P      VLI
EFLAGS: 00010246   (2.6.14.3)
EIP is at stext+0x3feffde0/0x20
eax: d9da4108   ebx: 000002ee   ecx: 00000000   edx: d9da4004
esi: d9da4108   edi: 00000000   ebp: ce7bd800   esp: c8e4df68
ds: 007b   es: 007b   ss: 0068
Process kdvb-fe-1 (pid: 28849, threadinfo=c8e4c000 task=d2a8aa90)
Stack: e0c3793d c8e4dfc8 0000000f e0c3b88c 00000001 00000000 c8e4c000 
c8e4dfbc
        c8e4dfbc c034c499 00000007 00000001 d0b06e60 c8e4dfb0 c011b6f2 
dcecd700
        d2a8aa90 de4dbdc0 c360deb4 c010303e d8170090 e0c37780 00000000 
d9da4108
Call Trace:
  [<e0c3793d>] dvb_frontend_thread+0x1bd/0x2c0 [dvb_core]
  [<c011b6f2>] schedule_tail+0x32/0xb0
  [<c010303e>] ret_from_fork+0x6/0x14
  [<e0c37780>] dvb_frontend_thread+0x0/0x2c0 [dvb_core]
  [<e0c37780>] dvb_frontend_thread+0x0/0x2c0 [dvb_core]
  [<c0101379>] kernel_thread_helper+0x5/0xc
Code:  Bad EIP value.
---------------------------

Could this be related, or a different problem, a symptom of mixing the 
two DVB-ATSC cards?

-- Bryan



Kirk Lapray wrote:
> Without having a NXT2002 card to try I am not sure how much I will be 
> able to help.
> 
> Just by looking at what is going on here it looks like the tuner might 
> not be changing.  The way I wrote the nxt200x module was by taking 
> taking the nxt2002 and nxt2004 modules and combining them into one.  A 
> lot of pieces of code were the same and were easily merged.  Other 
> places were completely different and a simple case function calls the 
> appropriate code.  A good place to start would be by looking at the 
> nxt2002 and nxt200x code and comparing them for the NXT2002 chip.  Most 
> likely there is something that I just overlooked when I put in the 
> nxt2002 code.  You could also try turning on debug in the nxt200x and 
> dvb-pll modules and see if that could give us some more information on 
> exactly what is going on.
> 
> Kirk
> 
> On 1/15/06, *Michael Krufky* <mkrufky at gmail.com 
> <mailto:mkrufky at gmail.com>> wrote:
> 
>     Michael Krufky wrote:
> 
>      > kernel BUG at /home/mk/v4l-dvb/v4l/dvb-pll.c:389!
>      > invalid operand: 0000 [#1]
>      > SMP
>      > Modules linked in: b2c2_flexcop_pci b2c2_flexcop mt352 bcm3510
>     stv0299
>      > dvb_core nxt200x firmware_class dvb_pll stv0297_cs2 lgdt330x mt312
>      > i2c_core sbp2 usb_storage snd_atiixp snd_atiixp_modem ehci_hcd
>      > snd_ac97_codec snd_ac97_bus ohci_hcd ohci1394 ieee1394 usbcore
>     snd_pcm
>      > snd_timer snd snd_page_alloc ati_agp agpgart
>      > CPU:    0
>      > EIP:    0060:[<f8d2c1b5>]    Not tainted VLI
>      > EFLAGS: 00010246   (2.6.14)
>      > EIP is at dvb_pll_configure+0x151/0x160 [dvb_pll]
>      > eax: 00000000   ebx: 00000004   ecx: 00000004   edx: f8d2e050
>      > esi: d7ba3f24   edi: 2b369f40   ebp: f8d2e020   esp: d7ba3ee0
>      > ds: 007b   es: 007b   ss: 0068
>      > Process kdvb-fe-0 (pid: 5988, threadinfo=d7ba2000 task=f6cc5a30)
>      > Stack: 31126b1a 0000000d f8d33621 d7730a00 00000031 d7ba3eff
>     00000001
>      > 40aa27cd
>      >        d7730a00 d7730b04 d7ba3f24 f72d8404 f8d34039 f8d2e020 d7ba3f24
>      > 2b369f40
>      >        00000000 00000286 f72d8400 00000001 00000000 2b369f40 f8d71515
>      > d7730b04
>      > Call Trace:
>      >  [<f8d33621>] nxt200x_microcontroller_stop+0x92/0xcf [nxt200x]
>      >  [<f8d34039>] nxt200x_setup_frontend_parameters+0x4f/0x615 [nxt200x]
>      >  [<f8d71515>] dvb_frontend_swzigzag_autotune+0x124/0x245 [dvb_core]
>      >  [<c0125e6f>] del_timer_sync+0x21/0x2a
>      >  [<f8d717c0>] dvb_frontend_swzigzag+0x18a/0x285 [dvb_core]
>      >  [<f8d71bf6>] dvb_frontend_thread+0x29c/0x2c1 [dvb_core]
>      >  [<c0131543>] autoremove_wake_function+0x0/0x4b
>      >  [<f8d7195a>] dvb_frontend_thread+0x0/0x2c1 [dvb_core]
>      >  [<c0101171>] kernel_thread_helper+0x5/0xb
>      > Code: 0b ff ff ff 3b 7d 04 73 07 b8 ea ff ff ff eb 8e 3b 7d 08 8d 76
>      > 00 0f 86 d9 fe ff ff b8 ea ff ff ff 90 8d 74 26 00 e9 73 ff ff ff
>     <0f>
>      > 0b 85 01 38 c5 d2 f8 e9 df fe ff ff 90 90 54 68 6f 6d 73 6f
> 
> 
> 
> 
>     Well, I just noticed the following in dvb-pll.c and made the
>     following fix:
> 
>     struct dvb_pll_desc dvb_pll_tbmv30111in = {
>             .name = "Samsung TBMV30111IN",
>             .min = 54000000,
>             .max = 860000000,
>     -       .count = 4,
>     +       .count = 6,
>             .entries = {
>                     { 172000000, 44000000, 166666, 0xb4, 0x01 },
>                     { 214000000, 44000000, 166666, 0xb4, 0x02 },
>                     { 467000000, 44000000, 166666, 0xbc, 0x02 },
>                     { 721000000, 44000000, 166666, 0xbc, 0x08 },
>                     { 841000000, 44000000, 166666, 0xf4, 0x08 },
>                     { 999999999, 44000000, 166666, 0xfc, 0x02 },
>             }
>     };
> 
>     .count needs to be changed to 6 ! (that may explain the oops)  I will
>     take care of that, (fixed in cvs as of now) then test again...
> 
>     [time goes by.... ]
> 
>     still azap is getting status 0x00, and atscscan finds nothing, but this
>     time it doesnt OOPS:
> 
>     mk at aftermath:~$ ./azap WPIX_Digital -r using
>     '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
>     tuning to 587000000 Hz
>     video pid 0x0031, audio pid 0x0034
>     status 00 | signal 7c60 | snr 5a22 | ber 00000000 | unc 00000000 |
>     status 00 | signal dc20 | snr 7b60 | ber 00000000 | unc 00000000 |
>     status 00 | signal da70 | snr 80d6 | ber 00000000 | unc 00000000 |
>     status 00 | signal 7190 | snr 595e | ber 00000000 | unc 00000000 |
>     status 00 | signal dd80 | snr 7aa4 | ber 00000000 | unc 00000000 |
>     status 00 | signal ddd0 | snr 7dc6 | ber 00000000 | unc 00000000 |
>     status 00 | signal 7390 | snr 59b0 | ber 00000000 | unc 00000000 |
> 
> 
>     b2c2-flexcop: B2C2 FlexcopII/II(b)/III digital TV receiver chip loaded
>     successfully
>     flexcop-pci: will use the HW PID filter.
>     flexcop-pci: card revision 2
>     ACPI: PCI Interrupt 0000:02:07.0[A] -> GSI 19 (level, low) -> IRQ 19
>     DVB: registering new adapter (FlexCop Digital TV device).
>     b2c2-flexcop: MAC address = 00:d0:d7:02:54:5f
>     b2c2-flexcop: i2c master_xfer failed
>     b2c2-flexcop: i2c master_xfer failed
>     b2c2-flexcop: i2c master_xfer failed
>     mt352_read_register: readreg error (reg=127, ret==-121)
>     nxt200x: NXT2002 Detected
>     b2c2-flexcop: found the nxt2002 at i2c address: 0x0a
>     DVB: registering frontend 0 (Nextwave NXT200X VSB/QAM frontend)...
>     b2c2-flexcop: initialization of 'Air2PC/AirStar 2 ATSC 2nd generation'
>     at the 'PCI' bus controlled by a 'FlexCopIIb' complete
>     nxt2002: Waiting for firmware upload (dvb-fe-nxt2002.fw)...
>     nxt2002: Waiting for firmware upload(2)...
>     nxt2002: Firmware upload complete
> 
> 
> 
>     -Michael
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> linux-dvb mailing list
> linux-dvb at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb



More information about the linux-dvb mailing list