[PATCH v3 0/7] staging: Destage VCHIQ interface and MMAL

Jai Luthra posted 7 patches 1 month, 2 weeks ago
MAINTAINERS                                                                                                 |    2 +
drivers/platform/Kconfig                                                                                    |    2 +
drivers/platform/Makefile                                                                                   |    1 +
drivers/platform/raspberrypi/Kconfig                                                                        |   52 ++
drivers/platform/raspberrypi/Makefile                                                                       |   15 +
drivers/{staging/vc04_services/interface => platform/raspberrypi/vchiq-interface}/TESTING                   |    0
drivers/platform/raspberrypi/vchiq-interface/TODO                                                           |    4 +
drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_arm.c     |   20 +-
drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_bus.c     |    4 +-
drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_core.c    |    4 +-
drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_debugfs.c |    6 +-
drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_dev.c     |    7 +-
drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_ioctl.h   |    3 +-
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/Kconfig                                  |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/Makefile                                 |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-common.h                            |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-encodings.h                         |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg-common.h                        |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg-format.h                        |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg-port.h                          |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg.h                               |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-parameters.h                        |    0
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-vchiq.c                             |    5 +-
drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-vchiq.h                             |    0
drivers/staging/vc04_services/Kconfig                                                                       |   49 --
drivers/staging/vc04_services/Makefile                                                                      |   14 -
drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c                                                 |    5 +-
drivers/staging/vc04_services/bcm2835-audio/bcm2835.c                                                       |    3 +-
drivers/staging/vc04_services/bcm2835-audio/bcm2835.h                                                       |    3 +-
drivers/staging/vc04_services/bcm2835-camera/Kconfig                                                        |   13 -
drivers/staging/vc04_services/bcm2835-camera/Makefile                                                       |    6 -
drivers/staging/vc04_services/bcm2835-camera/TODO                                                           |   17 -
drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c                                               | 2011 ---------------------------------------------------------------
drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h                                               |  142 -----
drivers/staging/vc04_services/bcm2835-camera/controls.c                                                     | 1399 --------------------------------------------
drivers/staging/vc04_services/interface/TODO                                                                |   28 -
{drivers/staging/vc04_services/include => include}/linux/raspberrypi/vchiq.h                                |    0
{drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_arm.h                |    0
{drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_bus.h                |    0
{drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_cfg.h                |    0
{drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_core.h               |   58 +-
{drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_debugfs.h            |    0
42 files changed, 163 insertions(+), 3710 deletions(-)
[PATCH v3 0/7] staging: Destage VCHIQ interface and MMAL
Posted by Jai Luthra 1 month, 2 weeks ago
Hi,

The goal of this series is to begin the destaging and upstreaming
process for various Raspberry Pi peripherals that currently interact
with the firmware using the VCHIQ interface present in the staging tree.

While destaging the interface to drivers/platform/raspberrypi, also move
the VCHIQ memory abstraction layer (MMAL) driver. Secondly, drop the
bcm2835-camera driver, as the bcm2835-unicam driver using V4L2 framework
is the recommended way to capture from CSI sensors on this platform.

The bcm2835-audio driver is left as-is in the staging tree, as I am not
an expert on ALSA. Volunteers are welcome :)

In (a) subsequent series, I will upstream the following components:
- working driver for the OV5647 sensor in raspberry pi camera v1 module
- vc-sm-cma driver
- bcm2835-isp driver

Thanks,
	Jai

Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com>
---
Changes in v3:
- Reorder patches, drop bcm2835-camera first before destaging interface
- Add a new patch to drop usage of bcm2835-camera from vchiq_arm
- Add a new patch improving inline documentation (picked from
  https://lore.kernel.org/linux-staging/20250509221152.13564-2-wahrenst@gmx.net/)
- Update MAINTAINERS file to cover all drivers starting with vchiq-*
  from the first commit, rather than changing it twice
- Replace s/broadcom/raspberrypi in commit title and messages
- Link to v2: https://lore.kernel.org/r/20250907-vchiq-destage-v2-0-6884505dca78@ideasonboard.com

Changes in v2:
- Destage to drivers/platform/raspberrypi instead
- Move BCM_VIDECORE menuconfig definition to the new directory's Kconfig
  along with BCM2835_VCHIQ and VCHIQ_CDEV
- Link to v1: https://lore.kernel.org/r/20250827-vchiq-destage-v1-0-5052a0d81c42@ideasonboard.com

---
Jai Luthra (6):
      staging: vc04_services: Drop bcm2835-camera driver
      staging: vchiq_arm: Remove bcm2835_camera from vchiq
      include: linux: Destage VCHIQ interface headers
      staging: vc04_services: Cleanup VCHIQ TODO entries
      platform/raspberrypi: Destage VCHIQ interface
      platform/raspberrypi: Destage VCHIQ MMAL driver

Phil Elwell (1):
      staging: vchiq_arm: Improve inline documentation

 MAINTAINERS                                                                                                 |    2 +
 drivers/platform/Kconfig                                                                                    |    2 +
 drivers/platform/Makefile                                                                                   |    1 +
 drivers/platform/raspberrypi/Kconfig                                                                        |   52 ++
 drivers/platform/raspberrypi/Makefile                                                                       |   15 +
 drivers/{staging/vc04_services/interface => platform/raspberrypi/vchiq-interface}/TESTING                   |    0
 drivers/platform/raspberrypi/vchiq-interface/TODO                                                           |    4 +
 drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_arm.c     |   20 +-
 drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_bus.c     |    4 +-
 drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_core.c    |    4 +-
 drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_debugfs.c |    6 +-
 drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_dev.c     |    7 +-
 drivers/{staging/vc04_services/interface/vchiq_arm => platform/raspberrypi/vchiq-interface}/vchiq_ioctl.h   |    3 +-
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/Kconfig                                  |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/Makefile                                 |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-common.h                            |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-encodings.h                         |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg-common.h                        |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg-format.h                        |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg-port.h                          |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-msg.h                               |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-parameters.h                        |    0
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-vchiq.c                             |    5 +-
 drivers/{staging/vc04_services => platform/raspberrypi}/vchiq-mmal/mmal-vchiq.h                             |    0
 drivers/staging/vc04_services/Kconfig                                                                       |   49 --
 drivers/staging/vc04_services/Makefile                                                                      |   14 -
 drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c                                                 |    5 +-
 drivers/staging/vc04_services/bcm2835-audio/bcm2835.c                                                       |    3 +-
 drivers/staging/vc04_services/bcm2835-audio/bcm2835.h                                                       |    3 +-
 drivers/staging/vc04_services/bcm2835-camera/Kconfig                                                        |   13 -
 drivers/staging/vc04_services/bcm2835-camera/Makefile                                                       |    6 -
 drivers/staging/vc04_services/bcm2835-camera/TODO                                                           |   17 -
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c                                               | 2011 ---------------------------------------------------------------
 drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h                                               |  142 -----
 drivers/staging/vc04_services/bcm2835-camera/controls.c                                                     | 1399 --------------------------------------------
 drivers/staging/vc04_services/interface/TODO                                                                |   28 -
 {drivers/staging/vc04_services/include => include}/linux/raspberrypi/vchiq.h                                |    0
 {drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_arm.h                |    0
 {drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_bus.h                |    0
 {drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_cfg.h                |    0
 {drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_core.h               |   58 +-
 {drivers/staging/vc04_services/interface/vchiq_arm => include/linux/raspberrypi}/vchiq_debugfs.h            |    0
 42 files changed, 163 insertions(+), 3710 deletions(-)
---
base-commit: dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa
change-id: 20250827-vchiq-destage-39de1e67557d

Best regards,
-- 
Jai Luthra <jai.luthra@ideasonboard.com>
Re: [PATCH v3 0/7] staging: Destage VCHIQ interface and MMAL
Posted by Dan Carpenter 1 month, 2 weeks ago
I did a review of some Smatch warnings.  These aren't published because
they generate too many false positives.  Only number 3 and number 7
are actual issues the rest are style nit-picks.

1. drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c:2728 vchiq_add_service_internal() info: returning a literal zero is cleaner
s/return service;/return NULL;/

2. drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:408 vchiq_shutdown() info: returning a literal zero is cleaner
Delete the "ret" variable.

3. drivers/staging/vc04_services/bcm2835-camera/controls.c:198 ctrl_set_iso() warn: array off by one? 'iso_values[ctrl->val]'
There seems to be a mixup between iso_qmenu[] and iso_values[].  The one
is only used for ARRAY_SIZE() and the other is never checked for
ARRAY_SIZE().

4. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:337 buffer_cb() warn: can 'buf' even be NULL?
Delete the NULL check.

5. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:513 start_streaming() pedantic: propagate return from 'enable_camera' instead of returning '-EINVAL'
-       if (enable_camera(dev) < 0) {
+       ret = enable_camera(dev);
+       if (ret) {
                v4l2_err(&dev->v4l2_dev, "Failed to enable camera\n");
-               return -EINVAL;
+               return ret;
        }
6. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:576 start_streaming() pedantic: propagate return from 'disable_camera' instead of returning '-EINVAL'
Same.

7. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:881 vidioc_querycap() error: uninitialized symbol 'major'.
   drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:881 vidioc_querycap() error: uninitialized symbol 'minor'.
No error checking on vchiq_mmal_version()

8. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:1276 mmal_setup_components() info: returning a literal zero is cleaner
s/return ret;/return 0;/

regards,
dan carpenter
Re: [PATCH v3 0/7] staging: Destage VCHIQ interface and MMAL
Posted by Jai Luthra 1 month, 2 weeks ago
Hi Dan,

Thanks for the review.

Quoting Dan Carpenter (2025-10-29 17:40:32)
> I did a review of some Smatch warnings.  These aren't published because
> they generate too many false positives.  Only number 3 and number 7
> are actual issues the rest are style nit-picks.

3 - 8 are for bcm2835-camera, which is altogether dropped from staging in
PATCH 1/7.

> 
> 1. drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c:2728 vchiq_add_service_internal() info: returning a literal zero is cleaner
> s/return service;/return NULL;/
> 
> 2. drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:408 vchiq_shutdown() info: returning a literal zero is cleaner
> Delete the "ret" variable.
> 
> 3. drivers/staging/vc04_services/bcm2835-camera/controls.c:198 ctrl_set_iso() warn: array off by one? 'iso_values[ctrl->val]'
> There seems to be a mixup between iso_qmenu[] and iso_values[].  The one
> is only used for ARRAY_SIZE() and the other is never checked for
> ARRAY_SIZE().
> 
> 4. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:337 buffer_cb() warn: can 'buf' even be NULL?
> Delete the NULL check.
> 
> 5. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:513 start_streaming() pedantic: propagate return from 'enable_camera' instead of returning '-EINVAL'
> -       if (enable_camera(dev) < 0) {
> +       ret = enable_camera(dev);
> +       if (ret) {
>                 v4l2_err(&dev->v4l2_dev, "Failed to enable camera\n");
> -               return -EINVAL;
> +               return ret;
>         }
> 6. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:576 start_streaming() pedantic: propagate return from 'disable_camera' instead of returning '-EINVAL'
> Same.
> 
> 7. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:881 vidioc_querycap() error: uninitialized symbol 'major'.
>    drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:881 vidioc_querycap() error: uninitialized symbol 'minor'.
> No error checking on vchiq_mmal_version()
> 
> 8. drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c:1276 mmal_setup_components() info: returning a literal zero is cleaner
> s/return ret;/return 0;/
> 
> regards,
> dan carpenter

Thanks,
Jai