From patchwork Mon Nov 9 12:09:04 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guy Martin X-Patchwork-Id: 58731 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id nA9CKZJa018132 for ; Mon, 9 Nov 2009 12:20:35 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754780AbZKIMU2 (ORCPT ); Mon, 9 Nov 2009 07:20:28 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754664AbZKIMU2 (ORCPT ); Mon, 9 Nov 2009 07:20:28 -0500 Received: from fb2.tech.numericable.fr ([82.216.111.50]:39511 "EHLO fb2.tech.numericable.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754642AbZKIMU1 (ORCPT ); Mon, 9 Nov 2009 07:20:27 -0500 X-Greylist: delayed 680 seconds by postgrey-1.27 at vger.kernel.org; Mon, 09 Nov 2009 07:20:26 EST Received: from smtp6.tech.numericable.fr (smtp6.nc.sdv.fr [10.0.0.83]) by fb2.tech.numericable.fr (Postfix) with ESMTP id 671751B9EC8 for ; Mon, 9 Nov 2009 13:10:26 +0100 (CET) Received: from ibiza.bxl.tuxicoman.be (cable-85.28.90.237.coditel.net [85.28.90.237]) by smtp6.tech.numericable.fr (Postfix) with ESMTP id 3766C144007; Mon, 9 Nov 2009 13:09:10 +0100 (CET) Received: from [2001:6f8:310:301::1] (helo=borg.bxl.tuxicoman.be) by ibiza.bxl.tuxicoman.be with esmtps (TLSv1:AES128-SHA:128) (Exim 4.69) (envelope-from ) id 1N7Skk-0007tL-4y; Mon, 09 Nov 2009 12:49:51 +0100 Date: Mon, 9 Nov 2009 13:09:04 +0100 From: Guy Martin To: linux-media@vger.kernel.org Cc: abos@hanno.de, linux-dvb@linuxtv.org Subject: Re: [linux-dvb] What is the status of the driver TT CT-3650 Message-ID: <20091109130904.6c46e405@borg.bxl.tuxicoman.be> In-Reply-To: <4AF7F51B.5070501@hanno.de> References: <87fxa2uurr.fsf@musikcheck.dk> <4AF7F51B.5070501@hanno.de> X-Mailer: Claws Mail 3.7.2 (GTK+ 2.16.6; x86_64-pc-linux-gnu) Mime-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org diff -r 6f58a5d8c7c6 linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h --- a/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h Sat Aug 29 09:01:54 2009 -0300 +++ b/linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h Sat Nov 07 12:27:27 2009 +0100 @@ -61,7 +61,7 @@ #define USB_VID_HUMAX_COEX 0x10b9 /* Product IDs */ -#define USB_PID_ADSTECH_USB2_COLD 0xa333 +//#define USB_PID_ADSTECH_USB2_COLD 0xa333 #define USB_PID_ADSTECH_USB2_WARM 0xa334 #define USB_PID_AFATECH_AF9005 0x9020 #define USB_PID_AFATECH_AF9015_9015 0x9015 @@ -178,6 +178,7 @@ #define USB_PID_AVERMEDIA_A850 0x850a #define USB_PID_AVERMEDIA_A805 0xa805 #define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006 +#define USB_PID_TECHNOTREND_CONNECT_CT3650 0x300d #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a #define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2 0x0081 #define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058 diff -r 6f58a5d8c7c6 linux/drivers/media/dvb/dvb-usb/ttusb2.c --- a/linux/drivers/media/dvb/dvb-usb/ttusb2.c Sat Aug 29 09:01:54 2009 -0300 +++ b/linux/drivers/media/dvb/dvb-usb/ttusb2.c Sat Nov 07 12:27:27 2009 +0100 @@ -29,6 +29,9 @@ #include "tda826x.h" #include "tda10086.h" +#include "tda1002x.h" +#include "tda827x.h" +#include "tda10048.h" #include "lnbp21.h" /* debug */ @@ -159,7 +162,34 @@ .xtal_freq = TDA10086_XTAL_16M, }; -static int ttusb2_frontend_attach(struct dvb_usb_adapter *adap) +static struct tda10023_config tda10023_config = { + .demod_address = 0x0c, + .invert = 0, + .xtal = 16000000, + .pll_m = 11, + .pll_p = 3, + .pll_n = 1, + .deltaf = 0xa511, +}; + +static struct tda10048_config tda10048_config = { + .demod_address = 0x8, + .output_mode = TDA10048_SERIAL_OUTPUT, + .fwbulkwritelen = TDA10048_BULKWRITE_50, + .inversion = TDA10048_INVERSION_ON, + .dtv6_if_freq_khz = TDA10048_IF_3300, + .dtv7_if_freq_khz = TDA10048_IF_3800, + .dtv8_if_freq_khz = TDA10048_IF_4300, + .clk_freq_khz = TDA10048_CLK_16000, + .disable_gate_access = 1, +}; + +static struct tda827x_config tda827x_config = { + .config = 0, +// .switch_addr = 0x4b, +}; + +static int ttusb2_frontend_tda10086_attach(struct dvb_usb_adapter *adap) { if (usb_set_interface(adap->dev->udev,0,3) < 0) err("set interface to alts=3 failed"); @@ -172,7 +202,40 @@ return 0; } -static int ttusb2_tuner_attach(struct dvb_usb_adapter *adap) +static int ttusb2_frontend_tda10048_attach(struct dvb_usb_adapter *adap) +{ + if (usb_set_interface(adap->dev->udev,0,3) < 0) + err("set interface to alts=3 failed"); + + if ((adap->fe = dvb_attach(tda10048_attach, &tda10048_config, &adap->dev->i2c_adap)) == NULL) { + deb_info("TDA10048 attach failed\n"); + return -ENODEV; + } + + return 0; +} + +static int ttusb2_frontend_tda10023_attach(struct dvb_usb_adapter *adap) +{ + if (usb_set_interface(adap->dev->udev,0,3) < 0) + err("set interface to alts=3 failed"); + if ((adap->fe = dvb_attach(tda10023_attach, &tda10023_config, &adap->dev->i2c_adap, 0x48)) == NULL) { + deb_info("TDA10023 attach failed\n"); + return -ENODEV; + } + return 0; +} + +static int ttusb2_tuner_tda827x_attach(struct dvb_usb_adapter *adap) { + + if (dvb_attach(tda827x_attach, adap->fe, 0x60, &adap->dev->i2c_adap, &tda827x_config) == NULL) { + printk(KERN_ERR "%s: No tda827x found!\n", __func__); + return -ENODEV; + } + return 0; +} + +static int ttusb2_tuner_tda826x_attach(struct dvb_usb_adapter *adap) { if (dvb_attach(tda826x_attach, adap->fe, 0x60, &adap->dev->i2c_adap, 0) == NULL) { deb_info("TDA8263 attach failed\n"); @@ -189,6 +252,7 @@ /* DVB USB Driver stuff */ static struct dvb_usb_device_properties ttusb2_properties; static struct dvb_usb_device_properties ttusb2_properties_s2400; +static struct dvb_usb_device_properties ttusb2_properties_ct3650; static int ttusb2_probe(struct usb_interface *intf, const struct usb_device_id *id) @@ -196,6 +260,8 @@ if (0 == dvb_usb_device_init(intf, &ttusb2_properties, THIS_MODULE, NULL, adapter_nr) || 0 == dvb_usb_device_init(intf, &ttusb2_properties_s2400, + THIS_MODULE, NULL, adapter_nr) || + 0 == dvb_usb_device_init(intf, &ttusb2_properties_ct3650, THIS_MODULE, NULL, adapter_nr)) return 0; return -ENODEV; @@ -206,6 +272,9 @@ { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PCTV_450E) }, { USB_DEVICE(USB_VID_TECHNOTREND, USB_PID_TECHNOTREND_CONNECT_S2400) }, + { USB_DEVICE(USB_VID_TECHNOTREND, + USB_PID_TECHNOTREND_CONNECT_CT3650) }, + { USB_DEVICE(0x04b4, 0x8613) }, {} /* Terminating entry */ }; MODULE_DEVICE_TABLE (usb, ttusb2_table); @@ -223,8 +292,8 @@ { .streaming_ctrl = NULL, // ttusb2_streaming_ctrl, - .frontend_attach = ttusb2_frontend_attach, - .tuner_attach = ttusb2_tuner_attach, + .frontend_attach = ttusb2_frontend_tda10086_attach, + .tuner_attach = ttusb2_tuner_tda826x_attach, /* parameter for the MPEG2-data transfer */ .stream = { @@ -275,8 +344,8 @@ { .streaming_ctrl = NULL, - .frontend_attach = ttusb2_frontend_attach, - .tuner_attach = ttusb2_tuner_attach, + .frontend_attach = ttusb2_frontend_tda10086_attach, + .tuner_attach = ttusb2_tuner_tda826x_attach, /* parameter for the MPEG2-data transfer */ .stream = { @@ -310,6 +379,72 @@ } }; +static struct dvb_usb_device_properties ttusb2_properties_ct3650 = { + .caps = DVB_USB_IS_AN_I2C_ADAPTER, + + .usb_ctrl = CYPRESS_FX2, + .firmware = "dvb-usb-tt-ct3650-01.fw", + + .size_of_priv = sizeof(struct ttusb2_state), + + .num_adapters = 1, + .adapter = { + { + .streaming_ctrl = NULL, + + .frontend_attach = ttusb2_frontend_tda10023_attach, + .tuner_attach = ttusb2_tuner_tda827x_attach, + + .stream = { + .type = USB_ISOC, + .count = 5, + .endpoint = 0x02, + .u = { + .isoc = { + .framesperurb = 4, + .framesize = 940, + .interval = 1, + } + } + } + }, +/* { + .streaming_ctrl = NULL, + + .frontend_attach = ttusb2_frontend_tda10048_attach, + .tuner_attach = ttusb2_tuner_tda827x_attach, + + .stream = { + .type = USB_ISOC, + .count = 5, + .endpoint = 0x02, + .u = { + .isoc = { + .framesperurb = 4, + .framesize = 940, + .interval = 1, + } + } + } + },*/ + }, + + .power_ctrl = ttusb2_power_ctrl, + .identify_state = ttusb2_identify_state, + + .i2c_algo = &ttusb2_i2c_algo, + + .generic_bulk_ctrl_endpoint = 0x01, + + .num_device_descs = 1, + .devices = { + { "Technotrend TT-connect CT-3650", + .warm_ids = { &ttusb2_table[3], NULL }, + .cold_ids = { &ttusb2_table[4], NULL }, + }, + } +}; + static struct usb_driver ttusb2_driver = { .name = "dvb_usb_ttusb2", .probe = ttusb2_probe,