aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorStefan Ringel <stefan.ringel@arcor.de>2010-03-10 12:57:57 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-05-17 23:47:02 -0400
commit8b0d2a052733d0a0e8ed59aeb8c7e6c90fdb793e (patch)
tree53267aa0f92dd919d9cd54b369426cf4ad8b6f20 /drivers/staging
parent000f64efc7fe6693261a78a0164c0e805553631b (diff)
V4L/DVB: tm6000: add new hybrid-stick
-add Hauppauge WinTV HVR 900H/WinTV USB2-Stick vid/pid 0x2040/6601 0x2040/6610 0x2040/6611 -add Terratec Cinergy Hybrid-Stick vid/pid 0x0ccd/0x00a5 -add Twinhan TU501(704D1) vid/pid 0x13d3/0x3240 0x13d3/0x3241 0x13d3/0x3243 0x13d3/0x3264 Signed-off-by: Stefan Ringel <stefan.ringel@arcor.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/tm6000/tm6000-cards.c39
1 files changed, 33 insertions, 6 deletions
diff --git a/drivers/staging/tm6000/tm6000-cards.c b/drivers/staging/tm6000/tm6000-cards.c
index d4f29fde4b12..c26cf2f73e19 100644
--- a/drivers/staging/tm6000/tm6000-cards.c
+++ b/drivers/staging/tm6000/tm6000-cards.c
@@ -47,6 +47,7 @@
47#define TM6010_BOARD_BEHOLD_WANDER 10 47#define TM6010_BOARD_BEHOLD_WANDER 10
48#define TM6010_BOARD_BEHOLD_VOYAGER 11 48#define TM6010_BOARD_BEHOLD_VOYAGER 11
49#define TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE 12 49#define TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE 12
50#define TM6010_BOARD_TWINHAN_TU501 13
50 51
51#define TM6000_MAXBOARDS 16 52#define TM6000_MAXBOARDS 16
52static unsigned int card[] = {[0 ... (TM6000_MAXBOARDS - 1)] = UNSET }; 53static unsigned int card[] = {[0 ... (TM6000_MAXBOARDS - 1)] = UNSET };
@@ -169,7 +170,7 @@ struct tm6000_board tm6000_boards[] = {
169 .gpio_addr_tun_reset = TM6000_GPIO_4, 170 .gpio_addr_tun_reset = TM6000_GPIO_4,
170 }, 171 },
171 [TM6010_BOARD_HAUPPAUGE_900H] = { 172 [TM6010_BOARD_HAUPPAUGE_900H] = {
172 .name = "Hauppauge HVR-900H", 173 .name = "Hauppauge WinTV HVR-900H / WinTV USB2-Stick",
173 .tuner_type = TUNER_XC2028, /* has a XC3028 */ 174 .tuner_type = TUNER_XC2028, /* has a XC3028 */
174 .tuner_addr = 0xc2 >> 1, 175 .tuner_addr = 0xc2 >> 1,
175 .demod_addr = 0x1e >> 1, 176 .demod_addr = 0x1e >> 1,
@@ -180,7 +181,7 @@ struct tm6000_board tm6000_boards[] = {
180 .has_zl10353 = 1, 181 .has_zl10353 = 1,
181 .has_eeprom = 1, 182 .has_eeprom = 1,
182 }, 183 },
183 .gpio_addr_tun_reset = TM6000_GPIO_2, 184 .gpio_addr_tun_reset = TM6010_GPIO_2,
184 }, 185 },
185 [TM6010_BOARD_BEHOLD_WANDER] = { 186 [TM6010_BOARD_BEHOLD_WANDER] = {
186 .name = "Beholder Wander DVB-T/TV/FM USB2.0", 187 .name = "Beholder Wander DVB-T/TV/FM USB2.0",
@@ -212,7 +213,22 @@ struct tm6000_board tm6000_boards[] = {
212 .gpio_addr_tun_reset = TM6000_GPIO_2, 213 .gpio_addr_tun_reset = TM6000_GPIO_2,
213 }, 214 },
214 [TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE] = { 215 [TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE] = {
215 .name = "Terratec Cinergy Hybrid XE", 216 .name = "Terratec Cinergy Hybrid XE / Cinergy Hybrid-Stick",
217 .tuner_type = TUNER_XC2028, /* has a XC3028 */
218 .tuner_addr = 0xc2 >> 1,
219 .demod_addr = 0x1e >> 1,
220 .type = TM6010,
221 .caps = {
222 .has_tuner = 1,
223 .has_dvb = 1,
224 .has_zl10353 = 1,
225 .has_eeprom = 1,
226 .has_remote = 1,
227 },
228 .gpio_addr_tun_reset = TM6010_GPIO_2,
229 },
230 [TM6010_BOARD_TWINHAN_TU501] = {
231 .name = "Twinhan TU501(704D1)",
216 .tuner_type = TUNER_XC2028, /* has a XC3028 */ 232 .tuner_type = TUNER_XC2028, /* has a XC3028 */
217 .tuner_addr = 0xc2 >> 1, 233 .tuner_addr = 0xc2 >> 1,
218 .demod_addr = 0x1e >> 1, 234 .demod_addr = 0x1e >> 1,
@@ -236,9 +252,17 @@ struct usb_device_id tm6000_id_table [] = {
236 { USB_DEVICE(0x14aa, 0x0620), .driver_info = TM6000_BOARD_FREECOM_AND_SIMILAR }, 252 { USB_DEVICE(0x14aa, 0x0620), .driver_info = TM6000_BOARD_FREECOM_AND_SIMILAR },
237 { USB_DEVICE(0x06e1, 0xb339), .driver_info = TM6000_BOARD_ADSTECH_MINI_DUAL_TV }, 253 { USB_DEVICE(0x06e1, 0xb339), .driver_info = TM6000_BOARD_ADSTECH_MINI_DUAL_TV },
238 { USB_DEVICE(0x2040, 0x6600), .driver_info = TM6010_BOARD_HAUPPAUGE_900H }, 254 { USB_DEVICE(0x2040, 0x6600), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
255 { USB_DEVICE(0x2040, 0x6601), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
256 { USB_DEVICE(0x2040, 0x6610), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
257 { USB_DEVICE(0x2040, 0x6611), .driver_info = TM6010_BOARD_HAUPPAUGE_900H },
239 { USB_DEVICE(0x6000, 0xdec0), .driver_info = TM6010_BOARD_BEHOLD_WANDER }, 258 { USB_DEVICE(0x6000, 0xdec0), .driver_info = TM6010_BOARD_BEHOLD_WANDER },
240 { USB_DEVICE(0x6000, 0xdec1), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER }, 259 { USB_DEVICE(0x6000, 0xdec1), .driver_info = TM6010_BOARD_BEHOLD_VOYAGER },
241 { USB_DEVICE(0x0ccd, 0x0086), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE }, 260 { USB_DEVICE(0x0ccd, 0x0086), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE },
261 { USB_DEVICE(0x0ccd, 0x00A5), .driver_info = TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE },
262 { USB_DEVICE(0x13d3, 0x3240), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
263 { USB_DEVICE(0x13d3, 0x3241), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
264 { USB_DEVICE(0x13d3, 0x3243), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
265 { USB_DEVICE(0x13d3, 0x3264), .driver_info = TM6010_BOARD_TWINHAN_TU501 },
242 { }, 266 { },
243}; 267};
244 268
@@ -271,7 +295,9 @@ int tm6000_tuner_callback(void *ptr, int component, int command, int arg)
271 case 0: 295 case 0:
272 /* newer tuner can faster reset */ 296 /* newer tuner can faster reset */
273 switch (dev->model) { 297 switch (dev->model) {
298 case TM6010_BOARD_HAUPPAUGE_900H:
274 case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE: 299 case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
300 case TM6010_BOARD_TWINHAN_TU501:
275 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, 301 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN,
276 dev->tuner_reset_gpio, 0x01); 302 dev->tuner_reset_gpio, 0x01);
277 msleep(60); 303 msleep(60);
@@ -328,11 +354,11 @@ int tm6000_cards_setup(struct tm6000_core *dev)
328 */ 354 */
329 switch (dev->model) { 355 switch (dev->model) {
330 case TM6010_BOARD_HAUPPAUGE_900H: 356 case TM6010_BOARD_HAUPPAUGE_900H:
357 case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
358 case TM6010_BOARD_TWINHAN_TU501:
331 /* Turn xceive 3028 on */ 359 /* Turn xceive 3028 on */
332 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_3, 0x01); 360 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_3, 0x01);
333 msleep(11); 361 msleep(15);
334 break;
335 case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
336 /* Turn zarlink zl10353 on */ 362 /* Turn zarlink zl10353 on */
337 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_4, 0x00); 363 tm6000_set_reg(dev, REQ_03_SET_GET_MCU_PIN, TM6010_GPIO_4, 0x00);
338 msleep(15); 364 msleep(15);
@@ -445,6 +471,7 @@ static void tm6000_config_tuner (struct tm6000_core *dev)
445 switch(dev->model) { 471 switch(dev->model) {
446 case TM6010_BOARD_HAUPPAUGE_900H: 472 case TM6010_BOARD_HAUPPAUGE_900H:
447 case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE: 473 case TM6010_BOARD_TERRATEC_CINERGY_HYBRID_XE:
474 case TM6010_BOARD_TWINHAN_TU501:
448 ctl.fname = "xc3028L-v36.fw"; 475 ctl.fname = "xc3028L-v36.fw";
449 break; 476 break;
450 default: 477 default: