[media] add media controller support to videobuf2-dvb
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 5 Feb 2016 10:35:50 +0000 (08:35 -0200)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Wed, 10 Feb 2016 09:23:41 +0000 (07:23 -0200)
Allow devices to pass an optional argument to register the DVB
driver at the media controller.

Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/pci/cx23885/cx23885-dvb.c
drivers/media/pci/cx88/cx88-dvb.c
drivers/media/pci/netup_unidvb/netup_unidvb_core.c
drivers/media/pci/saa7134/saa7134-dvb.c
drivers/media/v4l2-core/videobuf2-dvb.c
include/media/videobuf2-dvb.h

index 80319bb..5131c9f 100644 (file)
@@ -2301,7 +2301,8 @@ static int dvb_register(struct cx23885_tsport *port)
 
        /* register everything */
        ret = vb2_dvb_register_bus(&port->frontends, THIS_MODULE, port,
-                                       &dev->pci->dev, adapter_nr, mfe_shared);
+                                  &dev->pci->dev, NULL,
+                                  adapter_nr, mfe_shared);
        if (ret)
                goto frontend_detach;
 
index afb2075..851d2a9 100644 (file)
@@ -1642,7 +1642,8 @@ static int dvb_register(struct cx8802_dev *dev)
 
        /* register everything */
        res = vb2_dvb_register_bus(&dev->frontends, THIS_MODULE, dev,
-               &dev->pci->dev, adapter_nr, mfe_shared);
+                                  &dev->pci->dev, NULL, adapter_nr,
+                                  mfe_shared);
        if (res)
                goto frontend_detach;
        return res;
index c94cecd..2b667b3 100644 (file)
@@ -462,8 +462,8 @@ static int netup_unidvb_dvb_init(struct netup_unidvb_dev *ndev,
        }
 
        if (vb2_dvb_register_bus(&ndev->frontends[num],
-                       THIS_MODULE, NULL,
-                       &ndev->pci_dev->dev, adapter_nr, 1)) {
+                                THIS_MODULE, NULL,
+                                &ndev->pci_dev->dev, NULL, adapter_nr, 1)) {
                dev_dbg(&ndev->pci_dev->dev,
                        "%s(): unable to register DVB bus %d\n",
                        __func__, num);
index 101ba87..ed84f7d 100644 (file)
@@ -1884,7 +1884,7 @@ static int dvb_init(struct saa7134_dev *dev)
 
        /* register everything else */
        ret = vb2_dvb_register_bus(&dev->frontends, THIS_MODULE, dev,
-                                       &dev->pci->dev, adapter_nr, 0);
+                                  &dev->pci->dev, NULL, adapter_nr, 0);
 
        /* this sequence is necessary to make the tda1004x load its firmware
         * and to enter analog mode of hybrid boards
index d092698..9f38b42 100644 (file)
@@ -77,6 +77,7 @@ static int vb2_dvb_register_adapter(struct vb2_dvb_frontends *fe,
                          struct module *module,
                          void *adapter_priv,
                          struct device *device,
+                         struct media_device *mdev,
                          char *adapter_name,
                          short *adapter_nr,
                          int mfe_shared)
@@ -94,7 +95,10 @@ static int vb2_dvb_register_adapter(struct vb2_dvb_frontends *fe,
        }
        fe->adapter.priv = adapter_priv;
        fe->adapter.mfe_shared = mfe_shared;
-
+#ifdef CONFIG_MEDIA_CONTROLLER_DVB
+       if (mdev)
+               fe->adapter.mdev = mdev;
+#endif
        return result;
 }
 
@@ -193,6 +197,7 @@ int vb2_dvb_register_bus(struct vb2_dvb_frontends *f,
                         struct module *module,
                         void *adapter_priv,
                         struct device *device,
+                        struct media_device *mdev,
                         short *adapter_nr,
                         int mfe_shared)
 {
@@ -207,7 +212,7 @@ int vb2_dvb_register_bus(struct vb2_dvb_frontends *f,
        }
 
        /* Bring up the adapter */
-       res = vb2_dvb_register_adapter(f, module, adapter_priv, device,
+       res = vb2_dvb_register_adapter(f, module, adapter_priv, device, mdev,
                fe->dvb.name, adapter_nr, mfe_shared);
        if (res < 0) {
                pr_warn("vb2_dvb_register_adapter failed (errno = %d)\n", res);
@@ -224,7 +229,11 @@ int vb2_dvb_register_bus(struct vb2_dvb_frontends *f,
                                fe->dvb.name, res);
                        goto err;
                }
+               res = dvb_create_media_graph(&f->adapter, false);
+               if (res < 0)
+                       goto err;
        }
+
        mutex_unlock(&f->lock);
        return 0;
 
index 5b64c9e..87b5590 100644 (file)
@@ -8,6 +8,10 @@
 #include <dvb_frontend.h>
 
 #include <media/videobuf2-v4l2.h>
+
+/* We don't actually need to include media-device.h here */
+struct media_device;
+
 /*
  * TODO: This header file should be replaced with videobuf2-core.h
  * Currently, vb2_thread is not a stuff of videobuf2-core,
@@ -50,6 +54,7 @@ int vb2_dvb_register_bus(struct vb2_dvb_frontends *f,
                         struct module *module,
                         void *adapter_priv,
                         struct device *device,
+                        struct media_device *mdev,
                         short *adapter_nr,
                         int mfe_shared);