diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2024-08-08 22:41:02 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2024-08-14 16:42:57 +0300 |
commit | f1463972738f6849b6ac4454c37ae2785094a700 (patch) | |
tree | bd749d6aa79b8b5d855229a464ca965697cc1083 /drivers/media/platform | |
parent | d2db5694fde8212a8bd4269f1b60ed9a2a3b20cc (diff) | |
download | lwn-f1463972738f6849b6ac4454c37ae2785094a700.tar.gz lwn-f1463972738f6849b6ac4454c37ae2785094a700.zip |
media: rkisp1: Add features mask to extensible block handlers
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.
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Tested-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'drivers/media/platform')
-rw-r--r-- | drivers/media/platform/rockchip/rkisp1/rkisp1-params.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c index 43df8079cf8f..095f0189941e 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-params.c @@ -1856,6 +1856,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), @@ -1962,11 +1963,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.flags & RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE) |