Re: [PATCH v2 10/15] staging: vc04_services: bcm2835-isp: Add a more complex ISP processing component

From: Stefan Wahren
Date: Sun Nov 19 2023 - 07:04:12 EST


Am 18.11.23 um 19:56 schrieb Laurent Pinchart:
Hi Stefan,

On Sat, Nov 18, 2023 at 03:53:41PM +0100, Stefan Wahren wrote:
Am 09.11.23 um 22:03 schrieb Umang Jain:
From: Naushir Patuck <naush@xxxxxxxxxxxxxxx>

Driver for the BCM2835 ISP hardware block. This driver uses the MMAL
component to program the ISP hardware through the VC firmware.

The ISP component can produce two video stream outputs, and Bayer
image statistics. This can't be encompassed in a simple V4L2
M2M device, so create a new device that registers 4 video nodes.
sorry, i don't have much knowledge about V4L2, so someone else should
review this in depth.

But from my PoV, patch 11, 12, 13 and 15 should be squash into this one.
For 11 and 12, I agree. 13 is a bit of a workaround for a missing
feature in V4L2, and while it's acceptable today, having it as a
separate commit may make it easier to revert it in the future when the
V4L2 API will be extended (that may or may not happen, and I wouldn't
count on it happening quickly in any case). I would keep patch 15
separate as it's not part of this driver.

Okay, accepted


Signed-off-by: Naushir Patuck <naush@xxxxxxxxxxxxxxx>
Signed-off-by: Umang Jain <umang.jain@xxxxxxxxxxxxxxxx>
---
MAINTAINERS | 9 +
drivers/staging/vc04_services/Kconfig | 2 +
drivers/staging/vc04_services/Makefile | 1 +
.../staging/vc04_services/bcm2835-isp/Kconfig | 14 +
.../vc04_services/bcm2835-isp/Makefile | 4 +
.../bcm2835-isp/bcm2835-isp-ctrls.h | 72 +
.../bcm2835-isp/bcm2835-isp-fmts.h | 482 +++++
.../bcm2835-isp/bcm2835-v4l2-isp.c | 1712 +++++++++++++++++
.../vc04_services/vchiq-mmal/mmal-encodings.h | 4 +
.../vchiq-mmal/mmal-parameters.h | 165 +-
include/uapi/linux/bcm2835-isp.h | 27 +
11 files changed, 2491 insertions(+), 1 deletion(-)
create mode 100644 drivers/staging/vc04_services/bcm2835-isp/Kconfig
create mode 100644 drivers/staging/vc04_services/bcm2835-isp/Makefile
create mode 100644 drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-ctrls.h
create mode 100644 drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-fmts.h
create mode 100644 drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 0748cc15588c..8670a8d95400 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3976,6 +3976,15 @@ F: Documentation/devicetree/bindings/mips/brcm/
F: arch/mips/bcm47xx/*
F: arch/mips/include/asm/mach-bcm47xx/*

+BROADCOM BCM2835 ISP DRIVER
+M: Raspberry Pi Kernel Maintenance <kernel-list@xxxxxxxxxxxxxxx>
+L: linux-media@xxxxxxxxxxxxxxx
+S: Maintained
+F: Documentation/media/uapi/v4l/pixfmt-meta-bcm2835-isp-stats.rst
+F: Documentation/media/v4l-drivers/bcm2835-isp.rst
+F: drivers/staging/vc04_services/bcm2835-isp
+F: include/uapi/linux/bcm2835-isp.h
+
BROADCOM BCM4908 ETHERNET DRIVER
M: Rafał Miłecki <rafal@xxxxxxxxxx>
R: Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>
diff --git a/drivers/staging/vc04_services/Kconfig b/drivers/staging/vc04_services/Kconfig
index 6c0e77d64376..e71e5a8b820a 100644
--- a/drivers/staging/vc04_services/Kconfig
+++ b/drivers/staging/vc04_services/Kconfig
@@ -44,6 +44,8 @@ source "drivers/staging/vc04_services/bcm2835-audio/Kconfig"

source "drivers/staging/vc04_services/bcm2835-camera/Kconfig"

+source "drivers/staging/vc04_services/bcm2835-isp/Kconfig"
+
source "drivers/staging/vc04_services/vchiq-mmal/Kconfig"

source "drivers/staging/vc04_services/vc-sm-cma/Kconfig"
diff --git a/drivers/staging/vc04_services/Makefile b/drivers/staging/vc04_services/Makefile
index 1f61a263f22d..2cebf92525a0 100644
--- a/drivers/staging/vc04_services/Makefile
+++ b/drivers/staging/vc04_services/Makefile
@@ -16,3 +16,4 @@ obj-$(CONFIG_SND_BCM2835) += bcm2835-audio/
obj-$(CONFIG_VIDEO_BCM2835) += bcm2835-camera/
obj-$(CONFIG_BCM2835_VCHIQ_MMAL) += vchiq-mmal/
obj-$(CONFIG_BCM_VC_SM_CMA) += vc-sm-cma/
+obj-$(CONFIG_VIDEO_ISP_BCM2835) += bcm2835-isp/
diff --git a/drivers/staging/vc04_services/bcm2835-isp/Kconfig b/drivers/staging/vc04_services/bcm2835-isp/Kconfig
new file mode 100644
index 000000000000..6222799ebe16
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-isp/Kconfig
@@ -0,0 +1,14 @@
+config VIDEO_ISP_BCM2835
+ tristate "BCM2835 ISP support"
+ depends on MEDIA_SUPPORT
+ depends on VIDEO_DEV && (ARCH_BCM2835 || COMPILE_TEST)
+ depends on MEDIA_CONTROLLER
+ select BCM2835_VCHIQ_MMAL
+ select VIDEOBUF2_DMA_CONTIG
+ help
+ This is the V4L2 driver for the Broadcom BCM2835 ISP hardware.
I think the description is not helpful for all users. Not everybody
knows what ISP is for. Please describe it more for an end user.

+ This operates over the VCHIQ interface to a service running on
+ VideoCore.
+
+ To compile this driver as a module, choose M here: the module
+ will be called bcm2835-isp.