Talk:LifeView LR506
Jump to navigation
Jump to search
Ok ... I'll try to implement a driver, but i need some help
DMESG output
[ 1205.972060] usb 2-1: new high speed USB device using ehci_hcd and address 12 [ 1206.108455] usb 2-1: New USB device found, idVendor=10fd, idProduct=0506 [ 1206.108458] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 1206.108552] usb 2-1: configuration #1 chosen from 1 choice [ 1206.120907] dvb-usb: found a 'LiveView TVWalker Q (LR506)' in cold state, will try to load a firmware [ 1206.120911] usb 2-1: firmware: requesting dvb-usb-tvwalker-lr506.fw [ 1206.133281] dvb-usb: downloading firmware from file 'dvb-usb-tvwalker-lr506.fw' [ 1206.195720] usbcore: registered new interface driver dvb_usb_cxusb [ 1206.197465] usb 2-1: USB disconnect, address 12 [ 1206.204064] dvb-usb: generic DVB-USB module successfully deinitialized and disconnected. [ 1207.952067] usb 2-1: new high speed USB device using ehci_hcd and address 13 [ 1208.084757] usb 2-1: New USB device found, idVendor=10fd, idProduct=0500 [ 1208.084761] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 1208.084763] usb 2-1: Product: LifeView LR506 [ 1208.084764] usb 2-1: Manufacturer: LifeView [ 1208.084849] usb 2-1: configuration #1 chosen from 1 choice [ 1208.085038] dvb-usb: found a 'LiveView TVWalker Q (LR506)' in warm state. [ 1208.085044] dvb-usb: bulk message failed: -22 (2/-1) [ 1208.085063] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer. [ 1208.085174] DVB: registering new adapter (LiveView TVWalker Q (LR506)) [ 1208.092436] dvb-usb: bulk message failed: -22 (5/0) [ 1208.092439] tda10046: chip is not answering. Giving up. [ 1208.092481] dvb-usb: no frontend was attached by 'LiveView TVWalker Q (LR506)' [ 1208.092750] dvb-usb: bulk message failed: -22 (2/0) [ 1208.092752] dvb-usb: LiveView TVWalker Q (LR506) successfully initialized and connected. [ 1496.620096] usb 2-1: USB disconnect, address 13 [ 1496.620500] dvb-usb: LiveView TVWalker Q (LR506) successfully deinitialized and disconnected.
Patch against 13c47deee3b1
diff -r 13c47deee3b1 linux/drivers/media/dvb/dvb-usb/cxusb.c --- a/linux/drivers/media/dvb/dvb-usb/cxusb.c Mon Sep 07 12:38:46 2009 -0300 +++ b/linux/drivers/media/dvb/dvb-usb/cxusb.c Tue Sep 08 11:32:44 2009 +0200 @@ -40,6 +40,9 @@ #include "dib0070.h" #include "lgs8gxx.h" +#include "tda1004x.h" +#include "tda827x.h" + /* debug */ static int dvb_usb_cxusb_debug; module_param_named(debug, dvb_usb_cxusb_debug, int, 0644); @@ -709,6 +712,19 @@ .AgcMasterByte = 0x00, }; +/* for tvwalker q */ +static struct tda1004x_config cxusb_tda10046_08_config = { + .demod_address = 0x08, + .invert = 0, + .invert_oclk = 0, + .ts_mode = TDA10046_TS_SERIAL, + .xtal_freq = TDA10046_XTAL_16M, + .if_freq = TDA10046_FREQ_045, + .agc_config = TDA10046_AGC_TDA827X, + .gpio_config = TDA10046_GPTRI, + .request_firmware = NULL, +}; + /* Callbacks for DVB USB */ static int cxusb_fmd1216me_tuner_attach(struct dvb_usb_adapter *adap) { @@ -919,6 +935,29 @@ return 0; } +/* for tvwalker q */ +static int cxusb_tda10046_08_frontend_attach(struct dvb_usb_adapter *adap) +{ + deb_info("%s\n",__func__); + + if ((adap->fe = dvb_attach(tda10046_attach, + &cxusb_tda10046_08_config, + &adap->dev->i2c_adap)) == NULL) + return -EIO; + + return 0; +} + +static int cxusb_tda8275_60_tuner_attach(struct dvb_usb_adapter *adap) +{ + deb_info("%s\n",__func__); + + if (dvb_attach(tda827x_attach, adap->fe, 0x60, &adap->dev->i2c_adap, NULL) == NULL) + return -ENODEV; + + return 0; +} + static struct dibx000_agc_config dib7070_agc_config = { .band_caps = BAND_UHF | BAND_VHF | BAND_LBAND | BAND_SBAND, @@ -1235,6 +1274,7 @@ static struct dvb_usb_device_properties cxusb_bluebird_nano2_needsfirmware_properties; static struct dvb_usb_device_properties cxusb_aver_a868r_properties; static struct dvb_usb_device_properties cxusb_d680_dmb_properties; +static struct dvb_usb_device_properties cxusb_tvwalkerq_properties; static int cxusb_probe(struct usb_interface *intf, const struct usb_device_id *id) @@ -1263,6 +1303,8 @@ THIS_MODULE, NULL, adapter_nr) || 0 == dvb_usb_device_init(intf, &cxusb_d680_dmb_properties, THIS_MODULE, NULL, adapter_nr) || + 0 == dvb_usb_device_init(intf, &cxusb_tvwalkerq_properties, + THIS_MODULE, NULL, adapter_nr) || 0) return 0; @@ -1289,6 +1331,8 @@ { USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_VOLAR_A868R) }, { USB_DEVICE(USB_VID_DVICO, USB_PID_DVICO_BLUEBIRD_DUAL_4_REV_2) }, { USB_DEVICE(USB_VID_CONEXANT, USB_PID_CONEXANT_D680_DMB) }, + { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, USB_PID_LIFEVIEW_TV_WALKER_Q_COLD) }, + { USB_DEVICE(USB_VID_ANUBIS_ELECTRONIC, USB_PID_LIFEVIEW_TV_WALKER_Q_WARM) }, {} /* Terminating entry */ }; MODULE_DEVICE_TABLE (usb, cxusb_table); @@ -1832,6 +1876,51 @@ } }; +/* for tvwalker q */ +static struct dvb_usb_device_properties cxusb_tvwalkerq_properties = { + .caps = DVB_USB_IS_AN_I2C_ADAPTER, + + .usb_ctrl = CYPRESS_FX2, + .firmware = "dvb-usb-tvwalker-lr506.fw", + + .size_of_priv = sizeof(struct cxusb_state), + + .num_adapters = 1, + .adapter = { + { + .frontend_attach = cxusb_tda10046_08_frontend_attach, + .tuner_attach = cxusb_tda8275_60_tuner_attach, + /* parameter for the MPEG2-data transfer */ + .stream = { + .type = USB_BULK, + //.count = 5, + //.endpoint = 0x02, + .count = 8, + .endpoint = 0x81, + .u = { + .bulk = { + .buffersize = 8192, + } + } + }, + + }, + }, + .power_ctrl = cxusb_power_ctrl, + + .i2c_algo = &cxusb_i2c_algo, + + .generic_bulk_ctrl_endpoint = 0x01, + + .num_device_descs = 1, + .devices = { + { "LiveView TVWalker Q (LR506)", + { &cxusb_table[19], NULL }, + { &cxusb_table[20], NULL }, + }, + } +}; + static struct usb_driver cxusb_driver = { .name = "dvb_usb_cxusb", .probe = cxusb_probe, diff -r 13c47deee3b1 linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h --- a/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h Mon Sep 07 12:38:46 2009 -0300 +++ b/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h Tue Sep 08 11:32:44 2009 +0200 @@ -245,6 +245,8 @@ #define USB_PID_OPERA1_WARM 0x3829 #define USB_PID_LIFEVIEW_TV_WALKER_TWIN_COLD 0x0514 #define USB_PID_LIFEVIEW_TV_WALKER_TWIN_WARM 0x0513 +#define USB_PID_LIFEVIEW_TV_WALKER_Q_COLD 0x0506 +#define USB_PID_LIFEVIEW_TV_WALKER_Q_WARM 0x0500 #define USB_PID_GIGABYTE_U7000 0x7001 #define USB_PID_GIGABYTE_U8000 0x7002 #define USB_PID_ASUS_U3000 0x171f