*/
#include <linux/module.h>
+#include <linux/pci.h>
#include <media/media-entity.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)
{
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.
*
* interface centric PC-consumer's hardware, V4L2 subdev centric camera
* 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);
+
+/**
+ * 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
static inline int v4l2_mc_create_media_graph(struct media_device *mdev)
{
return 0;
}
+
+struct media_device *v4l2_mc_pci_media_device_init(struct pci_dev *pci_dev,
+ char *name) {
+ return NULL;
+}
+
#endif