From nobody Tue Apr 7 11:34:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB5E41F131A; Fri, 13 Mar 2026 10:50:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399033; cv=none; b=RyKpzhw5VtBHQdZOFtW88qlBpJ3W8+36GXfxl6nL/jzle7XXthB2b3621EequfIwRZpqs/gyTQ1F5eTZ0a/LEpyHdL2eYpeFYnknbJSKsYF+8fx4PRVDXdbOS26MTPBJAUhq/SmxqQzgaZp4ZIlVe74831PC4HM7+N46VjXTp2g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399033; c=relaxed/simple; bh=A27gmqqqTjMmGh17VIJ1fTSY2+1aF1uz7uwgexKRpUI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QJyY8UcTDjZFRl2wMUwr4XmPm/1x5rGalH38pWf03jNDIqV7sUrqsakyOPSw6xRSulnD7VTeT+FO4zL9SX3pT6kZXq2+YYsP/h/pkNnvx/Lf7HItY0KJ0xaimKXGqe4mrQgRmU1hhzcU8GgIvFnWHKyVzZKup7CDx4NQvl5QTy4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=GuLRxbYk; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="GuLRxbYk" Received: from [192.168.224.131] (unknown [91.80.67.247]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 0B88C103D; Fri, 13 Mar 2026 11:49:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773398961; bh=A27gmqqqTjMmGh17VIJ1fTSY2+1aF1uz7uwgexKRpUI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GuLRxbYksfjnPclzoc98k4KClfUXPyFUXBU639a0bD3kdP3R+APxpXyiLQ8dL1KfV WWb5Q9a9VP9sdyqpy+kHU6P4LCHzYJ/ikuFiVDiV0PeVeoSRN2RDYrDbNF3mydwjr0 XCdqP4Obpky8To2B2fwpL++d5bbsSVkcjagtIV6E= From: Jacopo Mondi Date: Fri, 13 Mar 2026 11:49:38 +0100 Subject: [PATCH 1/6] media: mali-c55: Fix wrong comment of ISP block types Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-c55-fixes-v7-0-v1-1-21805b2b516b@ideasonboard.com> References: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> In-Reply-To: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> To: Anthony McGivern , Vincenzo Frascino , Nayden Kanchev , Konstantin Babin , Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1630; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=A27gmqqqTjMmGh17VIJ1fTSY2+1aF1uz7uwgexKRpUI=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps+vxa/5g/kI1qaylZmci1Z8vVgAUEhzzn7nVs u0J5KfPRd6JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPr8QAKCRByNAaPFqFW PO2WD/9DGsq5i7IX6IvkzIWXc60whY4zkws45xH9OTejFc9pPp4FfCFt96csvfxdeZUXDNFrQjP BZaHhYD23YoZU+ZWbvWtb8dp4pangho9ggV7sQyi0kfQO9QWsFBZyI26v09M253Mze3qmg0koq3 dZD2N/IOlJ0vOPQrQ2ptCqlXdj6+NoKPqdb3pSNETcE0jNMtXOKYYqeO1ZZPHP5WCmQwyjrM8R4 0TWhKm+U9W3s89Cl9s86jJFS5pNoE986ScSWvQH3QF+Laz2NUT5HTo46fgGdphd5r+xm1CJQidi R30v5GP/ZAItJk44RrLHU7LPuHMbXrrKu/DCgWXlJbwpADD+qoTFggaALkosIKcA3OEFB+lj9F3 aunNy1/gAp8496MPQWOf+BD711GfN9JjLA3/30cS/HFQcAIqpe6kknNej0CtjpoetZ14m9uSLyt 5qyahyfagKghD1HM2ajtVv5N9JbbUFYu2jGMqErEM3OHFcllP5XumfpueRJkhbK3rH53bl7qQLV DjVIQrAFFSjuEdjrQbsW0QRlD3wEMDvRJnen8/jPtw0Wo94fxFmmpARIB2Mz8jA94YNVp7CihoU B0jw+jhtBNMIlcvY5Up0kC/jmRx0KdIsGZ//CU+D38I1Z0gyX1/DSOx98Z1gv/wg3MjWH/X3ep6 uJacSYKh/8PgWDQ== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B Some bad copy&paste happened in the description of the ISP block types and AWB_CONFIG got mixed up with SHADING_CONFIG. Fix it by assigning to each block the correct type. As only the comment is changed, there is no uABI breakage or regression. Cc: stable@vger.kernel.org Fixes: d5f281f3dd29 ("media: mali-c55: Add Mali-C55 ISP driver") Signed-off-by: Jacopo Mondi Reviewed-by: Daniel Scally --- drivers/media/platform/arm/mali-c55/mali-c55-params.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-params.c b/driver= s/media/platform/arm/mali-c55/mali-c55-params.c index be0e909bcf29..c03a6120ddbf 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-params.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-params.c @@ -43,9 +43,9 @@ * @digital_gain: For header->type =3D=3D MALI_C55_PARAM_BLOCK_DIGITAL_GAIN * @awb_gains: For header->type =3D=3D MALI_C55_PARAM_BLOCK_AWB_GAINS and * header->type =3D MALI_C55_PARAM_BLOCK_AWB_GAINS_AEXP - * @awb_config: For header->type =3D=3D MALI_C55_PARAM_MESH_SHADING_CONFIG - * @shading_config: For header->type =3D=3D MALI_C55_PARAM_MESH_SHADING_SE= LECTION - * @shading_selection: For header->type =3D=3D MALI_C55_PARAM_BLOCK_SENSOR= _OFFS + * @awb_config: For header->type =3D=3D MALI_C55_PARAM_BLOCK_AWB_CONFIG + * @shading_config: For header->type =3D=3D MALI_C55_PARAM_MESH_SHADING_CO= NFIG + * @shading_selection: For header->type =3D=3D MALI_C55_PARAM_MESH_SHADING= _SELECTION * @data: Allows easy initialisation of a union variable with a * pointer into a __u8 array. */ --=20 2.53.0 From nobody Tue Apr 7 11:34:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95F4F34B1AC; Fri, 13 Mar 2026 10:50:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399035; cv=none; b=s/6OnMT448tlj8ATUci56zSZUsv+6YQafE7VvDOici3HUcBg5rnFsp3xKE/Y0J6Vq7pMpyRBGpKZZtllsJmSFsE1Y/sxlS8phoTnyKnyrP0+Sph0GYiHLll8aY4T9a9kBqvn9hrXaZIku7S8p27/J5SJCxQbcmV52hWgQhjHjis= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399035; c=relaxed/simple; bh=Dk8ZDvYfvz5HR2ziHGUIMpy0acO3OxhEfd43yVDbz7U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bYB1PEsPJ4SMlVbKGPMjsC6vWGNiXWrACZMh0bqqNamhG8tuxC+4j1a+apOZXei3oENKpTC9MWJOcJ2E7O0Zsmoxu0RfgeM4h18QS0ND4yhVvb9aoH/LKskGOu2WMmVVxGcW6aVDQYZu4MPnXW2zVrYReiZoIkamRQufTIeYlJ4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=RQglt8+C; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="RQglt8+C" Received: from [192.168.224.131] (unknown [91.80.67.247]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9D8B71356; Fri, 13 Mar 2026 11:49:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773398962; bh=Dk8ZDvYfvz5HR2ziHGUIMpy0acO3OxhEfd43yVDbz7U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RQglt8+CD041MVykHJA34Fx6oThtRVL7TZLNyF4zq14KnKhebIF5LOtLXST1OVH6h MOZUamuASJqkAKueWliSdH45ns8mkvKbvBpQ8wje27UuQxkhD/WVNw6i6zct7UFUER l0Hb9EKX1mZawNdxZyhcT/JhJKKq/MI3LtncJ6DI= From: Jacopo Mondi Date: Fri, 13 Mar 2026 11:49:39 +0100 Subject: [PATCH 2/6] media: mali-c55: Initialize the ISP in enable_streams() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-c55-fixes-v7-0-v1-2-21805b2b516b@ideasonboard.com> References: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> In-Reply-To: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> To: Anthony McGivern , Vincenzo Frascino , Nayden Kanchev , Konstantin Babin , Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=9591; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=Dk8ZDvYfvz5HR2ziHGUIMpy0acO3OxhEfd43yVDbz7U=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps+vxIDHmtaVPJqU+Ou/wJ7QqAeQd3sjfNXqRD iIOtYftGVCJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPr8QAKCRByNAaPFqFW PMKOD/4i6lJqpJNUAgYaoAWYYw4NDCzRMLqt0rp5qNIwr0P0N6Ux+Cl2nNeKeDAM2KVsTEHSJ/M MaaXfyhWP76igIXwQfbhLijovIw0NPAEPKup7nqTqXU5jv0CC9yShn10esI+pQQ/sjLgDfZ88aB T3YU47ofIdWM2qZUevNDNFJATguM6YL5tb0ztuYTVw8nlDPdGa/KjcFirRq9PsZHsprokSoZO3E VIxsJ/z4vfYJXsmarWXM5dQbTLdKeI6wMTit8w7lXAg8Lzv78Vz5WolbTRxdZ2vnDOOOVM8Bh2G CtoQAb1mCvYTQH/AhNm7cSZrDOcICY4ElBGkBuGIsib6zahelyiLbhMr0WBRGO2+mpRsSEzWRjO LybWvukj0NjW9mZh2qME8feLU82cdKr14ZSarWyYOCrlC/GSp00h7okzNcRcnGaDn71iIXAf5JM 5ZvZIYJyrxHHiVraDwjvce0JfZ2ydXIjiLVaNyjKL7Mzan44IgspypWjWdoB3x8VIITB79HWzR/ 4vlyXUGK65HCoQ48hmJUFyleCsFRqZeLj7NtqIU/mvSv0JrFgqKuzNFrOwkzKkuhlzb8dAAREa9 X7Fr+Uj5ROmQn4mw6IYqNNlEDZtDkTvi8oJC0Ckv6Dy26Z2gr6tH2pWuzu2P65jD+stqmzBY1OU b70dg132arz/prg== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B The Mali C55 driver initializes the ISP in two points: 1) At probe time it disables ISP blocks by configuring them in bypass mode 2) At enable_streams() it initializes the crop rectangles and the image processing pipeline using the current image format However, as ISP blocks are configured by userspace, if their configuration is not reset, from the second enable_streams() call onwards the ISP configuration will depend on the previous streaming session configuration. To re-initialize the ISP completely at enable_strems() time consolidate the ISP block bypass configuration and the image processing path configuration in a single function to be called at enabled_streams() time. Cc: stable@vger.kernel.org Fixes: d5f281f3dd29 ("media: mali-c55: Add Mali-C55 ISP driver") Signed-off-by: Jacopo Mondi --- .../media/platform/arm/mali-c55/mali-c55-common.h | 2 + .../media/platform/arm/mali-c55/mali-c55-core.c | 35 ----------- drivers/media/platform/arm/mali-c55/mali-c55-isp.c | 37 ++--------- .../media/platform/arm/mali-c55/mali-c55-params.c | 72 ++++++++++++++++++= ++++ 4 files changed, 79 insertions(+), 67 deletions(-) diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-common.h b/driver= s/media/platform/arm/mali-c55/mali-c55-common.h index 31c1deaca146..13a3e9dc4243 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-common.h +++ b/drivers/media/platform/arm/mali-c55/mali-c55-common.h @@ -306,5 +306,7 @@ bool mali_c55_pipeline_ready(struct mali_c55 *mali_c55); void mali_c55_stats_fill_buffer(struct mali_c55 *mali_c55, enum mali_c55_config_spaces cfg_space); void mali_c55_params_write_config(struct mali_c55 *mali_c55); +void mali_c55_params_init_isp_config(struct mali_c55 *mali_c55, + const struct v4l2_subdev_state *state); =20 #endif /* _MALI_C55_COMMON_H */ diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-core.c b/drivers/= media/platform/arm/mali-c55/mali-c55-core.c index 43b834459ccf..c1a562cd214e 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-core.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-core.c @@ -663,41 +663,6 @@ static int mali_c55_init_context(struct mali_c55 *mali= _c55, mali_c55->base + config_space_addrs[MALI_C55_CONFIG_PING], MALI_C55_CONFIG_SPACE_SIZE); =20 - /* - * Some features of the ISP need to be disabled by default and only - * enabled at the same time as they're configured by a parameters buffer - */ - - /* Bypass the sqrt and square compression and expansion modules */ - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_1, - MALI_C55_REG_BYPASS_1_FE_SQRT, - MALI_C55_REG_BYPASS_1_FE_SQRT); - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_3, - MALI_C55_REG_BYPASS_3_SQUARE_BE, - MALI_C55_REG_BYPASS_3_SQUARE_BE); - - /* Bypass the temper module */ - mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_2, - MALI_C55_REG_BYPASS_2_TEMPER); - - /* Disable the temper module's DMA read/write */ - mali_c55_ctx_write(mali_c55, MALI_C55_REG_TEMPER_DMA_IO, 0x0); - - /* Bypass the colour noise reduction */ - mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_4, - MALI_C55_REG_BYPASS_4_CNR); - - /* Disable the sinter module */ - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_SINTER_CONFIG, - MALI_C55_SINTER_ENABLE_MASK, 0); - - /* Disable the RGB Gamma module for each output */ - mali_c55_ctx_write(mali_c55, MALI_C55_REG_FR_GAMMA_RGB_ENABLE, 0); - mali_c55_ctx_write(mali_c55, MALI_C55_REG_DS_GAMMA_RGB_ENABLE, 0); - - /* Disable the colour correction matrix */ - mali_c55_ctx_write(mali_c55, MALI_C55_REG_CCM_ENABLE, 0); - return 0; } =20 diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-isp.c b/drivers/m= edia/platform/arm/mali-c55/mali-c55-isp.c index 497f25fbdd13..4c0fd1ec741c 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-isp.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-isp.c @@ -112,9 +112,6 @@ static int mali_c55_isp_start(struct mali_c55 *mali_c55, const struct v4l2_subdev_state *state) { struct mali_c55_context *ctx =3D mali_c55_get_active_context(mali_c55); - const struct mali_c55_isp_format_info *cfg; - const struct v4l2_mbus_framefmt *format; - const struct v4l2_rect *crop; u32 val; int ret; =20 @@ -122,35 +119,11 @@ static int mali_c55_isp_start(struct mali_c55 *mali_c= 55, MALI_C55_REG_MCU_CONFIG_WRITE_MASK, MALI_C55_REG_MCU_CONFIG_WRITE_PING); =20 - /* Apply input windowing */ - crop =3D v4l2_subdev_state_get_crop(state, MALI_C55_ISP_PAD_SINK_VIDEO); - format =3D v4l2_subdev_state_get_format(state, - MALI_C55_ISP_PAD_SINK_VIDEO); - cfg =3D mali_c55_isp_get_mbus_config_by_code(format->code); - - mali_c55_write(mali_c55, MALI_C55_REG_HC_START, - MALI_C55_HC_START(crop->left)); - mali_c55_write(mali_c55, MALI_C55_REG_HC_SIZE, - MALI_C55_HC_SIZE(crop->width)); - mali_c55_write(mali_c55, MALI_C55_REG_VC_START_SIZE, - MALI_C55_VC_START(crop->top) | - MALI_C55_VC_SIZE(crop->height)); - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BASE_ADDR, - MALI_C55_REG_ACTIVE_WIDTH_MASK, format->width); - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BASE_ADDR, - MALI_C55_REG_ACTIVE_HEIGHT_MASK, - format->height << 16); - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BAYER_ORDER, - MALI_C55_BAYER_ORDER_MASK, cfg->order); - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_INPUT_WIDTH, - MALI_C55_INPUT_WIDTH_MASK, - MALI_C55_INPUT_WIDTH_20BIT); - - mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_ISP_RAW_BYPASS, - MALI_C55_ISP_RAW_BYPASS_BYPASS_MASK, - cfg->bypass ? MALI_C55_ISP_RAW_BYPASS_BYPASS_MASK : - 0x00); - + /* + * Apply default ISP configuration and the apply configurations from + * the first available parameters buffer. + */ + mali_c55_params_init_isp_config(mali_c55, state); mali_c55_params_write_config(mali_c55); ret =3D mali_c55_config_write(ctx, MALI_C55_CONFIG_PING, true); if (ret) { diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-params.c b/driver= s/media/platform/arm/mali-c55/mali-c55-params.c index c03a6120ddbf..c84a6047a570 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-params.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-params.c @@ -732,6 +732,78 @@ void mali_c55_params_write_config(struct mali_c55 *mal= i_c55) vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE); } =20 +void mali_c55_params_init_isp_config(struct mali_c55 *mali_c55, + const struct v4l2_subdev_state *state) +{ + const struct mali_c55_isp_format_info *cfg; + const struct v4l2_mbus_framefmt *format; + const struct v4l2_rect *crop; + + /* Apply input windowing */ + crop =3D v4l2_subdev_state_get_crop(state, MALI_C55_ISP_PAD_SINK_VIDEO); + format =3D v4l2_subdev_state_get_format(state, + MALI_C55_ISP_PAD_SINK_VIDEO); + cfg =3D mali_c55_isp_get_mbus_config_by_code(format->code); + + mali_c55_write(mali_c55, MALI_C55_REG_HC_START, + MALI_C55_HC_START(crop->left)); + mali_c55_write(mali_c55, MALI_C55_REG_HC_SIZE, + MALI_C55_HC_SIZE(crop->width)); + mali_c55_write(mali_c55, MALI_C55_REG_VC_START_SIZE, + MALI_C55_VC_START(crop->top) | + MALI_C55_VC_SIZE(crop->height)); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BASE_ADDR, + MALI_C55_REG_ACTIVE_WIDTH_MASK, format->width); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BASE_ADDR, + MALI_C55_REG_ACTIVE_HEIGHT_MASK, + format->height << 16); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BAYER_ORDER, + MALI_C55_BAYER_ORDER_MASK, cfg->order); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_INPUT_WIDTH, + MALI_C55_INPUT_WIDTH_MASK, + MALI_C55_INPUT_WIDTH_20BIT); + + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_ISP_RAW_BYPASS, + MALI_C55_ISP_RAW_BYPASS_BYPASS_MASK, + cfg->bypass ? MALI_C55_ISP_RAW_BYPASS_BYPASS_MASK : + 0x00); + + /* + * Some features of the ISP need to be disabled by default and only + * enabled at the same time as they're configured by a parameters buffer + */ + + /* Bypass the sqrt and square compression and expansion modules */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_1, + MALI_C55_REG_BYPASS_1_FE_SQRT, + MALI_C55_REG_BYPASS_1_FE_SQRT); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_3, + MALI_C55_REG_BYPASS_3_SQUARE_BE, + MALI_C55_REG_BYPASS_3_SQUARE_BE); + + /* Bypass the temper module */ + mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_2, + MALI_C55_REG_BYPASS_2_TEMPER); + + /* Disable the temper module's DMA read/write */ + mali_c55_ctx_write(mali_c55, MALI_C55_REG_TEMPER_DMA_IO, 0x0); + + /* Bypass the colour noise reduction */ + mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_4, + MALI_C55_REG_BYPASS_4_CNR); + + /* Disable the sinter module */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_SINTER_CONFIG, + MALI_C55_SINTER_ENABLE_MASK, 0); + + /* Disable the RGB Gamma module for each output */ + mali_c55_ctx_write(mali_c55, MALI_C55_REG_FR_GAMMA_RGB_ENABLE, 0); + mali_c55_ctx_write(mali_c55, MALI_C55_REG_DS_GAMMA_RGB_ENABLE, 0); + + /* Disable the colour correction matrix */ + mali_c55_ctx_write(mali_c55, MALI_C55_REG_CCM_ENABLE, 0); +} + void mali_c55_unregister_params(struct mali_c55 *mali_c55) { struct mali_c55_params *params =3D &mali_c55->params; --=20 2.53.0 From nobody Tue Apr 7 11:34:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E01DB38A716; Fri, 13 Mar 2026 10:50:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399046; cv=none; b=VmHAKFUKWbOQelBc4H2lXUFRhEggbIbdp5qszZ7x9/aUIiEo/UYEq9Yd8jYDYaeF84f6dfsxOhSQJ67VKby9qCQpPuXgBpIyo2FZM8K7cIC/gYSoDLj5M2Sb9hnuXLdDMnCmlv9BjqvilWoL9cWGJuHmgF9b15k71i+0dmvwDvU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399046; c=relaxed/simple; bh=0nP79qxKyt2X+hCH5uOYDoygKJCpsHZxRexF5epaeCY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ox17iuMKMW1edsV3CFLEV+Xg0d6aVzelueY//4MuZarsKcFCGFvj1GI+xQ/woSf9fyFTTy4PgvtYTsjxNnDrDO6kbcLFSeuxDeszBadzliOFxsYgBfIOPHKRF24Wx2g2b3lWnaDHk29A5LV2PESwbyLr7dYp6Jkiyt4TlAm4SNY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=AMqorP+O; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="AMqorP+O" Received: from [192.168.224.131] (unknown [91.80.67.247]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 3F9E11783; Fri, 13 Mar 2026 11:49:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773398964; bh=0nP79qxKyt2X+hCH5uOYDoygKJCpsHZxRexF5epaeCY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AMqorP+OaQ71yQdYT8C3QmP7gVjNtOafX6QaIdiGIbxmHsjge+YmK0QFEfDN5HqUM SODp0H8kVQsj9hsM1sWGc2qwte5gR8YVOPnOPZp89BhwRluVGVk1Q9FkLzOOvJk5ds ALS0D5m6ID8jtDHWX6QkAfQmFg90SLbf9bbZJBYM= From: Jacopo Mondi Date: Fri, 13 Mar 2026 11:49:40 +0100 Subject: [PATCH 3/6] media: mali-c55: Fully reset the ISP configuration Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-c55-fixes-v7-0-v1-3-21805b2b516b@ideasonboard.com> References: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> In-Reply-To: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> To: Anthony McGivern , Vincenzo Frascino , Nayden Kanchev , Konstantin Babin , Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3739; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=0nP79qxKyt2X+hCH5uOYDoygKJCpsHZxRexF5epaeCY=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps+vyaJ/adjW9x9WK2how7t1OqCEeGsehu4Ld0 H3HD6DVTvaJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPr8gAKCRByNAaPFqFW PLTeD/0Z2TINFHg7XS9zjRPbAbknh/K3PWlQzBnOcYgW3X1vnd5f64trU4KoL0fPeYIDMZjuLiN 9RB/2lm9EN6S7YUkaZwzKaiOSytLYbuYhqei850Y6mA+3JQM0Svlpu1hbMo3dt60TkQFSPz2Rrg LuFAazUa4+4wVrT40URdeePxGo6dtrSpK+w05OwWcDS93SVuK1ABZBaG6/U2qRfrtQI6+881Gqo O7K7HvzXjoRzIMWmWQxCQwD6yTqRxefcKQrby/RCW4tL3qezIBCDZndNC87OqWI3OHGA0eKVa5x uAZx4ky2ZBV8qId4yPfgq4Zm9YRZ7alUYQFkbEJzley124Zy/DWdXaDBZvQauq9335w4P0A2+Ko t0TdKHzxBYE6WKBp5bUX6vuC9jykeBUphho8mBLczNQMLqa0l6ilQfl0221N0Oi3pb3jXSrxCXU tuPVur5ja6zhy8KtQTXwkGdCqsOODwcsmkt5YHsmNWc6m/E5aWbZt0xl7F3wUQf//RUVsCNgvHk Z9vh6DY4RKUc8+9Fn2FYon1Au1ZhCaeyR8Rpfuf+vX3eTHceWkTM+kH7JVy02LXFC+LKWfnViu4 nLwrVTee1Fy3UCYuzX+plS/xdH0D0Ewwa9ox2GvWPMyakFFq98jbRtxXjaAH84V1TuRnmG37fHb pZIdN+4eyTuXA4w== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B The Mali C55 driver uses an auto-suspend delay of 2000 milli-seconds. As the delay is quite large, it is certainly possible that two consecutive calls to enable_streams() do not go through a suspend of the peripheral, meaning we cannot rely on POW register values for the ISP configuration. To prevent a streaming session to be initialized with settings from the previous one, reset the full ISP configuration to know state disabling or bypassing all the ISP blocks the driver supports. Cc: stable@vger.kernel.org Fixes: d5f281f3dd29 ("media: mali-c55: Add Mali-C55 ISP driver") Signed-off-by: Jacopo Mondi --- .../media/platform/arm/mali-c55/mali-c55-params.c | 50 ++++++++++++++++++= ++++ 1 file changed, 50 insertions(+) diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-params.c b/driver= s/media/platform/arm/mali-c55/mali-c55-params.c index c84a6047a570..773e5b6a2b7e 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-params.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-params.c @@ -781,6 +781,43 @@ void mali_c55_params_init_isp_config(struct mali_c55 *= mali_c55, MALI_C55_REG_BYPASS_3_SQUARE_BE, MALI_C55_REG_BYPASS_3_SQUARE_BE); =20 + /* Bypass the sensor offset correction (BLS) module */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_3, + MALI_C55_REG_BYPASS_3_SENSOR_OFFSET_PRE_SH, + MALI_C55_REG_BYPASS_3_SENSOR_OFFSET_PRE_SH); + + /* Configure 1x digital gain. */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_DIGITAL_GAIN, + MALI_C55_DIGITAL_GAIN_MASK, 256); + + /* Set all AWB gains to 1x. at both AWB configuration points*/ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS1, + MALI_C55_AWB_GAIN00_MASK, 256); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS1, + MALI_C55_AWB_GAIN01_MASK, + MALI_C55_AWB_GAIN01(256)); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS2, + MALI_C55_AWB_GAIN10_MASK, 256); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS2, + MALI_C55_AWB_GAIN11_MASK, + MALI_C55_AWB_GAIN11(256)); + + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS1_AEXP, + MALI_C55_AWB_GAIN00_MASK, 256); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS1_AEXP, + MALI_C55_AWB_GAIN01_MASK, + MALI_C55_AWB_GAIN01(256)); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS2_AEXP, + MALI_C55_AWB_GAIN10_MASK, 256); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_AWB_GAINS2_AEXP, + MALI_C55_AWB_GAIN11_MASK, + MALI_C55_AWB_GAIN11(256)); + + /* Bypass mesh shading corrections (LSC). */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_MESH_SHADING_CONFIG, + MALI_C55_MESH_SHADING_ENABLE_MASK, + false); + /* Bypass the temper module */ mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_2, MALI_C55_REG_BYPASS_2_TEMPER); @@ -802,6 +839,19 @@ void mali_c55_params_init_isp_config(struct mali_c55 *= mali_c55, =20 /* Disable the colour correction matrix */ mali_c55_ctx_write(mali_c55, MALI_C55_REG_CCM_ENABLE, 0); + + /* Disable AWB stats. */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_METERING_CONFIG, + MALI_C55_AWB_DISABLE_MASK, + MALI_C55_AWB_DISABLE_MASK); + + /* Disable auto-exposure 1024-bin histograms at both tap points. */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_METERING_CONFIG, + MALI_C55_AEXP_HIST_DISABLE_MASK, + MALI_C55_AEXP_HIST_DISABLE); + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_METERING_CONFIG, + MALI_C55_AEXP_IHIST_DISABLE_MASK, + MALI_C55_AEXP_IHIST_DISABLE); } =20 void mali_c55_unregister_params(struct mali_c55 *mali_c55) --=20 2.53.0 From nobody Tue Apr 7 11:34:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 941A439021D; Fri, 13 Mar 2026 10:50:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399048; cv=none; b=BU6/ia9IntFWvHk/8pc46QZoL0zIMVzc2YdS5sADooUTPTaAdPVZ7IGXKqOGolKBE66RnLMyKXV2ZYBMnbENtyv2ATuNzm9j1vVMgvV6kW8vnL7IcVmIHEpvQIIFaLkAJNNJqVe+dc+qdnr3ESTeUH5MFwxyQ7GaPP3SJeiDqLw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399048; c=relaxed/simple; bh=+NKU7t0m2c2xpIVekVO7e1owo4msUruBbbjKKcY701M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fz+5alVeWFKZJIDwylOhZZBBapGqujpjX95Pwc7cKW33akdZ+ZiI7JqdBAtqgztLPakbB/oaLR96AwdkEWYCVs/8vQDRNva/YGpfJ2EyH/GXPxjRWthbvDSr/VY7QbRGfWG2CYSFBxnd3fCm460dfF/7AB+do6JDVA6uFoIVpgw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=VXwA7Ev6; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="VXwA7Ev6" Received: from [192.168.224.131] (unknown [91.80.67.247]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D72A2E70; Fri, 13 Mar 2026 11:49:24 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773398966; bh=+NKU7t0m2c2xpIVekVO7e1owo4msUruBbbjKKcY701M=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VXwA7Ev6EGY5XZYkV2kk76TJiGs6JIWHqzTGe/nMKs5nclbH+AYa5NuebQy7kjNZQ lwM0FgqkCbpyWrFH1Ybg7jdLIc2xZhDjzLWOxiX77KsG2MIPkuuqvxnBf4+zICyvXc usq5nDz8ihpzZO1B6/cf8hgjOzu10PK17BnpwhUw= From: Jacopo Mondi Date: Fri, 13 Mar 2026 11:49:41 +0100 Subject: [PATCH 4/6] media: mali-c55: Fix Iridix bypass macros Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-c55-fixes-v7-0-v1-4-21805b2b516b@ideasonboard.com> References: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> In-Reply-To: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> To: Anthony McGivern , Vincenzo Frascino , Nayden Kanchev , Konstantin Babin , Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1668; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=POjVQBq2yxjp6UpxE7vnIQ1SFmAa86qGgqFH/J9SS5k=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps+vyZKcec8LIB+seOnzjzBRCcyK9pNMGaF+2w AG/vkUV5EeJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPr8gAKCRByNAaPFqFW PGhlEAC5OjgsKLMS2hFthaiXSbhQNuOvPzxtC2/EUiBJFk9ZjNtMTyG7qP7PzXQW6Vq5Kl2+b8s P7rV8dc+rFAZY9iIhaL9hGzTfoye8u+ePE43YLk5owmjM/dWP6G8YjO2urdhb03m2Crg/AFRt8d pjMckmXkmTvQKo1ir09IGNSLvME5U9akaKPcnaOHbwMCA2HaRHWYlf0BX5w6dfSdeD6Y9ABrQgv WjGKx2Ld2cNZ8wzW3ZKrhSZsnrIkrouSXsS1U/Ad2NkuP7461ezaPRLG9LUnhrf+o465CKOGMQR LGyVkUfcDygcg37CDjJjs9GAtAY1m9sBV/7w35mBXdTk2aKPeerYW6vC7VQbiJVX5shmjVlu4WV 4ycLMBdx7bPMPwd5hj+Ej/PdnOectjvuDudSwZxwMGyuU3lB0uw5ZEmIXVX9IIBWIRkVPk71g6f v9s9Eczcw/IG8sONwy5E95SrK9Gxl8pn/DQ3MCqk/qNKvH75tj6N2LKVF6j+WYZMa9nSVISsQlL YV7DRWtza58bL763JIxCuwz4K4R9p5GQ6LcFrssn2nMb4oJIRT8YrcoGfJIxO2xZefUYRIAPfWx YzxLUVcSImYxji/dQfBlMvQU1PG2N1HcNG3IXxO35MWADW9xRnDrsUz+/LxdkH2P5T6H70ggT5Q aJJP3N7erqjBN8g== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Daniel Scally The Mali C55 Iridix block has a digital gain function and tone mapping function, whose enablement is controlled by two different bits in the BYPASS_3 register. Unfortunately, the "Gain" and "Tonemap" bypass bit definitions are the wrong way around. Swap them so that the ISP is now operated with the "Iridix Gain" block enabled and default configured at a x1.0 gain and with the "Iridix Tonemap" disabled, as it was originally intended. Cc: stable@vger.kernel.org Fixes: 8ec187829a4c ("media: mali-c55: Fix Iridix bypass macros") Signed-off-by: Daniel Scally Signed-off-by: Jacopo Mondi Reviewed-by: Barnab=C3=A1s P=C5=91cze --- drivers/media/platform/arm/mali-c55/mali-c55-registers.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-registers.h b/dri= vers/media/platform/arm/mali-c55/mali-c55-registers.h index f5a148add1c8..f098effde7b4 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-registers.h +++ b/drivers/media/platform/arm/mali-c55/mali-c55-registers.h @@ -128,8 +128,8 @@ enum mali_c55_interrupts { #define MALI_C55_REG_BYPASS_3_SENSOR_OFFSET_PRE_SH BIT(1) #define MALI_C55_REG_BYPASS_3_MESH_SHADING BIT(3) #define MALI_C55_REG_BYPASS_3_WHITE_BALANCE BIT(4) -#define MALI_C55_REG_BYPASS_3_IRIDIX BIT(5) -#define MALI_C55_REG_BYPASS_3_IRIDIX_GAIN BIT(6) +#define MALI_C55_REG_BYPASS_3_IRIDIX_GAIN BIT(5) +#define MALI_C55_REG_BYPASS_3_IRIDIX BIT(6) #define MALI_C55_REG_BYPASS_4 0x18ec0 #define MALI_C55_REG_BYPASS_4_DEMOSAIC_RGB BIT(1) #define MALI_C55_REG_BYPASS_4_PF_CORRECTION BIT(3) --=20 2.53.0 From nobody Tue Apr 7 11:34:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AAA73563FB; Fri, 13 Mar 2026 10:50:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399049; cv=none; b=bcfQg8mC/w9yuDh7z1aI3iW3Y0uppxfWcofxCDw4Jw8NXw6WRQPnffuxZgN/ruhXrXcvGDjqLB4f9hgRvxbMArxRoQV+atrm5k1HLIiHJjqC4W30fpJtzMRbEG7b0/WslDHzFakLjdS5aAAsYt0zEr1bjOW7gPXoGYL6oj80Cjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399049; c=relaxed/simple; bh=lrwSQ/eNX8gpc35hv6R8FV7RRXS5hR4Ghlea09Df8+E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=D1ILU4qHidn8Par2r6ER4QI0m+Y9iyiRXTuV1CzpnObICh+RPT95x2dSoi+tarIiXnsol5GeEeTFo/4ZujId4C4AtsPPZGRIl38OrzLj6G+kPG2Ce8089OEPJUb8wmKH8I5jvM9SYV4sG7JaY8ZsRUH2+41vR8m20dR46OK3SMU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=IRihsh1J; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="IRihsh1J" Received: from [192.168.224.131] (unknown [91.80.67.247]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 7E6D6103D; Fri, 13 Mar 2026 11:49:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773398967; bh=lrwSQ/eNX8gpc35hv6R8FV7RRXS5hR4Ghlea09Df8+E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IRihsh1JsLfI3uHhUbwAoRQFH5KQr78paoXALH8cXU3zvA34H4kTWKdm87dWp/QyD tZ8/OHfvMqbwO5SViIGIOHCV/SUTLD44cIgPTJw2m2soHVOkkpLIPvuSxMuy3Jetpn xVBob9Hf1SH6lVsqIC9xZHBdbK6K7+8gruBzmQKE= From: Jacopo Mondi Date: Fri, 13 Mar 2026 11:49:42 +0100 Subject: [PATCH 5/6] media: mali-c55: Bypass the Iridix Tonemap engine Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-c55-fixes-v7-0-v1-5-21805b2b516b@ideasonboard.com> References: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> In-Reply-To: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> To: Anthony McGivern , Vincenzo Frascino , Nayden Kanchev , Konstantin Babin , Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1374; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=lrwSQ/eNX8gpc35hv6R8FV7RRXS5hR4Ghlea09Df8+E=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps+vyN4Z8CJ3oCs8bAicqyiMyvQA1SFVdbVbnP S7V/dl35VGJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPr8gAKCRByNAaPFqFW PHiKD/9tE4ixa5XlICgvdjf/Q4J6zRElmcqbNevENfw76opAjSfLvtZSSTFkZdRDeuAV2op/c4C KxEv9RC9PgW63KZb0NM3ArDFtH/3ZBqLxxlVQVtjDLd5E6yTYwjt7QW9UHqTez7scx4g2+Xi5TC UM1pinWaW/z+5U2bOben0goCvOPLYEb7+fNXokNLaYJkNkodqmWSYlmMMPHXrkNtmuQvYdCT2+6 AFN/OJdlSzRb4mC7+f58vy5orgN/037vmSIosuoWkdMRixnzRjC90M+gHrW9clxm+KzL3BU+c5K uisPg1CYELQAcG3C/qIojDowkNBFfWU0mx1gfQKVp+IwG/qMi+fTkXS6z0gvShdAHRu/nWFMc/m 4unWWXp9eX21xvcTmjShL3ldHtvDUukWht0ZlpL0NdXXpPyh9sVBnoZgDzOxNbW/Lu9h2+9mAaA aL2Q1UbQ14EIx+AOq4GFGPYb2Vruqvs07G7VO7jkCTFzen+VonoLMQYP3q9dKnRVJrSdNsFgnp4 Hk7H08OBd/PS8nRgbjFmQmCjcElxm8rnMcmVajr87E9eRrLt/gepDFUdF7Eak4rCom8zURFNDQM ml90HM2PklSR/dDi8YvVzgTR0bE4B+WuVQlNE26kSnNAUkTyUQ5nFIdR3escW1NwMnB9afbmDnG wj+1VQLT/z9snug== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B The Iridix Tonemap engine, if not bypassed, applies a digital gain in order to compensate under-exposed images. This however breaks the exposure and gain regulation performed on the sensor. If the Iridix Tonemap has to be used, it need to be supported in the ISP uAPI and properly configured by userspace. As the driver doesn't support it at the moment, bypass it by default. Signed-off-by: Jacopo Mondi --- drivers/media/platform/arm/mali-c55/mali-c55-params.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-params.c b/driver= s/media/platform/arm/mali-c55/mali-c55-params.c index 773e5b6a2b7e..b9fc904a3844 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-params.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-params.c @@ -825,6 +825,11 @@ void mali_c55_params_init_isp_config(struct mali_c55 *= mali_c55, /* Disable the temper module's DMA read/write */ mali_c55_ctx_write(mali_c55, MALI_C55_REG_TEMPER_DMA_IO, 0x0); =20 + /* Disable IRIDIX module. */ + mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_3, + MALI_C55_REG_BYPASS_3_IRIDIX, + MALI_C55_REG_BYPASS_3_IRIDIX); + /* Bypass the colour noise reduction */ mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_4, MALI_C55_REG_BYPASS_4_CNR); --=20 2.53.0 From nobody Tue Apr 7 11:34:43 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D1E135A391; Fri, 13 Mar 2026 10:50:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399055; cv=none; b=WFAemMbG1M94S+Gfbvaeut6pCIIXRV3a7kpVBP7+BzKhmhzEpk+qYVCDKSBoG9eGjGkmOmB70Rjf/AReIhsk3kuGZf8dJDvCY4w97XAD9G4HSemP7zlYJbdk4EeIlJ/a7W5JsnatITt75DVN2RlR7oJ2sUWQp6q7DzNMxjA5o+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773399055; c=relaxed/simple; bh=jQ3u4c92YwoGknjkcyUxsR1TvGEIvsxuKIwRbXYv5dk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SwQe6GOlgvbiGp0JY5pPv2fUHb4dZ94Qc9elhhyiQTcoGtp9iorT3J3T/6vFtf3gKnX3ou9CQ1TXO5SjTx5RF4jEml6H+AmM6NJZHv7M/w7CcFHmZlDwOmPVI5R3gY1qOFb7xLcS1nHXnyLuFF+edYLg5Qg5a5Np8ZFdAMRzQBM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=VdkwrTlC; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="VdkwrTlC" Received: from [192.168.224.131] (unknown [91.80.67.247]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 587201356; Fri, 13 Mar 2026 11:49:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773398969; bh=jQ3u4c92YwoGknjkcyUxsR1TvGEIvsxuKIwRbXYv5dk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VdkwrTlC33IAycjMyr4nTpQKwkQibfzTtTApTfsPMdLJ9xEyupdzV58QGvZdcZqUG rcPA/lRmz/2etj9pmDFaHDQkLOpPfOMuznG74RDNaK6mJ9T0GwBu3Xy8MPlWxU/bFR 32G5hpCReBXuocRR6UVnlJhHV0yYOBiDqWX30Od4= From: Jacopo Mondi Date: Fri, 13 Mar 2026 11:49:43 +0100 Subject: [PATCH 6/6] media: mali-c55: Bypass Purple Fringe Correction Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-c55-fixes-v7-0-v1-6-21805b2b516b@ideasonboard.com> References: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> In-Reply-To: <20260313-mali-c55-fixes-v7-0-v1-0-21805b2b516b@ideasonboard.com> To: Anthony McGivern , Vincenzo Frascino , Nayden Kanchev , Konstantin Babin , Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1404; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=jQ3u4c92YwoGknjkcyUxsR1TvGEIvsxuKIwRbXYv5dk=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps+vyfZC+99D3J4dk+sAp1QJRuLr3U1gRZ9crY TN+6YMAstyJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPr8gAKCRByNAaPFqFW PK7eEACS2UmNeiRh1oIf2dBcnFc0i4Ee5Niy3Lfox3KGTH8elFr3Bx4wqXxhYgtIVzyZJrCnPjW 8ltd0LzJfYYWS0fku/uNWUv3YtFU7W1YThXKDQ+ngxHgRu3fNsNclz1KnVkcC8dj9LWq9fD3IYv sH88zOCi/JLfaotOwbJZApf9PFI/44FV1zayBdp9ivDmBJhnmO6Z+P8ilUp1PzDd5kIH8aFqi+m Xg1PD9umfhteaO5h/YuKsJl3IYnBs0TAlwAXvpuD4ff8NxwThVUqBkIHZRXlfd47xVaC30wvbtK OUh6F/6pzsb6cJC7HWBCMZpyaQm1fMmy50jqTA22IMYkO8matQ430rBgqG4e47EUaf2jaLAuFbr 3HTr3EmWw5YhyJ0CdSCEgicoop0ASFU9SQ/8DZt+0KUCyn/mqp3SBCdTMD7dEuiF/BYWg4uGlNi Psu829QeZ5L5gauJhMoZldxLA3yNFWVjA4u9eiZbM9mB5VGqup0fh1ZUFJb/VFVl4Npfp3aYspu jcfgnZuh+a2R03qTfLAK/+DZJfMVIRZu0llavVo55RGwYn24GzuCpx7OaTYFpeIEEPyQLpk7uWe KXWFRivIVrUhtT1kQzC935TiHCW22QrlRiZ9ZUJXc0FLmj8BvwUUANppa5i0Em1Jbe6gd2zNo5Q 2C+IDKO6BqoyH8Q== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B The Purple Fringe Correction module is enable by default with a POR configuration which might not be correct for the lens/sensor combination in use. If the Purple Fringe Correction module has to be used, it needs to be supported in the driver's uAPI and properly configured by userspace. As the driver doesn't support it at the moment, bypass it by default. Signed-off-by: Jacopo Mondi Reviewed-by: Barnab=C3=A1s P=C5=91cze --- drivers/media/platform/arm/mali-c55/mali-c55-params.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-params.c b/driver= s/media/platform/arm/mali-c55/mali-c55-params.c index b9fc904a3844..de0e9d898db7 100644 --- a/drivers/media/platform/arm/mali-c55/mali-c55-params.c +++ b/drivers/media/platform/arm/mali-c55/mali-c55-params.c @@ -830,9 +830,10 @@ void mali_c55_params_init_isp_config(struct mali_c55 *= mali_c55, MALI_C55_REG_BYPASS_3_IRIDIX, MALI_C55_REG_BYPASS_3_IRIDIX); =20 - /* Bypass the colour noise reduction */ + /* Bypass the colour noise reduction and the PF modules */ mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_4, - MALI_C55_REG_BYPASS_4_CNR); + MALI_C55_REG_BYPASS_4_CNR | + MALI_C55_REG_BYPASS_4_PF_CORRECTION); =20 /* Disable the sinter module */ mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_SINTER_CONFIG, --=20 2.53.0