V4L/DVB (13211): cx23885: card Mygica X8506 analog TV support
authorDavid T.L. Wong <davidtlwong@gmail.com>
Wed, 21 Oct 2009 16:15:30 +0000 (13:15 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 5 Dec 2009 20:40:54 +0000 (18:40 -0200)
Signed-off-by: David T.L. Wong <davidtlwong@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx23885/cx23885-cards.c
drivers/media/video/cx23885/cx23885-dvb.c
drivers/media/video/cx23885/cx23885-video.c

index a2ba09e..2cbac93 100644 (file)
@@ -200,11 +200,16 @@ struct cx23885_board cx23885_boards[] = {
        },
        [CX23885_BOARD_MYGICA_X8506] = {
                .name           = "Mygica X8506 DMB-TH",
-               .tuner_type = TUNER_ABSENT,
+               .tuner_type = TUNER_XC5000,
+               .tuner_addr = 0x61,
                .porta          = CX23885_ANALOG_VIDEO,
                .portb          = CX23885_MPEG_DVB,
                .input          = {
                        {
+                               .type   = CX23885_VMUX_TELEVISION,
+                               .vmux   = CX25840_COMPOSITE2,
+                       },
+                       {
                                .type   = CX23885_VMUX_COMPOSITE1,
                                .vmux   = CX25840_COMPOSITE8,
                        },
@@ -224,11 +229,16 @@ struct cx23885_board cx23885_boards[] = {
        },
        [CX23885_BOARD_MAGICPRO_PROHDTVE2] = {
                .name           = "Magic-Pro ProHDTV Extreme 2",
-               .tuner_type = TUNER_ABSENT,
+               .tuner_type = TUNER_XC5000,
+               .tuner_addr = 0x61,
                .porta          = CX23885_ANALOG_VIDEO,
                .portb          = CX23885_MPEG_DVB,
                .input          = {
                        {
+                               .type   = CX23885_VMUX_TELEVISION,
+                               .vmux   = CX25840_COMPOSITE2,
+                       },
+                       {
                                .type   = CX23885_VMUX_COMPOSITE1,
                                .vmux   = CX25840_COMPOSITE8,
                        },
index 8755976..4d439f2 100644 (file)
@@ -486,6 +486,11 @@ static int cx23885_dvb_set_frontend(struct dvb_frontend *fe,
                        break;
                }
                break;
+       case CX23885_BOARD_MYGICA_X8506:
+       case CX23885_BOARD_MAGICPRO_PROHDTVE2:
+               /* Select Digital TV */
+               cx23885_gpio_set(dev, GPIO_0);
+               break;
        }
        return 0;
 }
index e14cb39..8b372b4 100644 (file)
@@ -402,6 +402,13 @@ static int cx23885_video_mux(struct cx23885_dev *dev, unsigned int input)
                INPUT(input)->gpio2, INPUT(input)->gpio3);
        dev->input = input;
 
+       if (dev->board == CX23885_BOARD_MYGICA_X8506 ||
+               dev->board == CX23885_BOARD_MAGICPRO_PROHDTVE2) {
+               /* Select Analog TV */
+               if (INPUT(input)->type == CX23885_VMUX_TELEVISION)
+                       cx23885_gpio_clear(dev, GPIO_0);
+       }
+
        /* Tell the internal A/V decoder */
        v4l2_subdev_call(dev->sd_cx25840, video, s_routing,
                        INPUT(input)->vmux, 0, 0);
@@ -1508,6 +1515,7 @@ int cx23885_video_register(struct cx23885_dev *dev)
                        tun_setup.mode_mask = T_ANALOG_TV;
                        tun_setup.type = dev->tuner_type;
                        tun_setup.addr = v4l2_i2c_subdev_addr(sd);
+                       tun_setup.tuner_callback = cx23885_tuner_callback;
 
                        v4l2_subdev_call(sd, tuner, s_type_addr, &tun_setup);
                }