diff options
author | Igor M. Liplianin <liplianin@me.by> | 2009-01-17 10:11:20 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-03-30 11:42:23 -0400 |
commit | 96318d0cca02a91b22a2e1a1097ffeea0b3becae (patch) | |
tree | 7bf49b7ba8840efd8cbd3c0dbf53cae530ace729 /drivers/media/video/cx23885 | |
parent | c76b638ca20d6cbf91ee017c6f2afd7d3fcd57ff (diff) |
V4L/DVB (10266): Add support for TurboSight TBS6920 DVB-S2 PCI-e card.
TurboSight TBS6920 DVB-S2 PCI-e card contains cx23885 PCI-e bridge
and cx24116 demodulator.
http://www.linuxtv.org/wiki/index.php/TBS_6920
The card tested by me (Igor).
Signed-off-by: Igor M. Liplianin <liplianin@me.by>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx23885')
-rw-r--r-- | drivers/media/video/cx23885/cx23885-cards.c | 18 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-dvb.c | 29 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885.h | 1 |
3 files changed, 48 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c index caa098beeec..0b050bc88ef 100644 --- a/drivers/media/video/cx23885/cx23885-cards.c +++ b/drivers/media/video/cx23885/cx23885-cards.c | |||
@@ -162,6 +162,10 @@ struct cx23885_board cx23885_boards[] = { | |||
162 | .name = "Compro VideoMate E650F", | 162 | .name = "Compro VideoMate E650F", |
163 | .portc = CX23885_MPEG_DVB, | 163 | .portc = CX23885_MPEG_DVB, |
164 | }, | 164 | }, |
165 | [CX23885_BOARD_TBS_6920] = { | ||
166 | .name = "TurboSight TBS 6920", | ||
167 | .portb = CX23885_MPEG_DVB, | ||
168 | }, | ||
165 | }; | 169 | }; |
166 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 170 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); |
167 | 171 | ||
@@ -245,6 +249,10 @@ struct cx23885_subid cx23885_subids[] = { | |||
245 | .subvendor = 0x185b, | 249 | .subvendor = 0x185b, |
246 | .subdevice = 0xe800, | 250 | .subdevice = 0xe800, |
247 | .card = CX23885_BOARD_COMPRO_VIDEOMATE_E650F, | 251 | .card = CX23885_BOARD_COMPRO_VIDEOMATE_E650F, |
252 | }, { | ||
253 | .subvendor = 0x6920, | ||
254 | .subdevice = 0x8888, | ||
255 | .card = CX23885_BOARD_TBS_6920, | ||
248 | }, | 256 | }, |
249 | }; | 257 | }; |
250 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 258 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); |
@@ -552,6 +560,11 @@ void cx23885_gpio_setup(struct cx23885_dev *dev) | |||
552 | mdelay(20); | 560 | mdelay(20); |
553 | cx_set(GP0_IO, 0x00040004); | 561 | cx_set(GP0_IO, 0x00040004); |
554 | break; | 562 | break; |
563 | case CX23885_BOARD_TBS_6920: | ||
564 | cx_write(MC417_CTL, 0x00000036); | ||
565 | cx_write(MC417_OEN, 0x00001000); | ||
566 | cx_write(MC417_RWD, 0x00001800); | ||
567 | break; | ||
555 | } | 568 | } |
556 | } | 569 | } |
557 | 570 | ||
@@ -632,6 +645,11 @@ void cx23885_card_setup(struct cx23885_dev *dev) | |||
632 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | 645 | ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ |
633 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | 646 | ts2->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; |
634 | break; | 647 | break; |
648 | case CX23885_BOARD_TBS_6920: | ||
649 | ts1->gen_ctrl_val = 0x5; /* Parallel */ | ||
650 | ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */ | ||
651 | ts1->src_sel_val = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO; | ||
652 | break; | ||
635 | case CX23885_BOARD_HAUPPAUGE_HVR1250: | 653 | case CX23885_BOARD_HAUPPAUGE_HVR1250: |
636 | case CX23885_BOARD_HAUPPAUGE_HVR1500: | 654 | case CX23885_BOARD_HAUPPAUGE_HVR1500: |
637 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: | 655 | case CX23885_BOARD_HAUPPAUGE_HVR1500Q: |
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c index 1c454128a9d..3e0b04074e5 100644 --- a/drivers/media/video/cx23885/cx23885-dvb.c +++ b/drivers/media/video/cx23885/cx23885-dvb.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include "dib7000p.h" | 43 | #include "dib7000p.h" |
44 | #include "dibx000_common.h" | 44 | #include "dibx000_common.h" |
45 | #include "zl10353.h" | 45 | #include "zl10353.h" |
46 | #include "cx24116.h" | ||
46 | 47 | ||
47 | static unsigned int debug; | 48 | static unsigned int debug; |
48 | 49 | ||
@@ -308,6 +309,24 @@ static struct zl10353_config dvico_fusionhdtv_xc3028 = { | |||
308 | .no_tuner = 1, | 309 | .no_tuner = 1, |
309 | }; | 310 | }; |
310 | 311 | ||
312 | static int tbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage) | ||
313 | { | ||
314 | struct cx23885_tsport *port = fe->dvb->priv; | ||
315 | struct cx23885_dev *dev = port->dev; | ||
316 | |||
317 | if (voltage == SEC_VOLTAGE_18) | ||
318 | cx_write(MC417_RWD, 0x00001e00);/* GPIO-13 high */ | ||
319 | else if (voltage == SEC_VOLTAGE_13) | ||
320 | cx_write(MC417_RWD, 0x00001a00);/* GPIO-13 low */ | ||
321 | else | ||
322 | cx_write(MC417_RWD, 0x00001800);/* GPIO-12 low */ | ||
323 | return 0; | ||
324 | } | ||
325 | |||
326 | static struct cx24116_config tbs_cx24116_config = { | ||
327 | .demod_address = 0x05, | ||
328 | }; | ||
329 | |||
311 | static int dvb_register(struct cx23885_tsport *port) | 330 | static int dvb_register(struct cx23885_tsport *port) |
312 | { | 331 | { |
313 | struct cx23885_dev *dev = port->dev; | 332 | struct cx23885_dev *dev = port->dev; |
@@ -526,6 +545,16 @@ static int dvb_register(struct cx23885_tsport *port) | |||
526 | fe->ops.tuner_ops.set_config(fe, &ctl); | 545 | fe->ops.tuner_ops.set_config(fe, &ctl); |
527 | } | 546 | } |
528 | break; | 547 | break; |
548 | case CX23885_BOARD_TBS_6920: | ||
549 | i2c_bus = &dev->i2c_bus[0]; | ||
550 | |||
551 | fe0->dvb.frontend = dvb_attach(cx24116_attach, | ||
552 | &tbs_cx24116_config, | ||
553 | &i2c_bus->i2c_adap); | ||
554 | if (fe0->dvb.frontend != NULL) | ||
555 | fe0->dvb.frontend->ops.set_voltage = tbs_set_voltage; | ||
556 | |||
557 | break; | ||
529 | default: | 558 | default: |
530 | printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " | 559 | printk(KERN_INFO "%s: The frontend of your DVB/ATSC card " |
531 | " isn't supported yet\n", | 560 | " isn't supported yet\n", |
diff --git a/drivers/media/video/cx23885/cx23885.h b/drivers/media/video/cx23885/cx23885.h index 67828029fc6..b4f23238598 100644 --- a/drivers/media/video/cx23885/cx23885.h +++ b/drivers/media/video/cx23885/cx23885.h | |||
@@ -67,6 +67,7 @@ | |||
67 | #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 11 | 67 | #define CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP 11 |
68 | #define CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H 12 | 68 | #define CX23885_BOARD_LEADTEK_WINFAST_PXDVR3200_H 12 |
69 | #define CX23885_BOARD_COMPRO_VIDEOMATE_E650F 13 | 69 | #define CX23885_BOARD_COMPRO_VIDEOMATE_E650F 13 |
70 | #define CX23885_BOARD_TBS_6920 14 | ||
70 | 71 | ||
71 | /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */ | 72 | /* Currently unsupported by the driver: PAL/H, NTSC/Kr, SECAM B/G/H/LC */ |
72 | #define CX23885_NORMS (\ | 73 | #define CX23885_NORMS (\ |