[media] tuner-core: add an input pad
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 31 Aug 2015 16:23:03 +0000 (13:23 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 11 Jan 2016 14:18:55 +0000 (12:18 -0200)
Tuners actually have at least one connector on its input.

Add a PAD to connect it.

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-core/dvbdev.c
drivers/media/usb/au0828/au0828-core.c
drivers/media/usb/cx231xx/cx231xx-cards.c
drivers/media/v4l2-core/tuner-core.c
include/media/tuner.h

index f00f1a5f279cfa524f45375b139d4862588d9751..a8e7e2398f7a5b5ce1d089d59a983b1ec8ce7995 100644 (file)
@@ -34,6 +34,9 @@
 #include <linux/mutex.h>
 #include "dvbdev.h"
 
+/* Due to enum tuner_pad_index */
+#include <media/tuner.h>
+
 static DEFINE_MUTEX(dvbdev_mutex);
 static int dvbdev_debug;
 
@@ -552,7 +555,7 @@ void dvb_create_media_graph(struct dvb_adapter *adap)
        }
 
        if (tuner && demod)
-               media_create_pad_link(tuner, 0, demod, 0, 0);
+               media_create_pad_link(tuner, TUNER_PAD_IF_OUTPUT, demod, 0, 0);
 
        if (demod && demux)
                media_create_pad_link(demod, 1, demux, 0, MEDIA_LNK_FL_ENABLED);
index 7f645bcb746391795adb39fccd941ebc7180334c..ee20f4354ba26a485e7280eb20d434c69a4f81ac 100644 (file)
@@ -27,6 +27,9 @@
 #include <media/v4l2-common.h>
 #include <linux/mutex.h>
 
+/* Due to enum tuner_pad_index */
+#include <media/tuner.h>
+
 /*
  * 1 = General debug messages
  * 2 = USB handling
@@ -260,7 +263,7 @@ static void au0828_create_media_graph(struct au0828_dev *dev)
                return;
 
        if (tuner)
-               media_create_pad_link(tuner, 0, decoder, 0,
+               media_create_pad_link(tuner, TUNER_PAD_IF_OUTPUT, decoder, 0,
                                      MEDIA_LNK_FL_ENABLED);
        media_create_pad_link(decoder, 1, &dev->vdev.entity, 0,
                              MEDIA_LNK_FL_ENABLED);
index 695f0c092c794c6a6bab45d504fc2799a40084f8..29cf0c268b190f01e76096befaeea1783a2cb707 100644 (file)
@@ -1264,7 +1264,7 @@ static void cx231xx_create_media_graph(struct cx231xx *dev)
                return;
 
        if (tuner)
-               media_create_pad_link(tuner, 0, decoder, 0,
+               media_create_pad_link(tuner, TUNER_PAD_IF_OUTPUT, decoder, 0,
                                         MEDIA_LNK_FL_ENABLED);
        media_create_pad_link(decoder, 1, &dev->vdev.entity, 0,
                                 MEDIA_LNK_FL_ENABLED);
index 100b8f0696409b4ca9ce5e7bef797fcdb4852260..b90f2a52db9631a7218c2290a1ec6f835bf67ada 100644 (file)
@@ -134,8 +134,9 @@ struct tuner {
        unsigned int        type; /* chip type id */
        void                *config;
        const char          *name;
+
 #if defined(CONFIG_MEDIA_CONTROLLER)
-       struct media_pad        pad;
+       struct media_pad        pad[TUNER_NUM_PADS];
 #endif
 };
 
@@ -695,11 +696,12 @@ static int tuner_probe(struct i2c_client *client,
        /* Should be just before return */
 register_client:
 #if defined(CONFIG_MEDIA_CONTROLLER)
-       t->pad.flags = MEDIA_PAD_FL_SOURCE;
+       t->pad[TUNER_PAD_RF_INPUT].flags = MEDIA_PAD_FL_SINK;
+       t->pad[TUNER_PAD_IF_OUTPUT].flags = MEDIA_PAD_FL_SOURCE;
        t->sd.entity.type = MEDIA_ENT_T_V4L2_SUBDEV_TUNER;
        t->sd.entity.name = t->name;
 
-       ret = media_entity_init(&t->sd.entity, 1, &t->pad);
+       ret = media_entity_init(&t->sd.entity, TUNER_NUM_PADS, &t->pad[0]);
        if (ret < 0) {
                tuner_err("failed to initialize media entity!\n");
                kfree(t);
index 486b6a54363b1708c7349914dff127dcd3f86565..e5321fda548935e1bab99fbce565dc7a018d52e9 100644 (file)
 
 #include <linux/videodev2.h>
 
+/* Tuner PADs */
+/* FIXME: is this the right place for it? */
+enum tuner_pad_index {
+       TUNER_PAD_RF_INPUT,
+       TUNER_PAD_IF_OUTPUT,
+       TUNER_NUM_PADS
+};
+
 #define ADDR_UNSET (255)
 
 #define TUNER_TEMIC_PAL                        0        /* 4002 FH5 (3X 7756, 9483) */