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

Mauro Carvalho Chehab mchehab at infradead.org
Mon Sep 15 16:46:29 CEST 2008

>> 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?

D2620 and D2633 firmwares seem to be related to the kind of signal output 
that a demod needs. On all cases I know, Zarlink needs D2633, while Dibcom 
and others use D2620. On the previous email, I sent a patch adding a hint 
code based on this info. Hopefully, this will solve the issue.

> static struct zl10353_config cx88_dtv1800h = {
>      .demod_address = (0x1e >> 1),
>      .no_tuner = 1,
> };
>               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,

You need to specify also what scode table it should be loaded, with 
 			.scode_table = XC3028_FE_ZARLINK456,

This will provide the needed info about the demod IF frequency, and make 
it select the proper offset to be used when tuning in Australia.

Also, this is needed for my previous patch to select the proper 
tuner type, based on Zarlink hint.

>                 };
>                 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;

Except for the lack of demod IF (see above), the patch looks correct.

You might need to patch also cx88_xc3028_callback, to use the proper GPIO 
values for tuner reset. If the tuner reset code is wrong, it won't work as 
expected. However, based on this:

[  173.768126] xc2028 2-0061: Device is Xceive 3028 version 1.0, firmware version 2.7

It seems that the reset code is fine.

So, after adding my patch and the above fix, you'll likely have your board 
working. Please, give us a feedback and, if success, send me the patch 
adding your board to cx88 driver.

Mauro Carvalho Chehab
mchehab at infradead.org

More information about the linux-dvb mailing list