[linux-dvb] xc3028 config issue. Re: Why I need to choose better Subject: headers [was: Re: Why (etc.)]

Paul Chubb paulc at singlespoon.org.au
Mon Sep 15 08:39:24 CEST 2008


Steven Toth wrote:
>
> Mauro, see question below.
>
> Paul Chubb wrote:
>> Steven Toth wrote:
>>> Paul Chubb wrote:
>>>> Barry,
>>>> I drew the line at porting the xc3028 tuner module from mcentral.de 
>>>> into v4l-dvb, so no didn't solve the firmware issues. If you know 
>>>> what you are doing it should be trivial work - just linking in yet 
>>>> another tuner module and then calling it like all the others. For 
>>>> me because I don't know the code well it would take a week or two.
>>>
>>> No porting required.
>>>
>>> xc3028 tuner is already in the kernel, it should just be a case of 
>>> configuring the attach/config structs correctly.
>>>
>>> - Steve
>>>
>> Steve,
>>           I think we are talking about two different things. Yes the 
>> xc3028 tuner is supported via tuner-xc2028 and works for many xc3028 
>> based cards. This support uses the xc3028-v27.fw file that contains 
>> say 80 firmware modules. This firmware was extracted from a Haupage 
>> windows driver.
>
> Correct.
>
> (I changed the subject by the way)
>
>>
>> I believe that the 1800H has some incompatibility with this firmware. 
>> The mcentral.de tree has a different firmware loading and tuner 
>> support module for xc3028 that loads individual firmware modules - 
>> you literally put twenty or thirty files into /lib/firmware. This 
>> firmware is the standard firmware from xceive before the card 
>> manufacturers get to it. Comparing the dmesg listing from a working 
>> mcentral.de setup and the non-working v4l tree the only thing that 
>> leaps out is the different firmware. If I was continuing the next 
>> step would be to port that tuner module into the v4l code and set it 
>> up in the normal way.
>
> the v27.fw file does contain the correct firmware, so the fact that 
> the inkernel tuner driver isn't select the correct version (or that it 
> needs a hint in the config struct) is probably a very small fix.
>
> Mauro (cc'd) generally maintains that driver and he should be able to 
> help. My suggestion is that you cut/paste the attach/config struct 
> from your leadtek code into this email thread. From you email address 
> I guess you're trying to get DVB-T 7MHz working in Australia. Mauro 
> can review it.
>
> Ideally, we'd point you at a different card struct for the same tuner 
> that we know works in Australia, so you build the leadtek config 
> struct based on something that we know works.
>
> Mauro, what should the attach/config struct look like for a 
> xc2028/3028 tune in Australia? Can you point to a working example or 
> suggest a change?
>
> Regards,
>
> - Steve
>
>
>
>
static struct zl10353_config cx88_dtv1800h = {
       .demod_address = (0x1e >> 1),
       .no_tuner = 1,
};

case CX88_BOARD_WINFAST_DTV1800H:
                dev->dvb.frontend = dvb_attach(zl10353_attach,
                                               &cx88_dtv1800h,
                                               &dev->core->i2c_adap);
                if (dev->dvb.frontend != NULL) {
                   struct dvb_frontend *fe;
                   struct xc2028_config cfg = {
                      .i2c_adap  = &dev->core->i2c_adap,
                      .i2c_addr  = 0x61,
                      .video_dev = dev->core,
                                .callback  = cx88_xc3028_callback,
                   };
                   static struct xc2028_ctrl ctl = {
                      .fname       = "xc3028-v27",
                      .max_len     = 64,
                  };

                  fe = dvb_attach(xc2028_attach, dev->dvb.frontend, &cfg);
                  if (fe != NULL && fe->ops.tuner_ops.set_config != NULL)
                      fe->ops.tuner_ops.set_config(fe, &ctl);
               }
               dev->dvb.frontend->ops.i2c_gate_ctrl = NULL;
               dev->dvb.frontend->ops.sleep = NULL;
               break;

This produces the following dmesg when attempting to scan

162.664155] dvb_frontend_release
[  162.664166] cx88[0]/2-dvb: cx8802_dvb_advise_release
[  164.538048] xc2028 2-0061: xc2028_sleep called
[  164.539220] xc2028 2-0061: Error on line 1075: -121
[  166.924301] dvb_frontend_open
[  166.924312] cx88[0]/2-dvb: cx8802_dvb_advise_acquire
[  166.924316] dvb_frontend_start
[  166.925247] dvb_frontend_ioctl
[  166.925255] dvb_frontend_thread
[  166.925258] DVB: initialising frontend 0 (Zarlink ZL10353 DVB-T)...
[  166.948442] dvb_frontend_ioctl
[  166.948456] dvb_frontend_add_event
[  166.948478] dvb_frontend_swzigzag_autotune: drift:0 inversion:0 
auto_step:0 auto_sub_step:0 started_auto_step:0
[  166.951013] zl10353: zl10353_calc_nominal_rate: bw 7, adc_clock 
450560 => 0x5ae9
[  166.951621] zl10353: zl10353_calc_input_freq: if2 361667, ife 88893, 
adc_clock 450560 => -12930 / 0xcd7e
[  166.952833] xc2028 2-0061: xc2028_set_params called
[  166.952838] xc2028 2-0061: generic_set_freq called
[  166.952841] xc2028 2-0061: should set frequency 205625 kHz
[  166.952845] xc2028 2-0061: check_firmware called
[  166.952849] xc2028 2-0061: load_all_firmwares called
[  166.952852] xc2028 2-0061: Reading firmware xc3028-v27.fw
[  167.016500] xc2028 2-0061: Loading 80 firmware images from 
xc3028-v27.fw, type: xc2028 firmware, ver 2.7
[  167.016524] xc2028 2-0061: Reading firmware type BASE F8MHZ (3), id 
0, size=8718.
[  167.016548] xc2028 2-0061: Reading firmware type BASE F8MHZ MTS (7), 
id 0, size=8712.
[  167.016573] xc2028 2-0061: Reading firmware type BASE FM (401), id 0, 
size=8562.
[  167.016596] xc2028 2-0061: Reading firmware type BASE FM INPUT1 
(c01), id 0, size=8576.
[  167.016619] xc2028 2-0061: Reading firmware type BASE (1), id 0, 
size=8706.
[  167.016640] xc2028 2-0061: Reading firmware type BASE MTS (5), id 0, 
size=8682.
[  167.016652] xc2028 2-0061: Reading firmware type (0), id 100000007, 
size=161.
[  167.016658] xc2028 2-0061: Reading firmware type MTS (4), id 
100000007, size=169.
[  167.016665] xc2028 2-0061: Reading firmware type (0), id 200000007, 
size=161.
[  167.016671] xc2028 2-0061: Reading firmware type MTS (4), id 
200000007, size=169.
[  167.016677] xc2028 2-0061: Reading firmware type (0), id 400000007, 
size=161.
[  167.016683] xc2028 2-0061: Reading firmware type MTS (4), id 
400000007, size=169.
[  167.016689] xc2028 2-0061: Reading firmware type (0), id 800000007, 
size=161.
[  167.016695] xc2028 2-0061: Reading firmware type MTS (4), id 
800000007, size=169.
[  167.016701] xc2028 2-0061: Reading firmware type (0), id 3000000e0, 
size=161.
[  167.016706] xc2028 2-0061: Reading firmware type MTS (4), id 
3000000e0, size=169.
[  167.016712] xc2028 2-0061: Reading firmware type (0), id c000000e0, 
size=161.
[  167.016718] xc2028 2-0061: Reading firmware type MTS (4), id 
c000000e0, size=169.
[  167.016724] xc2028 2-0061: Reading firmware type (0), id 200000, 
size=161.
[  167.016729] xc2028 2-0061: Reading firmware type MTS (4), id 200000, 
size=169.
[  167.016735] xc2028 2-0061: Reading firmware type (0), id 4000000, 
size=161.
[  167.016741] xc2028 2-0061: Reading firmware type MTS (4), id 4000000, 
size=169.
[  167.016747] xc2028 2-0061: Reading firmware type D2633 DTV6 ATSC 
(10030), id 0, size=149.
[  167.016754] xc2028 2-0061: Reading firmware type D2620 DTV6 QAM (68), 
id 0, size=149.
[  167.016761] xc2028 2-0061: Reading firmware type D2633 DTV6 QAM (70), 
id 0, size=149.
[  167.016767] xc2028 2-0061: Reading firmware type D2620 DTV7 (88), id 
0, size=149.
[  167.016774] xc2028 2-0061: Reading firmware type D2633 DTV7 (90), id 
0, size=149.
[  167.016780] xc2028 2-0061: Reading firmware type D2620 DTV78 (108), 
id 0, size=149.
[  167.016786] xc2028 2-0061: Reading firmware type D2633 DTV78 (110), 
id 0, size=149.
[  167.016792] xc2028 2-0061: Reading firmware type D2620 DTV8 (208), id 
0, size=149.
[  167.016798] xc2028 2-0061: Reading firmware type D2633 DTV8 (210), id 
0, size=149.
[  167.016804] xc2028 2-0061: Reading firmware type FM (400), id 0, 
size=135.
[  167.016810] xc2028 2-0061: Reading firmware type (0), id 10, size=161.
[  167.016816] xc2028 2-0061: Reading firmware type MTS (4), id 10, 
size=169.
[  167.016822] xc2028 2-0061: Reading firmware type (0), id 1000400000, 
size=169.
[  167.016828] xc2028 2-0061: Reading firmware type (0), id c00400000, 
size=161.
[  167.016833] xc2028 2-0061: Reading firmware type (0), id 800000, 
size=161.
[  167.016839] xc2028 2-0061: Reading firmware type (0), id 8000, size=161.
[  167.016844] xc2028 2-0061: Reading firmware type LCD (1000), id 8000, 
size=161.
[  167.016850] xc2028 2-0061: Reading firmware type LCD NOGD (3000), id 
8000, size=161.
[  167.016857] xc2028 2-0061: Reading firmware type MTS (4), id 8000, 
size=169.
[  167.016863] xc2028 2-0061: Reading firmware type (0), id b700, size=161.
[  167.016869] xc2028 2-0061: Reading firmware type LCD (1000), id b700, 
size=161.
[  167.016875] xc2028 2-0061: Reading firmware type LCD NOGD (3000), id 
b700, size=161.
[  167.016881] xc2028 2-0061: Reading firmware type (0), id 2000, size=161.
[  167.016887] xc2028 2-0061: Reading firmware type MTS (4), id b700, 
size=169.
[  167.016893] xc2028 2-0061: Reading firmware type MTS LCD (1004), id 
b700, size=169.
[  167.016899] xc2028 2-0061: Reading firmware type MTS LCD NOGD (3004), 
id b700, size=169.
[  167.016906] xc2028 2-0061: Reading firmware type SCODE HAS_IF_3280 
(60000000), id 0, size=192.
[  167.016913] xc2028 2-0061: Reading firmware type SCODE HAS_IF_3300 
(60000000), id 0, size=192.
[  167.016920] xc2028 2-0061: Reading firmware type SCODE HAS_IF_3440 
(60000000), id 0, size=192.
[  167.016927] xc2028 2-0061: Reading firmware type SCODE HAS_IF_3460 
(60000000), id 0, size=192.
[  167.016934] xc2028 2-0061: Reading firmware type DTV6 ATSC OREN36 
SCODE HAS_IF_3800 (60210020), id 0, size=192.
[  167.016943] xc2028 2-0061: Reading firmware type SCODE HAS_IF_4000 
(60000000), id 0, size=192.
[  167.016949] xc2028 2-0061: Reading firmware type DTV6 ATSC TOYOTA388 
SCODE HAS_IF_4080 (60410020), id 0, size=192.
[  167.016958] xc2028 2-0061: Reading firmware type SCODE HAS_IF_4200 
(60000000), id 0, size=192.
[  167.016987] xc2028 2-0061: Reading firmware type MONO SCODE 
HAS_IF_4320 (60008000), id 8000, size=192.
[  167.016995] xc2028 2-0061: Reading firmware type SCODE HAS_IF_4450 
(60000000), id 0, size=192.
[  167.017002] xc2028 2-0061: Reading firmware type MTS LCD NOGD MONO IF 
SCODE HAS_IF_4500 (6002b004), id b700, size=192.
[  167.017012] xc2028 2-0061: Reading firmware type LCD NOGD IF SCODE 
HAS_IF_4600 (60023000), id 8000, size=192.
[  167.017020] xc2028 2-0061: Reading firmware type DTV6 QAM DTV7 DTV78 
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0, size=192.
[  167.017030] xc2028 2-0061: Reading firmware type SCODE HAS_IF_4940 
(60000000), id 0, size=192.
[  167.017037] xc2028 2-0061: Reading firmware type SCODE HAS_IF_5260 
(60000000), id 0, size=192.
[  167.017044] xc2028 2-0061: Reading firmware type MONO SCODE 
HAS_IF_5320 (60008000), id f00000007, size=192.
[  167.017051] xc2028 2-0061: Reading firmware type DTV7 DTV78 DTV8 
DIBCOM52 CHINA SCODE HAS_IF_5400 (65000380), id 0, size=192.
[  167.017061] xc2028 2-0061: Reading firmware type DTV6 ATSC OREN538 
SCODE HAS_IF_5580 (60110020), id 0, size=192.
[  167.017069] xc2028 2-0061: Reading firmware type SCODE HAS_IF_5640 
(60000000), id 300000007, size=192.
[  167.017076] xc2028 2-0061: Reading firmware type SCODE HAS_IF_5740 
(60000000), id c00000007, size=192.
[  167.017084] xc2028 2-0061: Reading firmware type SCODE HAS_IF_5900 
(60000000), id 0, size=192.
[  167.017091] xc2028 2-0061: Reading firmware type MONO SCODE 
HAS_IF_6000 (60008000), id c04c000f0, size=192.
[  167.017099] xc2028 2-0061: Reading firmware type DTV6 QAM ATSC LG60 
F6MHZ SCODE HAS_IF_6200 (68050060), id 0, size=192.
[  167.017108] xc2028 2-0061: Reading firmware type SCODE HAS_IF_6240 
(60000000), id 10, size=192.
[  167.017115] xc2028 2-0061: Reading firmware type MONO SCODE 
HAS_IF_6320 (60008000), id 200000, size=192.
[  167.017123] xc2028 2-0061: Reading firmware type SCODE HAS_IF_6340 
(60000000), id 200000, size=192.
[  167.017130] xc2028 2-0061: Reading firmware type MONO SCODE 
HAS_IF_6500 (60008000), id c044000e0, size=192.
[  167.017138] xc2028 2-0061: Reading firmware type DTV6 ATSC ATI638 
SCODE HAS_IF_6580 (60090020), id 0, size=192.
[  167.017146] xc2028 2-0061: Reading firmware type SCODE HAS_IF_6600 
(60000000), id 3000000e0, size=192.
[  167.017154] xc2028 2-0061: Reading firmware type MONO SCODE 
HAS_IF_6680 (60008000), id 3000000e0, size=192.
[  167.017162] xc2028 2-0061: Reading firmware type DTV6 ATSC TOYOTA794 
SCODE HAS_IF_8140 (60810020), id 0, size=192.
[  167.017171] xc2028 2-0061: Reading firmware type SCODE HAS_IF_8200 
(60000000), id 0, size=192.
[  167.017188] xc2028 2-0061: Firmware files loaded.
[  167.017192] xc2028 2-0061: checking firmware, user requested 
type=F8MHZ D2620 DTV7 (8a), id 0000000000000000, scode_tbl (0), scode_nr 0
[  167.017201] callback: ddb23b80
[  167.017205] cx88[0]/2-dvb: cx88_xc3028_callback: XC2028_TUNER_RESET 0
[  167.017209] setting GPIO to TV!
[  167.761794] xc2028 2-0061: load_firmware called
[  167.761799] xc2028 2-0061: seek_firmware called, want type=BASE F8MHZ 
D2620 DTV7 (8b), id 0000000000000000.
[  167.761807] xc2028 2-0061: Found firmware for type=BASE F8MHZ (3), id 
0000000000000000.
[  167.761813] xc2028 2-0061: Loading firmware for type=BASE F8MHZ (3), 
id 0000000000000000.
[  167.761819] cx88[0]/2-dvb: cx88_xc3028_callback: XC2028_TUNER_RESET 0
[  167.761822] setting GPIO to TV!
[  168.512587] dvb_frontend_ioctl
[   85.009452] five<7>xc2028 2-0061: Load init1 firmware, if exists
[   85.009461] xc2028 2-0061: load_firmware called
[   85.009463] xc2028 2-0061: seek_firmware called, want type=BASE INIT1 
F8MHZ D2620 DTV7 (408b), id 0000000000000000.
[   85.009470] xc2028 2-0061: Can't find firmware for type=BASE INIT1 
F8MHZ (4003), id 0000000000000000.
[   85.009473] xc2028 2-0061: load_firmware called
[   85.009475] xc2028 2-0061: seek_firmware called, want type=BASE INIT1 
D2620 DTV7 (4089), id 0000000000000000.
[   85.009480] xc2028 2-0061: Can't find firmware for type=BASE INIT1 
(4001), id 0000000000000000.
[   85.009482] Skip base<7>xc2028 2-0061: load_firmware called
[   85.009485] xc2028 2-0061: seek_firmware called, want type=F8MHZ 
D2620 DTV7 (8a), id 0000000000000000.
[   85.009488] xc2028 2-0061: Found firmware for type=D2620 DTV7 (88), 
id 0000000000000000.
[   85.009491] xc2028 2-0061: Loading firmware for type=D2620 DTV7 (88), 
id 0000000000000000.
[   85.023254] xc2028 2-0061: Trying to load scode 0
[   85.023257] xc2028 2-0061: load_scode called
[   85.023259] xc2028 2-0061: seek_firmware called, want type=F8MHZ 
D2620 DTV7 SCODE (2000008a), id 0000000000000000.
[   85.023264] xc2028 2-0061: Can't find firmware for type=DTV7 SCODE 
(20000080), id 0000000000000000.
[   85.023267] xc2028 2-0061: xc2028_get_reg 0004 called
[   85.024461] xc2028 2-0061: xc2028_get_reg 0008 called
[   85.025211] xc2028 2-0061: Device is Xceive 3028 version 1.0, 
firmware version 2.7
[   85.040489] cx88[0]/2-dvb: cx88_xc3028_callback: XC2028_RESET_CLK 1
[   85.160383] xc2028 2-0061: divisor= 00 00 32 b8 (freq=205.625)
[   85.362226] dvb_frontend_ioctl
[   95.136175] dvb_frontend_ioctl
[   95.337363] dvb_frontend_ioctl
[   95.538537] dvb_frontend_ioctl
[   95.733733] dvb_frontend_add_event
[   95.733918] dvb_frontend_swzigzag_autotune: drift:0 inversion:1 
auto_step:0 auto_sub_step:1 started_auto_step:0
[   95.736624] zl10353: zl10353_calc_nominal_rate: bw 7, adc_clock 
450560 => 0x5ae9
[   95.737385] zl10353: zl10353_calc_input_freq: if2 361667, ife 88893, 
adc_clock 450560 => -12930 / 0xcd7e
[   95.738760] xc2028 2-0061: xc2028_set_params called
[   95.738763] xc2028 2-0061: generic_set_freq called
[   95.738986] xc2028 2-0061: should set frequency 205625 kHz
[   95.738989] xc2028 2-0061: check_firmware called
[   95.738991] xc2028 2-0061: checking firmware, user requested 
type=F8MHZ D2620 DTV7 (8a), id 0000000000000000, scode_tbl (0), scode_nr 0
[   95.738997] xc2028 2-0061: BASE firmware not changed.
[   95.738999] Skip base<7>xc2028 2-0061: Std-specific firmware already 
loaded.
[   95.739002] xc2028 2-0061: SCODE firmware already loaded.
[   95.739004] xc2028 2-0061: xc2028_get_reg 0004 called
[   95.739914] dvb_frontend_ioctl
[   95.740726] xc2028 2-0061: xc2028_get_reg 0008 called
[   95.741478] xc2028 2-0061: Device is Xceive 3028 version 1.0, 
firmware version 2.7
[   95.756472] cx88[0]/2-dvb: cx88_xc3028_callback: XC2028_RESET_CLK 1
[   95.876356] xc2028 2-0061: divisor= 00 00 32 b8 (freq=205.625)
[   96.078261] dvb_frontend_ioctl
[   96.279441] dvb_frontend_ioctl
[  173.554811] dvb_frontend_ioctl
[  173.756052] dvb_frontend_ioctl
[  173.757425] dvb_frontend_ioctl
[  173.757431] dvb_frontend_add_event
[  173.758070] dvb_frontend_swzigzag_autotune: drift:0 inversion:1 
auto_step:0 auto_sub_step:0 started_auto_step:0
[  173.760934] zl10353: zl10353_calc_nominal_rate: bw 7, adc_clock 
450560 => 0x5ae9
[  173.761828] zl10353: zl10353_calc_input_freq: if2 361667, ife 88893, 
adc_clock 450560 => -12930 / 0xcd7e
[  173.763385] xc2028 2-0061: xc2028_set_params called
[  173.763391] xc2028 2-0061: generic_set_freq called
[  173.763780] xc2028 2-0061: should set frequency 205625 kHz
[  173.763786] xc2028 2-0061: check_firmware called
[  173.763789] xc2028 2-0061: checking firmware, user requested 
type=F8MHZ D2620 DTV7 (8a), id 0000000000000000, scode_tbl (0), scode_nr 0
[  173.763800] xc2028 2-0061: BASE firmware not changed.
[  173.763803] Skip base<7>xc2028 2-0061: Std-specific firmware already 
loaded.
[  173.763809] xc2028 2-0061: SCODE firmware already loaded.
[  173.763813] xc2028 2-0061: xc2028_get_reg 0004 called
[  173.765939] xc2028 2-0061: xc2028_get_reg 0008 called
[  173.768126] xc2028 2-0061: Device is Xceive 3028 version 1.0, 
firmware version 2.7
[  173.782342] cx88[0]/2-dvb: cx88_xc3028_callback: XC2028_RESET_CLK 1
[  173.902113] xc2028 2-0061: divisor= 00 00 32 b8 (freq=205.625)
[  173.957394] dvb_frontend_ioctl
[  174.158652] dvb_frontend_ioctl
[  174.359882] dvb_frontend_ioctl
[  174.561108] dvb_frontend_ioctl
[  174.762363] dvb_frontend_ioctl
[  174.903148] dvb_frontend_add_event
[  174.903426] dvb_frontend_swzigzag_autotune: drift:0 inversion:0 
auto_step:0 auto_sub_step:1 started_auto_step:0
[  174.906293] zl10353: zl10353_calc_nominal_rate: bw 7, adc_clock 
450560 => 0x5ae9
[  174.907186] zl10353: zl10353_calc_input_freq: if2 361667, ife 88893, 
adc_clock 450560 => -12930 / 0xcd7e
[  174.908720] xc2028 2-0061: xc2028_set_params called
[  174.908726] xc2028 2-0061: generic_set_freq called
[  174.909161] xc2028 2-0061: should set frequency 205625 kHz
[  174.909167] xc2028 2-0061: check_firmware called
[  174.909171] xc2028 2-0061: checking firmware, user requested 
type=F8MHZ D2620 DTV7 (8a), id 0000000000000000, scode_tbl (0), scode_nr 0
[  174.909181] xc2028 2-0061: BASE firmware not changed.
[  174.909184] Skip base<7>xc2028 2-0061: Std-specific firmware already 
loaded.
[  174.909190] xc2028 2-0061: SCODE firmware already loaded.
[  174.909194] xc2028 2-0061: xc2028_get_reg 0004 called
[  174.911370] xc2028 2-0061: xc2028_get_reg 0008 called
[  174.912227] xc2028 2-0061: Device is Xceive 3028 version 1.0, 
firmware version 2.7
[  174.925768] cx88[0]/2-dvb: cx88_xc3028_callback: XC2028_RESET_CLK 1
[  174.963629] dvb_frontend_ioctl
[  175.045724] xc2028 2-0061: divisor= 00 00 32 b8 (freq=205.625)
[  175.247850] dvb_frontend_ioctl
[  175.449076] dvb_frontend_ioctl
[  175.650321] dvb_frontend_ioctl
[  175.851554] dvb_frontend_ioctl
[  175.852892] dvb_frontend_release
[  175.852897] cx88[0]/2-dvb: cx8802_dvb_advise_release
[  176.045401] xc2028 2-0061: xc2028_sleep called

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.




More information about the linux-dvb mailing list