Re: Porting analog support from HVR-1500 to the DViCO FusionHDTV7 Dual Express (Read this one)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 18, 2008 at 11:53 PM, Steven Toth <stoth@xxxxxxxxxxx> wrote:
Tim Lucas wrote:
Please excuse my previous message.  I hit the send button too early.

OK, so I am going to take the advice of others and be persistant.  I am trying to add analog support for the
DViCO FusionHDTV7 Dual Express by working with the current code for the HVR-1500. Loading the HVR-1500 driver doesn't work. I have thoughts about the dmesg output.

[   11.088311] CORE cx23885[0]: subsystem: 18ac:d618, board: Hauppauge
WinTV-HVR1500 [card=6,insmod option]
[   11.224568] cx23885[0]: i2c bus 0 registered
[   11.224609] cx23885[0]: i2c bus 1 registered
[   11.224632] cx23885[0]: i2c bus 2 registered
[   11.251024] tveeprom 2-0050: Encountered bad packet header [ff]. Corrupt or not a Hauppauge eeprom.
[   11.251026] cx23885[0]: warning: unknown hauppauge model #0
[   11.251027] cx23885[0]: hauppauge eeprom: model=0

This makes sense because it is not a hauppauge card, but I think it might be a harmless warning.

You can ignore the eeprom error, it is not effecting your tests.



[   11.268639] cx25840' 4-0044: cx25  0-21 found @ 0x88 (cx23885[0])
[   11.283305] tuner' 2-0064: chip found @ 0xc8 (cx23885[0])
[   11.285887] tuner' 3-0064: chip found @ 0xc8 (cx23885[0])
[   11.288377] cx23885[0]/0: registered device video0 [v4l2]
[   11.288653] cx23885[0]/1: registered ALSA audio device
[   11.288658] tuner' 3-0064: tuner type not set

2-0064 and 3-0064 are probably the dual digital tuners.  3-0064 tuner type is not set because the HVR1500 card
is a single tuner card and so it only sets one tuner.  I am guessing that cx25840' 4-0044 has something to
do with the analog support.  
[   11.292131] firmware: requesting v4l-cx23885-avcore-01.fw
[   11.310299] cx25840' 4-0044: unable to open firmware v4l-cx23885-avcore-01.fw

Why is it trying to load v4l-cx23885-avcore-01.fw?  I have the xc5000 firmware installed from
http://www.steventoth.net/linux/xc5000/
because that is the correct firmware for my card.

If you specify analog .porta in the card struct, it has to load the analog audio encoder firmware. This is why this firmware is loaded.


[   11.324551] cx23885[0]: cx23885 based dvb card
[   11.348947] cx23885[0]: frontend initialization failed
[   11.348949] cx23885_dvb_register() dvb_register failed err = -1
[   11.348951] cx23885_dev_setup() Failed to register dvb on VID_C
[   11.348955] cx23885_dev_checkrevision() Hardware revision = 0xb0

Is this error a big deal or is it fatal?

remove the portb and portc entries in your newly defined cards struct, these errors will be removed.

Focus on fixing analog first, enabling portb and portc only complicates things.



Next I tried to go out and find v4l-cx23885-avcore-01.fw which was at  <http://www.steventoth.net/linux/hvr1800/>
http://www.steventoth.net/linux/hvr1800/

I loaded this firmware too.  Results are the same until:
[   11.254199] firmware: requesting v4l-cx23885-avcore-01.fw
[   11.876323] cx25840' 4-0044: loaded v4l-cx23885-avcore-01.fw firmware
(16382 bytes)
[   11.890444] cx23885[0]: cx23885 based dvb card
[   11.920769] cx23885[0]: frontend initialization failed
[   11.920771] cx23885_dvb_register() dvb_register failed err = -1
[   11.920773] cx23885_dev_setup() Failed to register dvb on VID_C
[   11.920777] cx23885_dev_checkrevision() Hardware revision = 0xb0

So it loaded the firmware, but it didn't help with tuning channels.  Next attempt was to copy the relevant code from the HVR-1500 section to the FusionHDTV7 Dual Express section.  This was just a few lines in /linux/drivers/media/video/cx23885/cx23885-cards.c that you will see a little later in this message.  The dmesg output was

[   11.613432] cx23885 0000:08:00.0: PCI INT A -> Link[APC6] -> GSI 16 (level, low) -> IRQ
 16
[   11.613491] CORE cx23885[0]: subsystem: 18ac:d618, board: DViCO FusionHDTV7 Dual Expres
s [card=10,autodetected]
[   11.752552] cx23885[0]: i2c bus 0 registered
[   11.752824] cx23885[0]: i2c bus 1 registered
[   11.752850] cx23885[0]: i2c bus 2 registered
[   11.806061] cx25840' 4-0044: cx25  0-21 found @ 0x88 (cx23885[0])
[   11.815419] tuner' 2-0064: chip found @ 0xc8 (cx23885[0])
[   11.818004] tuner' 3-0064: chip found @ 0xc8 (cx23885[0])
[   11.820086] cx23885[0]/0: registered device video0 [v4l2]
[   11.820356] cx23885[0]/1: registered ALSA audio device
[   11.820360] tuner' 3-0064: tuner type not set
[   11.833710] firmware: requesting v4l-cx23885-avcore-01.fw
[   12.504759] cx25840' 4-0044: loaded v4l-cx23885-avcore-01.fw firmware (16382 bytes)
[   12.518893] cx23885[0]: cx23885 based dvb card
[   12.694643] xc5000: Successfully identified at address 0x64
[   12.694645] xc5000: Firmware has not been loaded previously
[   12.694651] DVB: registering new adapter (cx23885[0])
[   12.694654] DVB: registering frontend 0 (Samsung S5H1411 QAM/8VSB Frontend)...
[   12.696204] cx23885[0]: cx23885 based dvb card
[   12.741530] xc5000: Successfully identified at address 0x64
[   12.741531] xc5000: Firmware has not been loaded previously
[   12.741533] DVB: registering new adapter (cx23885[0])
[   12.741535] DVB: registering frontend 1 (Samsung S5H1411 QAM/8VSB Frontend)...
[   12.743028] cx23885_dev_checkrevision() Hardware revision = 0xb0
[   12.743034] cx23885[0]/0: found at 0000:08:00.0, rev: 2, irq: 16, latency: 0, mmio: 0xf
d800000
[   12.743039] cx23885 0000:08:00.0: setting latency timer to 64

I don't get dvb_register() or dev_checkrevision() errors, but I still can't tune channels.  I suspect that
I have loaded the digital stuff, but the analog stuff hasn't been loaded successfully.

Use tvtime and switch he input to svideo or composite, does this work?



Were there things that were HVR1500 specific?  I took a look at /linux/drivers/media/video/cx23885/cx23885-cards.c:

[CX23885_BOARD_HAUPPAUGE_HVR1500] = {
               .name           = "Hauppauge WinTV-HVR1500",
// The section for my card is
[CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP] = {
               .name           = "DViCO FusionHDTV7 Dual Express",
               .porta          = CX23885_ANALOG_VIDEO,
 //  I added the following for the dvico card                  .portb  = CX23885_MPEG_DVB,

remove the portb definition for the time being.


// back to original code
               .portc          = CX23885_MPEG_DVB,
// the following is probably not compatible with the dvico card
               .tuner_type     = TUNER_XC2028,
               .tuner_addr     = 0x61, /* 0xc2 >> 1 */

Acccording to the logs, shouldn't this be 0xc8 >> 1? or 0xc4 >> 1?


// I tried replacing it with the following code.  It is a guess, but the following dmesg makes it seem like a good guess.
               .tuner_type     = TUNER_XC5000,
               .tuner_addr     = 0x64, /* 0xc2 >> 1 */
//  Why is the stuff below referring to 25480?  Probably because that has analog support.

Correct.


//  Is that why it asks for the v4l-cx23885-avcore-01.fw firmware?

Yes.


// Why are there three different versions below?  I would think that TV, Composite and SVideo are outputs,

One section for each available input. TVTuner, Composite and Svideo. They configure the video mux to the correct signals are received by the video hardware.


// but the mythtv tuning setup makes it seem like they are input.
               .input          = {{
                       .type   = CX23885_VMUX_TELEVISION,
                       .vmux   =       CX25840_VIN7_CH3 |
                                       CX25840_VIN5_CH2 |
                                       CX25840_VIN2_CH1,
                       .gpio0  = 0,
               }, {
                       .type   = CX23885_VMUX_COMPOSITE1,
                       .vmux   =       CX25840_VIN7_CH3 |
                                       CX25840_VIN4_CH2 |
                                       CX25840_VIN6_CH1,
                       .gpio0  = 0,
               }, {
                       .type   = CX23885_VMUX_SVIDEO,
                       .vmux   =       CX25840_VIN7_CH3 |
                                       CX25840_VIN4_CH2 |
                                       CX25840_VIN8_CH1 |
                                       CX25840_SVIDEO_ON,
                       .gpio0  = 0,
               } },

With those minor changes I tried loading the cx23885 module again.
[   10.977705] CORE cx23885[0]: subsystem: 18ac:d618, board: DViCO FusionHDTV7 Dual Express [card=10,autodetected]
[   11.116725] cx23885[0]: i2c bus 0 registered
[   11.116738] cx23885[0]: i2c bus 1 registered
[   11.116752] cx23885[0]: i2c bus 2 registered
[   11.158834] cx25840' 4-0044: cx25  0-21 found @ 0x88 (cx23885[0])
[   11.186669] tuner' 2-0064: chip found @ 0xc8 (cx23885[0])
[   11.228894] xc5000: Successfully identified at address 0x64
[   11.228896] xc5000: Firmware has not been loaded previously
[   11.229567] xc5000: waiting for firmware upload (dvb-fe-xc5000-1.1.fw)...
[   11.229570] firmware: requesting dvb-fe-xc5000-1.1.fw
[   11.301703] xc5000: firmware read 12332 bytes.
[   11.301706] xc5000: firmware upload
[   11.301708] xc5000: no tuner reset callback function, fatal

You need to modify the tuner_callback function to toggle the correct GPIO and reset the tuner hardware, else you will get this error.


[   13.766578] tuner' 3-0064: chip found @ 0xc8 (cx23885[0])
[   13.767308] xc5000: Successfully identified at address 0x64
[   13.767309] xc5000: Firmware has not been loaded previously
[   13.767979] xc5000: waiting for firmware upload (dvb-fe-xc5000-1.1.fw)...
[   13.767980] firmware: requesting dvb-fe-xc5000-1.1.fw
[   13.769073] xc5000: firmware read 12332 bytes.
[   13.769074] xc5000: firmware upload
[   13.769075] xc5000: no tuner reset callback function, fatal
[   16.238788] xc5000: Successfully identified at address 0x64
[   16.238790] xc5000: Firmware has been loaded previously
[   17.384118] cx23885[0]/0: registered device video0 [v4l2]
[   17.384429] cx23885[0]/1: registered ALSA audio device
[   19.479469] firmware: requesting v4l-cx23885-avcore-01.fw
[   20.084869] cx25840' 4-0044: loaded v4l-cx23885-avcore-01.fw firmware (16382 bytes)

Why is this still asking for v4l-cx23885-avcore-01.fw firmware?  I thought that

Because porta is defined as being an analog input.


my alterations would have changed that?   I could remove it, but
I bet it would still be asking for it.  It seems to load the xc5000
over and over again so I am guessing my changes were wrong.

[   20.098995] cx23885[0]: cx23885 based dvb card
[   20.178461] xc5000: Successfully identified at address 0x64
[   20.178462] xc5000: Firmware has been loaded previously
[   20.178470] DVB: registering new adapter (cx23885[0])
[   20.178474] DVB: registering frontend 0 (Samsung S5H1411 QAM/8VSB Frontend)...
[   20.180029] cx23885[0]: cx23885 based dvb card
[   20.225399] xc5000: Successfully identified at address 0x64
[   20.225400] xc5000: Firmware has been loaded previously
[   20.225403] DVB: registering new adapter (cx23885[0])
[   20.225404] DVB: registering frontend 1 (Samsung S5H1411 QAM/8VSB Frontend)...
[   20.226909] cx23885_dev_checkrevision() Hardware revision = 0xb0
[   20.226915] cx23885[0]/0: found at 0000:08:00.0, rev: 2, irq: 16, latency: 0, mmio: 0xf
d800000
[   20.226920] cx23885 0000:08:00.0: setting latency timer to 64

Again I don't get dvb_register() or dev_checkrevision() errors, but I still can't tune channels.

Try tvtime, and switch tvtime to use the composite or svideo inputs connected to a video source. Does this help?


What should go here for my card?
              .tuner_type     = ?
              .tuner_addr     = ?

As you can see I have made several attempts to dive into the code and understand the error messages.  I have tried to identify problem areas so that someone more familiar with the code could possibly see what the errors may be.

Good good. Disable all of the portb and portc code. Focus on getting analog svideo or composite working first. After this the tuner changes should be small.

Once analog is working correctly, digital can be enabled.

Thanks Tim,

- Steve


I followed you advice and changed the tuner to 0xc8 >> 1.  I get a warning about outdated support for tuners and a request for xc3028-v27.fw.  I went looking for the file, but could not find it.  Any ideas?  I still cannot tune channels with tvtime.  Thanks for your help.  My dmesg output is below.

[   11.066472] cx23885 driver version 0.0.1 loaded
[   11.067254] ACPI: PCI Interrupt Link [APC6] enabled at IRQ 16
[   11.067257] cx23885 0000:08:00.0: PCI INT A -> Link[APC6] -> GSI 16 (level, low) -> IRQ 16
[   11.067327] CORE cx23885[0]: subsystem: 18ac:d618, board: Hauppauge WinTV-HVR1500 [card=6,insmod option]
[   11.176039] cx23885[0]: i2c bus 0 registered
[   11.176063] cx23885[0]: i2c bus 1 registered
[   11.176085] cx23885[0]: i2c bus 2 registered
[   11.202476] tveeprom 2-0050: Encountered bad packet header [ff]. Corrupt or not a Hauppauge eeprom.
[   11.202479] cx23885[0]: warning: unknown hauppauge model #0
[   11.202480] cx23885[0]: hauppauge eeprom: model=0
[   11.210785] cx25840' 4-0044: cx25  0-21 found @ 0x88 (cx23885[0])
[   11.236265] tuner' 2-0064: chip found @ 0xc8 (cx23885[0])
[   11.298695] xc2028 2-0064: creating new instance
[   11.298697] xc2028 2-0064: type set to XCeive xc2028/xc3028 tuner
[   11.298699] tuner' 2-0064: ====================== WARNING! ======================
[   11.298701] tuner' 2-0064: Support for tuners in i2c address range 0x64 thru 0x6f
[   11.298702] tuner' 2-0064: will soon be dropped. This message indicates that your
[   11.298704] tuner' 2-0064: hardware has a Xceive XC3028 tuner at i2c address 0x64.
[   11.298705] tuner' 2-0064: To ensure continued support for your device, please
[   11.298706] tuner' 2-0064: send a copy of this message, along with full dmesg
[   11.298708] tuner' 2-0064: output to v4l-dvb-maintainer@xxxxxxxxxxx
[   11.298709] tuner' 2-0064: Please use subject line: "obsolete tuner i2c address."
[   11.298710] tuner' 2-0064: driver: cx23885[0], addr: 0x64, type: 71 (Xceive XC3028)
[   11.298712] tuner' 2-0064: ====================== WARNING! ======================

The warning gets repeated several times for 2-0064 and 3-0064.

[   11.303497] cx23885[0]/0: registered device video0 [v4l2]
[   11.303770] cx23885[0]/1: registered ALSA audio device
[   11.303779] firmware: requesting xc3028-v27.fw
[   11.329126] xc2028 3-0064: Error: firmware xc3028-v27.fw not found.
[   11.332622] firmware: requesting v4l-cx23885-avcore-01.fw
[   11.333993] cx25840' 4-0044: unable to open firmware v4l-cx23885-avcore-01.fw
[   11.348605] cx23885_dev_checkrevision() Hardware revision = 0xb0
[   11.348611] cx23885[0]/0: found at 0000:08:00.0, rev: 2, irq: 16, latency: 0, mmio: 0xfd800000
[   11.348617] cx23885 0000:08:00.0: setting latency timer to 64


--
--Tim
_______________________________________________
linux-dvb mailing list
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux