[media] v4l2-mc: add an ancillary routine for PCI-based MC
Instead of copyping the same code on all PCI devices that would have a media controller, add a core ancillary routine. Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
8bf77f9e70
commit
7047f2982a
|
@ -15,9 +15,44 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
#include <linux/pci.h>
|
||||||
#include <media/media-entity.h>
|
#include <media/media-entity.h>
|
||||||
#include <media/v4l2-mc.h>
|
#include <media/v4l2-mc.h>
|
||||||
|
|
||||||
|
|
||||||
|
struct media_device *v4l2_mc_pci_media_device_init(struct pci_dev *pci_dev,
|
||||||
|
char *name)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_PCI
|
||||||
|
struct media_device *mdev;
|
||||||
|
|
||||||
|
mdev = kzalloc(sizeof(*mdev), GFP_KERNEL);
|
||||||
|
if (!mdev)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
mdev->dev = &pci_dev->dev;
|
||||||
|
|
||||||
|
if (name)
|
||||||
|
strlcpy(mdev->model, name, sizeof(mdev->model));
|
||||||
|
else
|
||||||
|
strlcpy(mdev->model, pci_name(pci_dev), sizeof(mdev->model));
|
||||||
|
|
||||||
|
sprintf(mdev->bus_info, "PCI:%s", pci_name(pci_dev));
|
||||||
|
|
||||||
|
mdev->hw_revision = pci_dev->subsystem_vendor << 16
|
||||||
|
|| pci_dev->subsystem_device;
|
||||||
|
|
||||||
|
mdev->driver_version = LINUX_VERSION_CODE;
|
||||||
|
|
||||||
|
media_device_init(mdev);
|
||||||
|
|
||||||
|
return mdev;
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(v4l2_mc_pci_media_device_init);
|
||||||
|
|
||||||
int v4l2_mc_create_media_graph(struct media_device *mdev)
|
int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -92,6 +92,10 @@ enum demod_pad_index {
|
||||||
DEMOD_NUM_PADS
|
DEMOD_NUM_PADS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct pci_dev; /* We don't need to include pci.h here */
|
||||||
|
|
||||||
|
#ifdef CONFIG_MEDIA_CONTROLLER
|
||||||
/**
|
/**
|
||||||
* v4l2_mc_create_media_graph() - create Media Controller links at the graph.
|
* v4l2_mc_create_media_graph() - create Media Controller links at the graph.
|
||||||
*
|
*
|
||||||
|
@ -106,11 +110,29 @@ enum demod_pad_index {
|
||||||
* interface centric PC-consumer's hardware, V4L2 subdev centric camera
|
* interface centric PC-consumer's hardware, V4L2 subdev centric camera
|
||||||
* hardware should not use this routine, as it will not build the right graph.
|
* hardware should not use this routine, as it will not build the right graph.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_MEDIA_CONTROLLER
|
|
||||||
int v4l2_mc_create_media_graph(struct media_device *mdev);
|
int v4l2_mc_create_media_graph(struct media_device *mdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* v4l2_mc_pci_media_device_init() - create and initialize a
|
||||||
|
* struct &media_device from a PCI device.
|
||||||
|
*
|
||||||
|
* @pci_dev: pointer to struct pci_dev
|
||||||
|
* @name: media device name. If %NULL, the routine will use the default
|
||||||
|
* name for the pci device, given by pci_name() macro.
|
||||||
|
*/
|
||||||
|
struct media_device *v4l2_mc_pci_media_device_init(struct pci_dev *pci_dev,
|
||||||
|
char *name);
|
||||||
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
static inline int v4l2_mc_create_media_graph(struct media_device *mdev)
|
static inline int v4l2_mc_create_media_graph(struct media_device *mdev)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct media_device *v4l2_mc_pci_media_device_init(struct pci_dev *pci_dev,
|
||||||
|
char *name) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue