Message ID | 20090727014316.GA97600@io.frii.com (mailing list archive) |
---|---|
State | RFC |
Headers | show |
On 27 Ð¸ÑŽÐ»Ñ 2009 04:43:16 Mark Zimmerman wrote: > On Sun, Jul 26, 2009 at 03:29:13PM +0300, Igor M. Liplianin wrote: > > On 25 ???? 2009 05:22:06 Mark Zimmerman wrote: > > > On Fri, Jul 24, 2009 at 07:06:11PM +0300, Igor M. Liplianin wrote: > > > > On 24 ???? 2009 05:33:15 Mark Zimmerman wrote: > > > > > Greetings: > > > > > > > > > > Using current current v4l-dvb drivers, I get the following in the > > > > > dmesg: > > > > > > > > > > cx88[1]/2: subsystem: 8920:8888, board: TBS 8920 DVB-S/S2 [card=72] > > > > > cx88[1]/2: cx2388x based DVB/ATSC card > > > > > cx8802_alloc_frontends() allocating 1 frontend(s) > > > > > cx24116_readreg: reg=0xff (error=-6) > > > > > cx24116_readreg: reg=0xfe (error=-6) > > > > > Invalid probe, probably not a CX24116 device > > > > > cx88[1]/2: frontend initialization failed > > > > > cx88[1]/2: dvb_register failed (err = -22) > > > > > cx88[1]/2: cx8802 probe failed, err = -22 > > > > > > > > > > Does this mean that one of the chips on this card is different than > > > > > expected? How can I gather useful information about this? > > > > > > > > Hi > > > > You can try: > > > > http://www.tbsdtv.com/download/tbs6920_8920_v23_linux_x86_x64.rar > > > > > > This code did not compile as-is, but after I commented out some things > > > in drivers I do not need, I managed to build something. The TBS card > > > now seems to be initialized, but it also broke support for my DViCO > > > FusionHDTV7 Dual Express card, which also uses a cx23885. > > > > > > I am going to move this card to another machine that does not have any > > > other capture cards and repeat the process. This should make it easier > > > to know what the TBS card/driver is doing. > > > > > > I am assuming that you are interested in using me to gather > > > information to update the v4l-dvb drivers so that this card can be > > > supported properly. Is this correct? Please let me know what I can do > > > to assist. > > > > I've changed tbs 8920 initialization in > > http://mercurial.intuxication.org/hg/s2-liplianin. I ask you to try it. > > If it works, then I will commit it to linuxv. > > Also pay attention to remote. > > Unfortunately, there appears to be no change: > > Just for reference, here is how it looks when using the drivers > compiled from the source in tbs6920_8920_v23_linux_x86_x64.rar: > > Also, here are the diffs of cx88-dvb.c between your version and the one > from the manufacturer. I wonder if the magic number writes at line 1142 > could be what makes it work. I can try adding them to your source if you > think it is advisable. It is advisable to try. I forgot about voltage control. It must preserve that "magic" number. http://mercurial.intuxication.org/hg/s2-liplianin/rev/b1ca288a0600 > --- linux/drivers/media/video/cx88/cx88-dvb.c 2009-07-26 > 18:00:00.000000000 -0600 +++ > /home/mark/tbs8920/linux-s2api-tbs6920-8920-v23/linux/drivers/media/video/c >x88/cx88-dvb.c 2009-06-07 18:15:11.000000000 -0600 @@ -428,14 +428,17 @@ > switch (voltage) { > case SEC_VOLTAGE_13: > printk("LNB Voltage SEC_VOLTAGE_13\n"); > - cx_write(MO_GP0_IO, 0x00006040); > + cx_set(MO_GP0_IO, 0x00006040); > + cx_clear(MO_GP0_IO, 0x00000020); > break; > case SEC_VOLTAGE_18: > printk("LNB Voltage SEC_VOLTAGE_18\n"); > - cx_write(MO_GP0_IO, 0x00006060); > + cx_set(MO_GP0_IO, 0x00006020); > + cx_set(MO_GP0_IO, 0x00000040); > break; > case SEC_VOLTAGE_OFF: > printk("LNB Voltage SEC_VOLTAGE_off\n"); > + cx_clear(MO_GP0_IO, 0x00000020); > break; > } > > @@ -1142,6 +1144,15 @@ > case CX88_BOARD_TBS_8920: > case CX88_BOARD_PROF_7300: > case CX88_BOARD_SATTRADE_ST4200: > + printk(KERN_INFO "%s() setup TBS8920\n", __func__); > + cx_write(MO_GP0_IO, 0x00008000); > + msleep(100); > + cx_write(MO_SRST_IO, 0); > + msleep(10); > + cx_write(MO_GP0_IO, 0x00008080); > + msleep(100); > + cx_write(MO_SRST_IO, 1); > + msleep(100); > fe0->dvb.frontend = dvb_attach(cx24116_attach, > &hauppauge_hvr4000_config, > &core->i2c_adap);
--- linux/drivers/media/video/cx88/cx88-dvb.c 2009-07-26 18:00:00.000000000 -0600 +++ /home/mark/tbs8920/linux-s2api-tbs6920-8920-v23/linux/drivers/media/video/cx88/cx88-dvb.c 2009-06-07 18:15:11.000000000 -0600 @@ -428,14 +428,17 @@ switch (voltage) { case SEC_VOLTAGE_13: printk("LNB Voltage SEC_VOLTAGE_13\n"); - cx_write(MO_GP0_IO, 0x00006040); + cx_set(MO_GP0_IO, 0x00006040); + cx_clear(MO_GP0_IO, 0x00000020); break; case SEC_VOLTAGE_18: printk("LNB Voltage SEC_VOLTAGE_18\n"); - cx_write(MO_GP0_IO, 0x00006060); + cx_set(MO_GP0_IO, 0x00006020); + cx_set(MO_GP0_IO, 0x00000040); break; case SEC_VOLTAGE_OFF: printk("LNB Voltage SEC_VOLTAGE_off\n"); + cx_clear(MO_GP0_IO, 0x00000020); break; } @@ -1021,7 +1024,6 @@ } break; case CX88_BOARD_PINNACLE_HYBRID_PCTV: - case CX88_BOARD_WINFAST_DTV1800H: fe0->dvb.frontend = dvb_attach(zl10353_attach, &cx88_pinnacle_hybrid_pctv, &core->i2c_adap); @@ -1142,6 +1144,15 @@ case CX88_BOARD_TBS_8920: case CX88_BOARD_PROF_7300: case CX88_BOARD_SATTRADE_ST4200: + printk(KERN_INFO "%s() setup TBS8920\n", __func__); + cx_write(MO_GP0_IO, 0x00008000); + msleep(100); + cx_write(MO_SRST_IO, 0); + msleep(10); + cx_write(MO_GP0_IO, 0x00008080); + msleep(100); + cx_write(MO_SRST_IO, 1); + msleep(100); fe0->dvb.frontend = dvb_attach(cx24116_attach, &hauppauge_hvr4000_config, &core->i2c_adap); @@ -1179,7 +1190,7 @@ fe1->dvb.frontend->ops.ts_bus_ctrl = cx88_dvb_bus_ctrl; /* Put the analog decoder in standby to keep it quiet */ - call_all(core, tuner, s_standby); + cx88_call_i2c_clients(core, TUNER_SET_STANDBY, NULL); /* register everything */ return videobuf_dvb_register_bus(&dev->frontends, THIS_MODULE, dev,