[media] add media controller support to videobuf2-dvb

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>
This commit is contained in:
Mauro Carvalho Chehab 2016-02-05 08:35:50 -02:00
parent de39078779
commit 2773b0e9ba
6 changed files with 23 additions and 7 deletions

View File

@ -2301,7 +2301,8 @@ static int dvb_register(struct cx23885_tsport *port)
/* register everything */ /* register everything */
ret = vb2_dvb_register_bus(&port->frontends, THIS_MODULE, port, 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) if (ret)
goto frontend_detach; goto frontend_detach;

View File

@ -1642,7 +1642,8 @@ static int dvb_register(struct cx8802_dev *dev)
/* register everything */ /* register everything */
res = vb2_dvb_register_bus(&dev->frontends, THIS_MODULE, dev, 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) if (res)
goto frontend_detach; goto frontend_detach;
return res; return res;

View File

@ -462,8 +462,8 @@ static int netup_unidvb_dvb_init(struct netup_unidvb_dev *ndev,
} }
if (vb2_dvb_register_bus(&ndev->frontends[num], if (vb2_dvb_register_bus(&ndev->frontends[num],
THIS_MODULE, NULL, THIS_MODULE, NULL,
&ndev->pci_dev->dev, adapter_nr, 1)) { &ndev->pci_dev->dev, NULL, adapter_nr, 1)) {
dev_dbg(&ndev->pci_dev->dev, dev_dbg(&ndev->pci_dev->dev,
"%s(): unable to register DVB bus %d\n", "%s(): unable to register DVB bus %d\n",
__func__, num); __func__, num);

View File

@ -1884,7 +1884,7 @@ static int dvb_init(struct saa7134_dev *dev)
/* register everything else */ /* register everything else */
ret = vb2_dvb_register_bus(&dev->frontends, THIS_MODULE, dev, 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 /* this sequence is necessary to make the tda1004x load its firmware
* and to enter analog mode of hybrid boards * and to enter analog mode of hybrid boards

View File

@ -77,6 +77,7 @@ static int vb2_dvb_register_adapter(struct vb2_dvb_frontends *fe,
struct module *module, struct module *module,
void *adapter_priv, void *adapter_priv,
struct device *device, struct device *device,
struct media_device *mdev,
char *adapter_name, char *adapter_name,
short *adapter_nr, short *adapter_nr,
int mfe_shared) 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.priv = adapter_priv;
fe->adapter.mfe_shared = mfe_shared; fe->adapter.mfe_shared = mfe_shared;
#ifdef CONFIG_MEDIA_CONTROLLER_DVB
if (mdev)
fe->adapter.mdev = mdev;
#endif
return result; return result;
} }
@ -193,6 +197,7 @@ int vb2_dvb_register_bus(struct vb2_dvb_frontends *f,
struct module *module, struct module *module,
void *adapter_priv, void *adapter_priv,
struct device *device, struct device *device,
struct media_device *mdev,
short *adapter_nr, short *adapter_nr,
int mfe_shared) int mfe_shared)
{ {
@ -207,7 +212,7 @@ int vb2_dvb_register_bus(struct vb2_dvb_frontends *f,
} }
/* Bring up the adapter */ /* 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); fe->dvb.name, adapter_nr, mfe_shared);
if (res < 0) { if (res < 0) {
pr_warn("vb2_dvb_register_adapter failed (errno = %d)\n", res); 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); fe->dvb.name, res);
goto err; goto err;
} }
res = dvb_create_media_graph(&f->adapter, false);
if (res < 0)
goto err;
} }
mutex_unlock(&f->lock); mutex_unlock(&f->lock);
return 0; return 0;

View File

@ -8,6 +8,10 @@
#include <dvb_frontend.h> #include <dvb_frontend.h>
#include <media/videobuf2-v4l2.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 * TODO: This header file should be replaced with videobuf2-core.h
* Currently, vb2_thread is not a stuff of videobuf2-core, * 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, struct module *module,
void *adapter_priv, void *adapter_priv,
struct device *device, struct device *device,
struct media_device *mdev,
short *adapter_nr, short *adapter_nr,
int mfe_shared); int mfe_shared);