Re: [PATCH v2 2/5] media: rkisp1: Add features mask to extensible block handlers

Paul Elder
2024-07-05T11:31:45Z

On Thu, Jul 04, 2024 at 06:49:29PM +0300, Laurent Pinchart wrote:
> Future ISP parameter blocks for i.MX8MP-specific features will not
> support on Rockchip platforms as they lack the corresponding hardware.
> Introduce a features mask in the extensible block handlers to indicate
> which device features a block require, and ignore blocks that require
> unavailable features.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>

> ---
> Changes since v1:
>
> - Expand comment
> - Fix feature check test
> ---
> drivers/media/platform/rockchip/rkisp1/rkisp1-params.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> index c56365c7c51f..d3a7c7f55db0 100644
> --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c
> @@ -1845,6 +1845,7 @@ static const struct rkisp1_ext_params_handler {
> size_t size;
> rkisp1_block_handler handler;
> unsigned int group;
> + unsigned int features;
> } rkisp1_ext_params_handlers[] = {
> [RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS] = {
> .size = sizeof(struct rkisp1_ext_params_bls_config),
> @@ -1951,11 +1952,18 @@ static void rkisp1_ext_params_config(struct rkisp1_params *params,
> &cfg->data[block_offset];
> block_offset += block->header.size;
>
> - /* Make sure the block is in the list of groups to configure. */
> + /*
> + * Make sure the block is supported by the platform and in the
> + * list of groups to configure.
> + */
> block_handler = &rkisp1_ext_params_handlers[block->header.type];
> if (!(block_handler->group & block_group_mask))
> continue;
>
> + if ((params->rkisp1->info->features & block_handler->features) !=
> + block_handler->features)
> + continue;
> +
> block_handler->handler(params, block);
>
> if (block->header.enable == RKISP1_EXT_PARAMS_BLOCK_DISABLE)