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

From: Stefan Wahren
Date: Sat Nov 18 2023 - 09:54:35 EST


Hi Umang,

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.


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.

Best regards

+ 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.