media: cx23885: Add analog frontend to HVR5525
authorBrad Love <brad@nextdimension.cc>
Thu, 14 Nov 2019 20:04:03 +0000 (21:04 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 21 Apr 2020 14:48:49 +0000 (16:48 +0200)
Enables the analog tuning frontend for Hauppauge HVR-5525.

Signed-off-by: Brad Love <brad@nextdimension.cc>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/pci/cx23885/cx23885-cards.c
drivers/media/pci/cx23885/cx23885-dvb.c
drivers/media/pci/cx23885/cx23885-video.c

index f1bd73e..570a4a0 100644 (file)
@@ -703,8 +703,19 @@ struct cx23885_board cx23885_boards[] = {
        },
        [CX23885_BOARD_HAUPPAUGE_HVR5525] = {
                .name           = "Hauppauge WinTV-HVR5525",
+               .porta          = CX23885_ANALOG_VIDEO,
                .portb          = CX23885_MPEG_DVB,
                .portc          = CX23885_MPEG_DVB,
+               .tuner_type     = TUNER_ABSENT,
+               .force_bff      = 1,
+               .input          = {{
+                       .type   = CX23885_VMUX_TELEVISION,
+                       .vmux   =       CX25840_VIN7_CH3 |
+                                       CX25840_VIN5_CH2 |
+                                       CX25840_VIN2_CH1 |
+                                       CX25840_DIF_ON,
+                       .amux   = CX25840_AUDIO8,
+               } },
        },
        [CX23885_BOARD_VIEWCAST_260E] = {
                .name           = "ViewCast 260e",
@@ -2379,6 +2390,7 @@ void cx23885_card_setup(struct cx23885_dev *dev)
        case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
        case CX23885_BOARD_HAUPPAUGE_HVR1270:
        case CX23885_BOARD_HAUPPAUGE_HVR1850:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
        case CX23885_BOARD_MYGICA_X8506:
        case CX23885_BOARD_MAGICPRO_PROHDTVE2:
        case CX23885_BOARD_HAUPPAUGE_HVR1290:
index 7c2c8f1..45c2f4a 100644 (file)
@@ -2314,6 +2314,12 @@ static int dvb_register(struct cx23885_tsport *port)
                                goto frontend_detach;
                        }
                        port->i2c_client_tuner = client_tuner;
+
+                       dev->ts1.analog_fe.tuner_priv = client_tuner;
+                       memcpy(&dev->ts1.analog_fe.ops.tuner_ops,
+                              &fe0->dvb.frontend->ops.tuner_ops,
+                              sizeof(struct dvb_tuner_ops));
+
                        break;
                }
                break;
index a2a1dd4..3c1051d 100644 (file)
@@ -256,6 +256,7 @@ static int cx23885_video_mux(struct cx23885_dev *dev, unsigned int input)
                (dev->board == CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC) ||
                (dev->board == CX23885_BOARD_HAUPPAUGE_QUADHD_DVB) ||
                (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1850) ||
+               (dev->board == CX23885_BOARD_HAUPPAUGE_HVR5525) ||
                (dev->board == CX23885_BOARD_MYGICA_X8507) ||
                (dev->board == CX23885_BOARD_AVERMEDIA_HC81R) ||
                (dev->board == CX23885_BOARD_VIEWCAST_260E) ||
@@ -999,6 +1000,7 @@ static int cx23885_set_freq_via_ops(struct cx23885_dev *dev,
            (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255) ||
            (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1255_22111) ||
            (dev->board == CX23885_BOARD_HAUPPAUGE_HVR1265_K4) ||
+           (dev->board == CX23885_BOARD_HAUPPAUGE_HVR5525) ||
            (dev->board == CX23885_BOARD_HAUPPAUGE_QUADHD_DVB) ||
            (dev->board == CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC))
                fe = &dev->ts1.analog_fe;
@@ -1031,6 +1033,7 @@ int cx23885_set_frequency(struct file *file, void *priv,
        case CX23885_BOARD_HAUPPAUGE_HVR1255_22111:
        case CX23885_BOARD_HAUPPAUGE_HVR1265_K4:
        case CX23885_BOARD_HAUPPAUGE_HVR1850:
+       case CX23885_BOARD_HAUPPAUGE_HVR5525:
        case CX23885_BOARD_HAUPPAUGE_QUADHD_DVB:
        case CX23885_BOARD_HAUPPAUGE_QUADHD_ATSC:
                ret = cx23885_set_freq_via_ops(dev, f);