aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx23885/cx23885-cards.c
diff options
context:
space:
mode:
authorAlexey Chernov <4ernov@gmail.com>2010-12-06 15:09:53 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2010-12-29 05:17:18 -0500
commit9028f58f5d7e810a0e88b508ebe6a69daf7e3273 (patch)
treeba9d6cab3a71cf7d8f76f248c478d86de9ee5a88 /drivers/media/video/cx23885/cx23885-cards.c
parent5f63306d82131371f464c0e5b7ebe6a23a84c768 (diff)
[media] support of GoTView PCI-E X5 3D Hybrid in cx23885
Some comments: 1. Everything initialize properly except radio. 2. All analog inputs (TV, composite, S-Video) are tested by myself in several TV norms (SECAM-D, PAL, NTSC), everything work fine. So the patch adds general support/detection of the card with working analog part, DVB part is not supported for now. Signed-off-by: Alexey Chernov <4ernov@gmail.com> Reviewed-by: Steven Toth <stoth@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx23885/cx23885-cards.c')
-rw-r--r--drivers/media/video/cx23885/cx23885-cards.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index 8861309268b1..b298b730943c 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -309,6 +309,26 @@ struct cx23885_board cx23885_boards[] = {
309 CX25840_COMPONENT_ON, 309 CX25840_COMPONENT_ON,
310 } }, 310 } },
311 }, 311 },
312 [CX23885_BOARD_GOTVIEW_X5_3D_HYBRID] = {
313 .name = "GoTView X5 3D Hybrid",
314 .tuner_type = TUNER_XC5000,
315 .tuner_addr = 0x64,
316 .porta = CX23885_ANALOG_VIDEO,
317 .portb = CX23885_MPEG_DVB,
318 .input = {{
319 .type = CX23885_VMUX_TELEVISION,
320 .vmux = CX25840_VIN2_CH1 |
321 CX25840_VIN5_CH2,
322 .gpio0 = 0x02,
323 }, {
324 .type = CX23885_VMUX_COMPOSITE1,
325 .vmux = CX23885_VMUX_COMPOSITE1,
326 }, {
327 .type = CX23885_VMUX_SVIDEO,
328 .vmux = CX25840_SVIDEO_LUMA3 |
329 CX25840_SVIDEO_CHROMA4,
330 } },
331 },
312}; 332};
313const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); 333const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards);
314 334
@@ -496,6 +516,10 @@ struct cx23885_subid cx23885_subids[] = {
496 .subvendor = 0x107d, 516 .subvendor = 0x107d,
497 .subdevice = 0x6f22, 517 .subdevice = 0x6f22,
498 .card = CX23885_BOARD_LEADTEK_WINFAST_PXTV1200, 518 .card = CX23885_BOARD_LEADTEK_WINFAST_PXTV1200,
519 }, {
520 .subvendor = 0x5654,
521 .subdevice = 0x2390,
522 .card = CX23885_BOARD_GOTVIEW_X5_3D_HYBRID,
499 }, 523 },
500}; 524};
501const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); 525const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids);
@@ -712,6 +736,10 @@ int cx23885_tuner_callback(void *priv, int component, int command, int arg)
712 else if (port->nr == 2) 736 else if (port->nr == 2)
713 bitmask = 0x04; 737 bitmask = 0x04;
714 break; 738 break;
739 case CX23885_BOARD_GOTVIEW_X5_3D_HYBRID:
740 /* Tuner Reset Command */
741 bitmask = 0x02;
742 break;
715 } 743 }
716 744
717 if (bitmask) { 745 if (bitmask) {
@@ -967,6 +995,9 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
967 /* CX24228 GPIO */ 995 /* CX24228 GPIO */
968 /* Connected to IF / Mux */ 996 /* Connected to IF / Mux */
969 break; 997 break;
998 case CX23885_BOARD_GOTVIEW_X5_3D_HYBRID:
999 cx_set(GP0_IO, 0x00010001); /* Bring the part out of reset */
1000 break;
970 } 1001 }
971} 1002}
972 1003
@@ -1218,6 +1249,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
1218 case CX23885_BOARD_HAUPPAUGE_HVR1850: 1249 case CX23885_BOARD_HAUPPAUGE_HVR1850:
1219 case CX23885_BOARD_COMPRO_VIDEOMATE_E800: 1250 case CX23885_BOARD_COMPRO_VIDEOMATE_E800:
1220 case CX23885_BOARD_HAUPPAUGE_HVR1290: 1251 case CX23885_BOARD_HAUPPAUGE_HVR1290:
1252 case CX23885_BOARD_GOTVIEW_X5_3D_HYBRID:
1221 default: 1253 default:
1222 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */ 1254 ts2->gen_ctrl_val = 0xc; /* Serial bus + punctured clock */
1223 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */ 1255 ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
@@ -1245,6 +1277,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
1245 case CX23885_BOARD_MAGICPRO_PROHDTVE2: 1277 case CX23885_BOARD_MAGICPRO_PROHDTVE2:
1246 case CX23885_BOARD_HAUPPAUGE_HVR1290: 1278 case CX23885_BOARD_HAUPPAUGE_HVR1290:
1247 case CX23885_BOARD_LEADTEK_WINFAST_PXTV1200: 1279 case CX23885_BOARD_LEADTEK_WINFAST_PXTV1200:
1280 case CX23885_BOARD_GOTVIEW_X5_3D_HYBRID:
1248 dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, 1281 dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev,
1249 &dev->i2c_bus[2].i2c_adap, 1282 &dev->i2c_bus[2].i2c_adap,
1250 "cx25840", 0x88 >> 1, NULL); 1283 "cx25840", 0x88 >> 1, NULL);