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

Stefan Wahren
2023-11-19T12:04:08Z

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@raspberrypi.com>
>>>
>>> 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@raspberrypi.com>
>>> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com>
>>> ---
>>> 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@raspberrypi.com>
>>> +L: linux-media@vger.kernel.org
>>> +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@milecki.pl>
>>> R: Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>
>>> 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.