diff options
author | Stefan Ringel <stefan.ringel@arcor.de> | 2010-03-10 12:57:57 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-05-17 23:47:02 -0400 |
commit | 8b0d2a052733d0a0e8ed59aeb8c7e6c90fdb793e (patch) | |
tree | 53267aa0f92dd919d9cd54b369426cf4ad8b6f20 /drivers/staging | |
parent | 000f64efc7fe6693261a78a0164c0e805553631b (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.c | 39 |
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 |
52 | static unsigned int card[] = {[0 ... (TM6000_MAXBOARDS - 1)] = UNSET }; | 53 | static 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: |