[PATCH v11 08/19] media: uapi: Add controls for Mali-C55 ISP

Dan Scally dan.scally at ideasonboard.com
Thu Aug 21 04:14:57 PDT 2025


Hi Jacopo

On 05/08/2025 12:27, Jacopo Mondi wrote:
> Hi Dan
> 
> On Mon, Jul 14, 2025 at 04:06:34PM +0100, Daniel Scally wrote:
>> Add definitions and documentation for the custom control that will
>> be needed by the Mali-C55 ISP driver. This will be a read only
>> bitmask of the driver's capabilities, informing userspace of which
>> blocks are fitted and which are absent.
>>
>> Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
>> ---
>> Changes in v11:
>>
>> 	- Reserve 16 controls in line with other drivers
>>
>> Changes in v10:
>>
>> 	- None
>>
>> Changes in v9:
>>
>> 	- New patch
>> ---
>>   .../userspace-api/media/drivers/index.rst          |  1 +
>>   .../userspace-api/media/drivers/mali-c55.rst       | 55 ++++++++++++++++++++++
>>   include/uapi/linux/media/arm/mali-c55-config.h     | 26 ++++++++++
>>   include/uapi/linux/v4l2-controls.h                 |  6 +++
>>   4 files changed, 88 insertions(+)
>>
>> diff --git a/Documentation/userspace-api/media/drivers/index.rst b/Documentation/userspace-api/media/drivers/index.rst
>> index d706cb47b1122b6e145a02ab826eb3ecc7997c2b..02967c9b18d6e90f414ccc1329c09bffee895e68 100644
>> --- a/Documentation/userspace-api/media/drivers/index.rst
>> +++ b/Documentation/userspace-api/media/drivers/index.rst
>> @@ -32,6 +32,7 @@ For more details see the file COPYING in the source distribution of Linux.
>>   	cx2341x-uapi
>>   	dw100
>>   	imx-uapi
>> +	mali-c55
>>   	max2175
>>   	npcm-video
>>   	omap3isp-uapi
>> diff --git a/Documentation/userspace-api/media/drivers/mali-c55.rst b/Documentation/userspace-api/media/drivers/mali-c55.rst
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..e8519da77d737b91a931bbe47920af707eebf110
>> --- /dev/null
>> +++ b/Documentation/userspace-api/media/drivers/mali-c55.rst
>> @@ -0,0 +1,55 @@
>> +.. SPDX-License-Identifier: GPL-2.0-only
>> +
>> +Arm Mali-C55 ISP driver
>> +=======================
>> +
>> +The Arm Mali-C55 ISP driver implements a single driver-specific control:
>> +
>> +``V4L2_CID_MALI_C55_CAPABILITIES``
>> +    Detail the capabilities of the ISP by giving detail about the fitted blocks.
> 
> This doesn't tell what is the control type. Just add "(bitmask)" to the
> control name
> 
> ``V4L2_CID_MALI_C55_CAPABILITIES (bitmask)``

Ack, thanks

> 
>> +
>> +    .. flat-table:: Bitmask meaning definitions
>> +	:header-rows: 1
>> +	:widths: 2 4 8
>> +
>> +	* - Bit
>> +	  - Macro
>> +	  - Meaning
>> +        * - 0
>> +          - MALI_C55_GPS_PONG_FITTED
> 
> Do we want "_FITTED" in the control values ?

I'll drop the suffix, I basically just copied it from the documentation but it should be clear from 
the control name that that's the meaning

> 
>> +          - Pong configuration space is fitted in the ISP
>> +        * - 1
>> +          - MALI_C55_GPS_WDR_FITTED
>> +          - WDR Framestitch, offset and gain is fitted in the ISP
>> +        * - 2
>> +          - MALI_C55_GPS_COMPRESSION_FITTED
>> +          - Temper compression is fitted in the ISP
>> +        * - 3
>> +          - MALI_C55_GPS_TEMPER_FITTED
>> +          - Temper is fitted in the ISP
>> +        * - 4
>> +          - MALI_C55_GPS_SINTER_LITE_FITTED
>> +          - Sinter Lite is fitted in the ISP instead of the full Sinter version
>> +        * - 5
>> +          - MALI_C55_GPS_SINTER_FITTED
>> +          - Sinter is fitted in the ISP
>> +        * - 6
>> +          - MALI_C55_GPS_IRIDIX_LTM_FITTED
>> +          - Iridix local tone mappine is fitted in the ISP
>> +        * - 7
>> +          - MALI_C55_GPS_IRIDIX_GTM_FITTED
>> +          - Iridix global tone mapping is fitted in the ISP
>> +        * - 8
>> +          - MALI_C55_GPS_CNR_FITTED
>> +          - Colour noise reduction is fitted in the ISP
>> +        * - 9
>> +          - MALI_C55_GPS_FRSCALER_FITTED
>> +          - The full resolution pipe scaler is fitted in the ISP
>> +        * - 10
>> +          - MALI_C55_GPS_DS_PIPE_FITTED
>> +          - The downscale pipe is fitted in the ISP
>> +
>> +    The Mali-C55 ISP can be configured in a number of ways to include or exclude
>> +    blocks which may not be necessary. This control provides a way for the
>> +    driver to communicate to userspace which of the blocks are fitted in the
>> +    design.
>> \ No newline at end of file
>> diff --git a/include/uapi/linux/media/arm/mali-c55-config.h b/include/uapi/linux/media/arm/mali-c55-config.h
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..2bd60a0d78786be368c2e51b1a0a63fd2a5f690b
>> --- /dev/null
>> +++ b/include/uapi/linux/media/arm/mali-c55-config.h
>> @@ -0,0 +1,26 @@
>> +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
>> +/*
>> + * ARM Mali-C55 ISP Driver - Userspace API
>> + *
>> + * Copyright (C) 2023 Ideas on Board Oy
>> + */
>> +
>> +#ifndef __UAPI_MALI_C55_CONFIG_H
>> +#define __UAPI_MALI_C55_CONFIG_H
>> +
>> +#include <linux/v4l2-controls.h>
>> +
>> +#define V4L2_CID_MALI_C55_CAPABILITIES		(V4L2_CID_USER_MALI_C55_BASE + 0x0)
>> +#define MALI_C55_GPS_PONG_FITTED		BIT(0)
> 
> afaik you can't use BIT() in uapi headers. Use (1U << 0)

Ack

> 
>> +#define MALI_C55_GPS_WDR_FITTED			BIT(1)
>> +#define MALI_C55_GPS_COMPRESSION_FITTED		BIT(2)
>> +#define MALI_C55_GPS_TEMPER_FITTED		BIT(3)
>> +#define MALI_C55_GPS_SINTER_LITE_FITTED		BIT(4)
>> +#define MALI_C55_GPS_SINTER_FITTED		BIT(5)
>> +#define MALI_C55_GPS_IRIDIX_LTM_FITTED		BIT(6)
>> +#define MALI_C55_GPS_IRIDIX_GTM_FITTED		BIT(7)
>> +#define MALI_C55_GPS_CNR_FITTED			BIT(8)
>> +#define MALI_C55_GPS_FRSCALER_FITTED		BIT(9)
>> +#define MALI_C55_GPS_DS_PIPE_FITTED		BIT(10)
>> +
>> +#endif /* __UAPI_MALI_C55_CONFIG_H */
>> diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
>> index f836512e9debbc65d62a9fe04069b056be42f7b2..9f07d80d7af1dfb347fca6e2c65b25bc2cb86af1 100644
>> --- a/include/uapi/linux/v4l2-controls.h
>> +++ b/include/uapi/linux/v4l2-controls.h
>> @@ -228,6 +228,12 @@ enum v4l2_colorfx {
>>    */
>>   #define V4L2_CID_USER_RKISP1_BASE		(V4L2_CID_USER_BASE + 0x1220)
>>
>> +/*
>> + * The base for the Arm Mali-C55 ISP driver controls.
>> + * We reserve 8 controls for this driver
> 
> Doesn't the commit message says 16 ?

Yes...that was my intention; thanks!

> 
>> + */
>> +#define V4L2_CID_USER_MALI_C55_BASE		(V4L2_CID_USER_BASE + 0x1230)
>> +
>>   /* MPEG-class control IDs */
>>   /* The MPEG controls are applicable to all codec controls
>>    * and the 'MPEG' part of the define is historical */
>>
>> --
>> 2.34.1
>>
>>




More information about the linux-arm-kernel mailing list