terratec cinergy t-stick RC (with TDA18218)
PATCH 1/1 terratec cinergy t-stick RC (with TDA18218)
HI
This patch applies to lates v4l tree and seems to work for me. I created it with diff -pur --new-file
No time to read docs about submitting patches yet for me, i'm sorrry...
Best regards, Davor
linux/drivers/media/common/tuners/Kconfig +7 -0
@@ -70,6 +70,13 @@ config MEDIA_TUNER_TDA827X help A DVB-T silicon tuner module. Say Y when you want to support this tuner. +config MEDIA_TUNER_TDA18218 + tristate "NXP TDA18218 silicon tuner" + depends on VIDEO_MEDIA && I2C + default m if MEDIA_TUNER_CUSTOMISE + help + A driver for the silicon tuner TDA18218 from NXP. + config MEDIA_TUNER_TDA18271 tristate "NXP TDA18271 silicon tuner" depends on VIDEO_MEDIA && I2C
linux/drivers/media/common/tuners/Makefile +1 -0
@@ -14,6 +14,7 @@ obj-$(CONFIG_MEDIA_TUNER_TEA5767) += tea obj-$(CONFIG_MEDIA_TUNER_TEA5761) += tea5761.o obj-$(CONFIG_MEDIA_TUNER_TDA9887) += tda9887.o obj-$(CONFIG_MEDIA_TUNER_TDA827X) += tda827x.o +obj-$(CONFIG_MEDIA_TUNER_TDA18218) += tda18218.o obj-$(CONFIG_MEDIA_TUNER_TDA18271) += tda18271.o obj-$(CONFIG_MEDIA_TUNER_XC5000) += xc5000.o obj-$(CONFIG_MEDIA_TUNER_MT2060) += mt2060.o
linux/drivers/media/common/tuners/tda18218.c +471 -0
471 lines not on this page · raw message
linux/drivers/media/common/tuners/tda18218.h +44 -0
45 lines not on this page · raw message
linux/drivers/media/common/tuners/tda18218_priv.h +36 -0
@@ -0,0 +1,36 @@ +/* +* Driver for NXP TDA18218 silicon tuner +* +* Copyright (C) 2010 Lauris Ding <[email protected]> +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef TDA18218_PRIV_H +#define TDA18218_PRIV_H + +#define TDA18218_STEP 1000/* 1 kHz */ +#define TDA18218_MIN_FREQ 174000000/* 174 MHz */ +#define TDA18218_MAX_FREQ 864000000/* 864 MHz */ + +struct tda18218_priv { +u8 tda18218_regs[0x3b ]; +struct tda18218_config *cfg; +struct i2c_adapter *i2c; + +u32 frequency; +u32 bandwidth; +}; + +#endif
linux/drivers/media/dvb/dvb-usb/af9015.c +17 -4
@@ -30,6 +30,7 @@#include "af9013.h" #include "mt2060.h" #include "qt1010.h" +#include "tda18218.h" #include "tda18271.h" #include "mxl5005s.h" #include "mc44s803.h"
@@ -1025,6 +1026,7 @@ static int af9015_read_config(struct usbcase AF9013_TUNER_QT1010 :case AF9013_TUNER_UNKNOWN :case AF9013_TUNER_MT2060_2 : +case AF9013_TUNER_TDA18218 :case AF9013_TUNER_TDA18271 :case AF9013_TUNER_QT1010A : af9015_af9013_config[i].rf_spec_inv =1 ;
@@ -1038,9 +1040,6 @@ static int af9015_read_config(struct usb af9015_af9013_config[i].gpio[1 ] =AF9013_GPIO_LO ; af9015_af9013_config[i].rf_spec_inv =1 ;break ; -case AF9013_TUNER_TDA18218 : -warn ("tuner NXP TDA18218 not supported yet" ); -return -ENODEV ;default :warn ("tuner id:%d not supported, please report!" , val);return -ENODEV ;
@@ -1248,6 +1247,10 @@ static struct mc44s803_config af9015_mc4 .dig_out = 1, }; +static struct tda18218_config af9015_tda18218_config = { + .i2c_address =0xc0 , +}; +static int af9015_tuner_attach (struct dvb_usb_adapter *adap) {struct af9015_state *state = adap->dev->priv;
@@ -1278,6 +1281,10 @@ static int af9015_tuner_attach(struct dv ret =dvb_attach (tda18271_attach, adap->fe,0xc0 , i2c_adap, &af9015_tda18271_config) ==NULL ? -ENODEV :0 ;break ; +case AF9013_TUNER_TDA18218 : + ret =dvb_attach (tda18218_attach, adap->fe, i2c_adap, + &af9015_tda18218_config) ==NULL ? -ENODEV :0 ; +break ;case AF9013_TUNER_MXL5003D : ret =dvb_attach (mxl5005s_attach, adap->fe, i2c_adap, &af9015_mxl5003_config) ==NULL ? -ENODEV :0 ;
@@ -1339,6 +1346,7 @@ static struct usb_device_id af9015_usb_t {USB_DEVICE(USB_VID_LEADTEK, USB_PID_WINFAST_DTV2000DS)}, /* 30 */{USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_UB383_T)}, {USB_DEVICE(USB_VID_KWORLD_2, USB_PID_KWORLD_395U_4)}, + {USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_STICK_RC)}, {0}, };MODULE_DEVICE_TABLE (usb, af9015_usb_table);
@@ -1612,7 +1620,7 @@ static struct dvb_usb_device_properties .i2c_algo = &af9015_i2c_algo, - .num_device_descs = 8, /* max 9 */ + .num_device_descs = 9, /* max 9 */ .devices = { { .name = "AverMedia AVerTV Volar GPS 805 (A805)",
@@ -1657,6 +1665,11 @@ static struct dvb_usb_device_properties .cold_ids = {&af9015_usb_table[30], NULL}, .warm_ids = {NULL}, }, + { + .name ="TerraTec Cinergy T Stick RC" , + .cold_ids = {&af9015_usb_table[32], NULL}, + .warm_ids = {NULL}, + }, } }, };
linux/drivers/media/dvb/dvb-usb/dvb-usb-ids.h +1 -0
@@ -205,6 +205,7 @@#define USB_PID_TERRATEC_CINERGY_HT_EXPRESS 0x0060#define USB_PID_TERRATEC_CINERGY_T_EXPRESS 0x0062#define USB_PID_TERRATEC_CINERGY_T_XXS 0x0078 +#define USB_PID_TERRATEC_CINERGY_T_STICK_RC 0x0097#define USB_PID_TERRATEC_CINERGY_T_XXS_2 0x00ab#define USB_PID_TERRATEC_T3 0x10a0#define USB_PID_TERRATEC_T5 0x10a1
linux/drivers/media/dvb/frontends/af9013.c +15 -0
@@ -488,6 +488,20 @@ static int af9013_set_freq_ctrl(struct abreak ; } } +else if (state->config.tuner ==AF9013_TUNER_TDA18218 ) { +switch (bw) { +case BANDWIDTH_6_MHZ : + if_sample_freq =3000000 ;/* 3 MHz */ +break ; +case BANDWIDTH_7_MHZ : + if_sample_freq =3500000 ;/* 3.5 MHz */ +break ; +case BANDWIDTH_8_MHZ : +default : + if_sample_freq =4000000 ;/* 4 MHz */ +break ; + } + }while (if_sample_freq > (adc_freq /2 )) if_sample_freq = if_sample_freq - adc_freq;
@@ -1390,6 +1404,7 @@ static int af9013_init(struct dvb_fronte init = tuner_init_mt2060_2;break ;case AF9013_TUNER_TDA18271 : +case AF9013_TUNER_TDA18218 : len =ARRAY_SIZE (tuner_init_tda18271); init = tuner_init_tda18271;break ;