]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
staging: bcm2835: Break MMAL support out from camera
authorJacopo Mondi <jacopo@jmondi.org>
Tue, 23 Jun 2020 16:41:47 +0000 (18:41 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jun 2020 14:32:29 +0000 (16:32 +0200)
The BCM2835 camera host is currently the only component that uses the
VCHIQ MMAL interface. This will soon change with the upporting of
BCM2835 ISP, which make use of the same interface.

Break VCHIQ MMAL interface support out from camera host directory to
make it possible for the ISP driver to use it as well.

The only modification to the existing mmal code is the introduction of
EXPORT_SYMBOL() for symbols required by bcm2835-camera and the addition
of the module author and licenses.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Link: https://lore.kernel.org/r/20200623164235.29566-2-nsaenzjulienne@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
15 files changed:
drivers/staging/vc04_services/Kconfig
drivers/staging/vc04_services/Makefile
drivers/staging/vc04_services/bcm2835-camera/Kconfig
drivers/staging/vc04_services/bcm2835-camera/Makefile
drivers/staging/vc04_services/vchiq-mmal/Kconfig [new file with mode: 0644]
drivers/staging/vc04_services/vchiq-mmal/Makefile [new file with mode: 0644]
drivers/staging/vc04_services/vchiq-mmal/mmal-common.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-common.h with 100% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-encodings.h with 100% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-msg-common.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-msg-common.h with 100% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-msg-format.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-msg-format.h with 100% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-msg-port.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-msg-port.h with 100% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-msg.h with 100% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-parameters.h with 100% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c with 98% similarity]
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h [moved from drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.h with 100% similarity]

index 6baf9dd57f1f2b0b8a8d1313447b6895b4e1b209..4b886293f19838218b34fa8153ee5b6ba9b2ccf9 100644 (file)
@@ -23,5 +23,7 @@ source "drivers/staging/vc04_services/bcm2835-audio/Kconfig"
 
 source "drivers/staging/vc04_services/bcm2835-camera/Kconfig"
 
+source "drivers/staging/vc04_services/vchiq-mmal/Kconfig"
+
 endif
 
index 54d9e2f31916d35805429b17211d26e294279f72..d37f21d1a219da42350624cfbe00a66cceb4c029 100644 (file)
@@ -10,8 +10,9 @@ vchiq-objs := \
    interface/vchiq_arm/vchiq_util.o \
    interface/vchiq_arm/vchiq_connected.o \
 
-obj-$(CONFIG_SND_BCM2835)      += bcm2835-audio/
-obj-$(CONFIG_VIDEO_BCM2835)    += bcm2835-camera/
+obj-$(CONFIG_SND_BCM2835)              += bcm2835-audio/
+obj-$(CONFIG_VIDEO_BCM2835)            += bcm2835-camera/
+obj-$(CONFIG_BCM2835_VCHIQ_MMAL)       += vchiq-mmal/
 
 ccflags-y += -D__VCCOREVER__=0x04000000
 
index c81baf2c111e8b61fff4e8e0f1b5711adeb4b191..d0653d1ed3c7e6757e6ecefd6dd8e616cab56938 100644 (file)
@@ -4,6 +4,7 @@ config VIDEO_BCM2835
        depends on MEDIA_SUPPORT
        depends on VIDEO_V4L2 && (ARCH_BCM2835 || COMPILE_TEST)
        select BCM2835_VCHIQ
+       select BCM2835_VCHIQ_MMAL
        select VIDEOBUF2_VMALLOC
        select BTREE
        help
index 472f21e1f2a1893eb934326430e00425e51eac05..3a76d6ade428f974a5eadcb44238d3d9401a8dba 100644 (file)
@@ -1,11 +1,11 @@
 # SPDX-License-Identifier: GPL-2.0
 bcm2835-v4l2-$(CONFIG_VIDEO_BCM2835) := \
        bcm2835-camera.o \
-       controls.o \
-       mmal-vchiq.o
+       controls.o
 
 obj-$(CONFIG_VIDEO_BCM2835) += bcm2835-v4l2.o
 
 ccflags-y += \
        -I $(srctree)/$(src)/.. \
+       -I $(srctree)/$(src)/../vchiq-mmal/ \
        -D__VCCOREVER__=0x04000000
diff --git a/drivers/staging/vc04_services/vchiq-mmal/Kconfig b/drivers/staging/vc04_services/vchiq-mmal/Kconfig
new file mode 100644 (file)
index 0000000..500c0d1
--- /dev/null
@@ -0,0 +1,7 @@
+config BCM2835_VCHIQ_MMAL
+       tristate "BCM2835 MMAL VCHIQ service"
+       depends on (ARCH_BCM2835 || COMPILE_TEST)
+       help
+         Enables the MMAL API over VCHIQ interface as used for the
+         majority of the multimedia services on VideoCore.
+         Defaults to Y when the Broadcomd BCM2835 camera host is selected.
diff --git a/drivers/staging/vc04_services/vchiq-mmal/Makefile b/drivers/staging/vc04_services/vchiq-mmal/Makefile
new file mode 100644 (file)
index 0000000..f8164c3
--- /dev/null
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
+bcm2835-mmal-vchiq-objs := mmal-vchiq.o
+
+obj-$(CONFIG_BCM2835_VCHIQ_MMAL) += bcm2835-mmal-vchiq.o
+
+ccflags-y += \
+       -I$(srctree)/$(src)/.. \
+       -D__VCCOREVER__=0x04000000
similarity index 98%
rename from drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c
rename to drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
index de03b90021a80aea988189449eaceccc4080d70e..daf21087f8f993fdd199a48ead800497ba923885 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <linux/errno.h>
 #include <linux/kernel.h>
+#include <linux/module.h>
 #include <linux/mutex.h>
 #include <linux/mm.h>
 #include <linux/slab.h>
@@ -1396,6 +1397,7 @@ release_unlock:
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_port_set_format);
 
 int vchiq_mmal_port_parameter_set(struct vchiq_mmal_instance *instance,
                                  struct vchiq_mmal_port *port,
@@ -1412,6 +1414,7 @@ int vchiq_mmal_port_parameter_set(struct vchiq_mmal_instance *instance,
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_port_parameter_set);
 
 int vchiq_mmal_port_parameter_get(struct vchiq_mmal_instance *instance,
                                  struct vchiq_mmal_port *port,
@@ -1428,6 +1431,7 @@ int vchiq_mmal_port_parameter_get(struct vchiq_mmal_instance *instance,
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_port_parameter_get);
 
 /* enable a port
  *
@@ -1458,6 +1462,7 @@ unlock:
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_port_enable);
 
 int vchiq_mmal_port_disable(struct vchiq_mmal_instance *instance,
                            struct vchiq_mmal_port *port)
@@ -1478,6 +1483,7 @@ int vchiq_mmal_port_disable(struct vchiq_mmal_instance *instance,
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_port_disable);
 
 /* ports will be connected in a tunneled manner so data buffers
  * are not handled by client.
@@ -1565,6 +1571,7 @@ release_unlock:
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_port_connect_tunnel);
 
 int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance,
                             struct vchiq_mmal_port *port,
@@ -1583,6 +1590,7 @@ int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance,
 
        return 0;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_submit_buffer);
 
 int mmal_vchi_buffer_init(struct vchiq_mmal_instance *instance,
                          struct mmal_buffer *buf)
@@ -1595,6 +1603,7 @@ int mmal_vchi_buffer_init(struct vchiq_mmal_instance *instance,
        buf->msg_context = msg_context;
        return 0;
 }
+EXPORT_SYMBOL_GPL(mmal_vchi_buffer_init);
 
 int mmal_vchi_buffer_cleanup(struct mmal_buffer *buf)
 {
@@ -1606,6 +1615,7 @@ int mmal_vchi_buffer_cleanup(struct mmal_buffer *buf)
 
        return 0;
 }
+EXPORT_SYMBOL_GPL(mmal_vchi_buffer_cleanup);
 
 /* Initialise a mmal component and its ports
  *
@@ -1693,6 +1703,7 @@ unlock:
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_component_init);
 
 /*
  * cause a mmal component to be destroyed
@@ -1714,6 +1725,7 @@ int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance,
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_component_finalise);
 
 /*
  * cause a mmal component to be enabled
@@ -1739,6 +1751,7 @@ int vchiq_mmal_component_enable(struct vchiq_mmal_instance *instance,
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_component_enable);
 
 /*
  * cause a mmal component to be enabled
@@ -1764,6 +1777,7 @@ int vchiq_mmal_component_disable(struct vchiq_mmal_instance *instance,
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_component_disable);
 
 int vchiq_mmal_version(struct vchiq_mmal_instance *instance,
                       u32 *major_out, u32 *minor_out)
@@ -1779,6 +1793,7 @@ int vchiq_mmal_version(struct vchiq_mmal_instance *instance,
 
        return ret;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_version);
 
 int vchiq_mmal_finalise(struct vchiq_mmal_instance *instance)
 {
@@ -1809,6 +1824,7 @@ int vchiq_mmal_finalise(struct vchiq_mmal_instance *instance)
 
        return status;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_finalise);
 
 int vchiq_mmal_init(struct vchiq_mmal_instance **out_instance)
 {
@@ -1889,3 +1905,8 @@ err_free:
        kfree(instance);
        return -ENODEV;
 }
+EXPORT_SYMBOL_GPL(vchiq_mmal_init);
+
+MODULE_DESCRIPTION("BCM2835 MMAL VCHIQ interface");
+MODULE_AUTHOR("Dave Stevenson, <dave.stevenson@raspberrypi.org>");
+MODULE_LICENSE("GPL");