Comment 0 for bug 836062

Revision history for this message
TJ (tj) wrote : [meida/video] cx88xx HVR-1300,HVR-3000, HVR-4000 tveeprom: Huh, no eeprom present

A long-standing bug still affecting kernel v3.1-rc3 (affects Ubuntu from Hardy through Oneiric) that occurs during boot where the Hauppauge cx88xx device fails to read the EEPROM using tveeprom_read(), which results in the Infra-Red receiver failing to be initialised, amongst other problems.

A related fix for LP bug #439163 "HVR-1300 HVR-3000 HVR-4000 broken in kernel" submitted to the main-line kernel by Devin Heitmueller of Kernel Labs (commit: 2d196931 in v3.0) addresses a related issue (opening/closing of the tuner frontends in rapid succession causes channel scan failures) but doesn't solve this issue.

The cause appears to be failure to correctly initialise the tuner's i2c bus, or gracefully handle errors from i2c_transfer().

I'm currently working with mainline kernels from Linus' tree with Mythbuntu 10.04 Natty to trace the issue and hopefully resolve it for an HVR-4000. If I can resolve it in main-line hopefully the patch can be backported to LTS releases.

[ 0.000000] Linux version 3.1.0-0301rc3-generic (root@zinc) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #201108231005 SMP Tue Au
g 23 11:10:27 UTC 2011
...
[ 9.901908] IR NEC protocol handler initialized
[ 9.938166] cx88/2: cx2388x MPEG-TS Driver Manager version 0.0.9 loaded
[ 9.938266] cx88[0]: quirk: PCIPCI_TRITON -- set TBFX
[ 9.938271] cx88[0]: quirk: PCIPCI_ALIMAGIK -- latency fixup
[ 9.938286] cx88[0]: setting pci latency timer to -1
[ 9.943547] cx88/0: cx2388x v4l2 driver version 0.0.9 loaded
[ 9.964453] cx88[0]: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68,autodetected], frontend(s): 2
[ 9.964463] cx88[0]: TV tuner type 63, Radio tuner type -1
[ 9.964468] cx88[0]: cx88_reset
[ 10.015789] IR RC5(x) protocol handler initialized
[ 10.041429] IR RC6 protocol handler initialized
[ 10.082720] IR JVC protocol handler initialized
[ 10.112795] IR Sony protocol handler initialized
[ 10.148789] IR MCE Keyboard/mouse protocol handler initialized
[ 10.176078] lirc_dev: IR Remote Control driver registered, major 250
[ 10.182052] IR LIRC bridge handler initialized
[ 10.436710] cx88[0]: i2c register ok
[ 10.436720] cx88[0]: i2c init: enabling analog demod on HVR1300/3000/4000 tuner
[ 10.692251] i2c-core: driver [tuner] using legacy suspend method
[ 10.692259] i2c-core: driver [tuner] using legacy resume method
[ 11.060383] EXT4-fs (sda3): re-mounted. Opts: errors=remount-ro
[ 11.079076] cx2388x alsa driver version 0.0.9 loaded
[ 11.270057] tveeprom 1-0050: Huh, no eeprom present (err=-6)?
[ 11.270071] tveeprom 1-0050: Encountered bad packet header [00]. Corrupt or not a Hauppauge eeprom.
[ 11.270077] cx88[0]: warning: unknown hauppauge model #0
[ 11.270081] cx88[0]: hauppauge eeprom: model=0
...
[ 11.652049] Registered IR keymap rc-hauppauge
[ 11.652871] input: cx88 IR (Hauppauge WinTV-HVR400 as /devices/pci0000:00/0000:00:0d.2/rc/rc0/input5
[ 11.653178] rc0: cx88 IR (Hauppauge WinTV-HVR400 as /devices/pci0000:00/0000:00:0d.2/rc/rc0
[ 12.348467] input: MCE IR Keyboard/Mouse (cx88xx) as /devices/virtual/input/input6
[ 12.350773] rc rc0: lirc_dev: driver ir-lirc-codec (cx88xx) registered at minor = 0
[ 12.350785] cx88[0]/2: cx2388x 8802 Driver Manager
[ 12.350802] cx88-mpeg driver manager 0000:00:0d.2: enabling device (0014 -> 0016)
[ 12.351385] ACPI: PCI Interrupt Link [LNKF] enabled at IRQ 11
[ 12.351395] cx88-mpeg driver manager 0000:00:0d.2: PCI INT A -> Link[LNKF] -> GSI 11 (level, low) -> IRQ 11
[ 12.351408] cx88[0]/2: found at 0000:00:0d.2, rev: 5, irq: 11, latency: 255, mmio: 0xc8000000
[ 12.351504] cx8800 0000:00:0d.0: enabling device (0014 -> 0016)
[ 12.351514] cx8800 0000:00:0d.0: PCI INT A -> Link[LNKF] -> GSI 11 (level, low) -> IRQ 11
[ 12.351525] cx88[0]/0: found at 0000:00:0d.0, rev: 5, irq: 11, latency: 32, mmio: 0xca000000
...
[ 12.773653] wm8775 1-001b: chip found @ 0x36 (cx88[0])
[ 12.808186] NVRM: loading NVIDIA UNIX x86 Kernel Module 173.14.30 Thu Apr 14 08:47:14 PDT 2011
[ 12.847981] cx88[0]: set_tvnorm: "NTSC-M" fsc8=28636360 adc=28636363 vdec=28636360 db/dr=28636360/28636360
[ 12.847994] cx88[0]: set_pll: MO_PLL_REG 0x00fffffe [old=0x00f15f18,freq=28636360]
[ 12.848013] cx88[0]: pll locked [pre=2,ofreq=28636360]
[ 12.848019] cx88[0]: set_tvnorm: MO_INPUT_FORMAT 0x00000001 [old=0x00000000]
[ 12.848026] cx88[0]: set_tvnorm: MO_OUTPUT_FORMAT 0x181f0008 [old=0x181f0000]
[ 12.848033] cx88[0]: set_tvnorm: MO_SCONV_REG 0x00020000 [old=0x00021f07]
[ 12.848039] cx88[0]: set_tvnorm: MO_SUB_STEP 0x00400000 [old=0x0043e0f8]
[ 12.848045] cx88[0]: set_tvnorm: MO_SUB_STEP_DR 0x00400000 [old=0x00538e38]
[ 12.848052] cx88[0]: set_tvnorm: MO_AGC_BURST 0x00007270 [old=0x00006d63,bdelay=114,agcdelay=112]
[ 12.848059] cx88[0]: set_tvnorm: MO_HTOTAL 0x0000038e [old=0x0000135a,htotal=910]
[ 12.848067] cx88[0]: set_scale: 320x240 [TB,NTSC-M]
[ 12.848071] cx88[0]: set_scale: hdelay 0x0038 (width 754)
[ 12.848075] cx88[0]: set_scale: hscale 0x15b3
[ 12.848078] cx88[0]: set_scale: hactive 0x0140
[ 12.848082] cx88[0]: set_scale: vdelay 0x0018
[ 12.848085] cx88[0]: set_scale: vscale 0x1e00
[ 12.848089] cx88[0]: set_scale: vactive 0x01e0
[ 12.848095] cx88[0]: set_scale: filter 0x80009
[ 12.896662] cx88[0]/0: registered device video1 [v4l2]
[ 12.896900] cx88[0]/0: registered device vbi0
[ 12.896970] cx88_audio 0000:00:0d.1: enabling device (0014 -> 0016)
[ 12.896991] cx88_audio 0000:00:0d.1: PCI INT A -> Link[LNKF] -> GSI 11 (level, low) -> IRQ 11
[ 12.897042] cx88[0]/1: CX88x/0: ALSA support for cx2388x boards
[ 12.897740] snd_cmipci 0000:00:05.0: enabling device (0084 -> 0085)
[ 12.897756] snd_cmipci 0000:00:05.0: PCI INT A -> Link[LNKF] -> GSI 11 (level, low) -> IRQ 11
[ 12.937107] snd_cmipci 0000:00:0a.0: enabling device (0084 -> 0085)
[ 12.937668] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10
[ 12.937675] PCI: setting IRQ 10 as level-triggered
[ 12.937684] snd_cmipci 0000:00:0a.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, low) -> IRQ 10
...
[ 13.712708] cx88/2: cx2388x dvb driver version 0.0.9 loaded
[ 13.712717] cx88/2: registering cx8802 driver, type: dvb access: shared
[ 13.712727] cx88[0]/2: subsystem: 0070:6902, board: Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid [card=68]
[ 13.712734] cx88[0]/2: cx2388x based DVB/ATSC card
[ 13.712740] cx8802_alloc_frontends() allocating 2 frontend(s)
[ 14.657161] tuner-simple 1-0061: creating new instance
[ 14.657173] tuner-simple 1-0061: type set to 63 (Philips FMD1216ME MK3 Hybrid Tuner)
[ 14.661849] DVB: registering new adapter (cx88[0])
[ 14.661868] DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)...
[ 14.676705] DVB: registering adapter 0 frontend 1 (Conexant CX22702 DVB-T)...