Re: [PATCH v2] media: rppx1: bls: read the raw pattern from the PRE2 acquisition module
From: Jacopo Mondi
Date: Tue Aug 18 2026 - 06:05:37 EST
Hi Linmao
On Tue, Aug 18, 2026 at 05:59:29PM +0800, Linmao Li wrote:
> rppx1_bls_swap_regs() gets the Bayer pattern from the acquisition
> module. The PRE1 path uses pre1.acq, but the PRE2 path mistakenly uses
> pre2.bls. The BLS module does not store a Bayer pattern, so PRE2 would
> read zero (RGGB) and map fixed black levels to the wrong colour
> registers.
>
> PRE2 is not started or dispatched yet, so the bug is currently latent.
> Read the pattern from pre2.acq, as the PRE1 path does, so that enabling
> PRE2 does not start out with the wrong register mapping.
>
> Signed-off-by: Linmao Li <lilinmao@xxxxxxxxxx>
> Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>
Thanks
Reviewed-by: Jacopo Mondi <jacopo.mondi@xxxxxxxxxxxxxxxx>
> ---
> Changes since v1 [1]:
> - no code changes;
> - dropped the Fixes: tag, the patch is expected to be collected together
> with the driver for v7.3;
> - picked up Niklas' Reviewed-by;
> - resent after Jacopo offered to collect this one as well [2].
>
> v1 was patch 2/2 of "media: rppx1: parameters block fixes"; its patch
> 1/2 is on the list separately as "[PATCH v2] media: rppx1: describe the
> MAIN_POST white balance gains block".
>
> [1] https://lore.kernel.org/linux-media/20260817104529.3132552-3-lilinmao@xxxxxxxxxx/
> [2] https://lore.kernel.org/linux-media/aoQniglSwAEH3V0D@zed/
>
> drivers/media/platform/dreamchip/rppx1/rppx1_bls.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/dreamchip/rppx1/rppx1_bls.c b/drivers/media/platform/dreamchip/rppx1/rppx1_bls.c
> index 01a61db279bf7..71c5561457d52 100644
> --- a/drivers/media/platform/dreamchip/rppx1/rppx1_bls.c
> +++ b/drivers/media/platform/dreamchip/rppx1/rppx1_bls.c
> @@ -70,7 +70,7 @@ rppx1_bls_swap_regs(struct rpp_module *mod, const u32 input[4], u32 output[4])
>
> /* Swap to pattern used in our path, PRE1 or PRE2. */
> struct rpp_module *acq = mod == &mod->rpp->pre1.bls ?
> - &mod->rpp->pre1.acq : &mod->rpp->pre2.bls;
> + &mod->rpp->pre1.acq : &mod->rpp->pre2.acq;
> enum rpp_raw_pattern pattern = acq->info.acq.raw_pattern;
>
> for (unsigned int i = 0; i < 4; ++i)
> --
> 2.25.1
>
>