diff options
author | Alexey Chernov <4ernov@gmail.com> | 2010-12-06 15:09:53 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-12-29 05:17:18 -0500 |
commit | 9028f58f5d7e810a0e88b508ebe6a69daf7e3273 (patch) | |
tree | ba9d6cab3a71cf7d8f76f248c478d86de9ee5a88 /drivers/media/video/cx23885/cx23885-cards.c | |
parent | 5f63306d82131371f464c0e5b7ebe6a23a84c768 (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.c | 33 |
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 | }; |
313 | const unsigned int cx23885_bcount = ARRAY_SIZE(cx23885_boards); | 333 | const 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 | }; |
501 | const unsigned int cx23885_idcount = ARRAY_SIZE(cx23885_subids); | 525 | const 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); |