aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx23885
diff options
context:
space:
mode:
authorDavid T.L. Wong <davidtlwong@gmail.com>2009-10-21 12:15:30 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-12-05 15:40:54 -0500
commit6f0d8c020ecff4acb959627109d3b81ded211b70 (patch)
tree1a94219980bae7ccaf526009ecdfdd1edaa59e4a /drivers/media/video/cx23885
parent8e069bb9aeb4250dd062bb136f4b3db5c4c530ff (diff)
V4L/DVB (13211): cx23885: card Mygica X8506 analog TV support
Signed-off-by: David T.L. Wong <davidtlwong@gmail.com> 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.c14
-rw-r--r--drivers/media/video/cx23885/cx23885-dvb.c5
-rw-r--r--drivers/media/video/cx23885/cx23885-video.c8
3 files changed, 25 insertions, 2 deletions
diff --git a/drivers/media/video/cx23885/cx23885-cards.c b/drivers/media/video/cx23885/cx23885-cards.c
index a2ba09e0aef0..2cbac93866be 100644
--- a/drivers/media/video/cx23885/cx23885-cards.c
+++ b/drivers/media/video/cx23885/cx23885-cards.c
@@ -200,11 +200,16 @@ struct cx23885_board cx23885_boards[] = {
200 }, 200 },
201 [CX23885_BOARD_MYGICA_X8506] = { 201 [CX23885_BOARD_MYGICA_X8506] = {
202 .name = "Mygica X8506 DMB-TH", 202 .name = "Mygica X8506 DMB-TH",
203 .tuner_type = TUNER_ABSENT, 203 .tuner_type = TUNER_XC5000,
204 .tuner_addr = 0x61,
204 .porta = CX23885_ANALOG_VIDEO, 205 .porta = CX23885_ANALOG_VIDEO,
205 .portb = CX23885_MPEG_DVB, 206 .portb = CX23885_MPEG_DVB,
206 .input = { 207 .input = {
207 { 208 {
209 .type = CX23885_VMUX_TELEVISION,
210 .vmux = CX25840_COMPOSITE2,
211 },
212 {
208 .type = CX23885_VMUX_COMPOSITE1, 213 .type = CX23885_VMUX_COMPOSITE1,
209 .vmux = CX25840_COMPOSITE8, 214 .vmux = CX25840_COMPOSITE8,
210 }, 215 },
@@ -224,11 +229,16 @@ struct cx23885_board cx23885_boards[] = {
224 }, 229 },
225 [CX23885_BOARD_MAGICPRO_PROHDTVE2] = { 230 [CX23885_BOARD_MAGICPRO_PROHDTVE2] = {
226 .name = "Magic-Pro ProHDTV Extreme 2", 231 .name = "Magic-Pro ProHDTV Extreme 2",
227 .tuner_type = TUNER_ABSENT, 232 .tuner_type = TUNER_XC5000,
233 .tuner_addr = 0x61,
228 .porta = CX23885_ANALOG_VIDEO, 234 .porta = CX23885_ANALOG_VIDEO,
229 .portb = CX23885_MPEG_DVB, 235 .portb = CX23885_MPEG_DVB,
230 .input = { 236 .input = {
231 { 237 {
238 .type = CX23885_VMUX_TELEVISION,
239 .vmux = CX25840_COMPOSITE2,
240 },
241 {
232 .type = CX23885_VMUX_COMPOSITE1, 242 .type = CX23885_VMUX_COMPOSITE1,
233 .vmux = CX25840_COMPOSITE8, 243 .vmux = CX25840_COMPOSITE8,
234 }, 244 },
diff --git a/drivers/media/video/cx23885/cx23885-dvb.c b/drivers/media/video/cx23885/cx23885-dvb.c
index 875597640d74..4d439f2c4abc 100644
--- a/drivers/media/video/cx23885/cx23885-dvb.c
+++ b/drivers/media/video/cx23885/cx23885-dvb.c
@@ -486,6 +486,11 @@ static int cx23885_dvb_set_frontend(struct dvb_frontend *fe,
486 break; 486 break;
487 } 487 }
488 break; 488 break;
489 case CX23885_BOARD_MYGICA_X8506:
490 case CX23885_BOARD_MAGICPRO_PROHDTVE2:
491 /* Select Digital TV */
492 cx23885_gpio_set(dev, GPIO_0);
493 break;
489 } 494 }
490 return 0; 495 return 0;
491} 496}
diff --git a/drivers/media/video/cx23885/cx23885-video.c b/drivers/media/video/cx23885/cx23885-video.c
index e14cb39d8412..8b372b4f0de2 100644
--- a/drivers/media/video/cx23885/cx23885-video.c
+++ b/drivers/media/video/cx23885/cx23885-video.c
@@ -402,6 +402,13 @@ static int cx23885_video_mux(struct cx23885_dev *dev, unsigned int input)
402 INPUT(input)->gpio2, INPUT(input)->gpio3); 402 INPUT(input)->gpio2, INPUT(input)->gpio3);
403 dev->input = input; 403 dev->input = input;
404 404
405 if (dev->board == CX23885_BOARD_MYGICA_X8506 ||
406 dev->board == CX23885_BOARD_MAGICPRO_PROHDTVE2) {
407 /* Select Analog TV */
408 if (INPUT(input)->type == CX23885_VMUX_TELEVISION)
409 cx23885_gpio_clear(dev, GPIO_0);
410 }
411
405 /* Tell the internal A/V decoder */ 412 /* Tell the internal A/V decoder */
406 v4l2_subdev_call(dev->sd_cx25840, video, s_routing, 413 v4l2_subdev_call(dev->sd_cx25840, video, s_routing,
407 INPUT(input)->vmux, 0, 0); 414 INPUT(input)->vmux, 0, 0);
@@ -1508,6 +1515,7 @@ int cx23885_video_register(struct cx23885_dev *dev)
1508 tun_setup.mode_mask = T_ANALOG_TV; 1515 tun_setup.mode_mask = T_ANALOG_TV;
1509 tun_setup.type = dev->tuner_type; 1516 tun_setup.type = dev->tuner_type;
1510 tun_setup.addr = v4l2_i2c_subdev_addr(sd); 1517 tun_setup.addr = v4l2_i2c_subdev_addr(sd);
1518 tun_setup.tuner_callback = cx23885_tuner_callback;
1511 1519
1512 v4l2_subdev_call(sd, tuner, s_type_addr, &tun_setup); 1520 v4l2_subdev_call(sd, tuner, s_type_addr, &tun_setup);
1513 } 1521 }