[PATCH v2 08/11] include: rkisp1: Update header for compand parameters
Stefan Klug
stefan.klug at ideasonboard.com
Fri Jul 5 15:36:28 CEST 2024
Hi Paul, hi Laurent,
Thank you for the patch.
On Thu, Jul 04, 2024 at 07:20:32PM +0300, Laurent Pinchart wrote:
> From: Paul Elder <paul.elder at ideasonboard.com>
>
> Update the rkisp1-config.h header with the definitions for the
> companding block, which use the extensible parameters format. The
> changes come from the "[PATCH v2 0/5] media: rkisp1: Add support for the
> companding block" series posted to the linux-media mailing list and
> available at [1].
>
> [1] https://lore.kernel.org/all/20240704154932.6686-1-laurent.pinchart@ideasonboard.com/
>
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Stefan Klug <stefan.klug at ideasonboard.com>
Cheers,
Stefan
> ---
> include/linux/rkisp1-config.h | 89 ++++++++++++++++++++++++++++++++++-
> 1 file changed, 88 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/rkisp1-config.h b/include/linux/rkisp1-config.h
> index 2fe735943d02..848c7f72bc43 100644
> --- a/include/linux/rkisp1-config.h
> +++ b/include/linux/rkisp1-config.h
> @@ -164,6 +164,11 @@
> #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
> #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
>
> +/*
> + * Compand
> + */
> +#define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64
> +
> /*
> * Measurement types
> */
> @@ -851,6 +856,39 @@ struct rkisp1_params_cfg {
> struct rkisp1_cif_isp_isp_other_cfg others;
> };
>
> +/**
> + * struct rkisp1_cif_isp_compand_bls_config - Rockchip ISP1 Companding parameters (BLS)
> + * @r: Fixed subtraction value for Bayer pattern R
> + * @gr: Fixed subtraction value for Bayer pattern Gr
> + * @gb: Fixed subtraction value for Bayer pattern Gb
> + * @b: Fixed subtraction value for Bayer pattern B
> + *
> + * The values will be subtracted from the sensor values. Note that unlike the
> + * dedicated BLS block, the BLS values in the compander are 20-bit unsigned.
> + */
> +struct rkisp1_cif_isp_compand_bls_config {
> + __u32 r;
> + __u32 gr;
> + __u32 gb;
> + __u32 b;
> +};
> +
> +/**
> + * struct rkisp1_cif_isp_compand_curve_config - Rockchip ISP1 Companding
> + * parameters (expand and compression curves)
> + * @px: Compand curve x-values. Each value stores the distance from the
> + * previous x-value, expressed as log2 of the distance on 5 bits.
> + * @x: Compand curve x-values. The functionality of these parameters are
> + * unknown due to do a lack of hardware documentation, but these are left
> + * here for future compatibility purposes.
> + * @y: Compand curve y-values
> + */
> +struct rkisp1_cif_isp_compand_curve_config {
> + __u8 px[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
> + __u32 x[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
> + __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
> +};
> +
> /*---------- PART2: Measurement Statistics ------------*/
>
> /**
> @@ -1018,6 +1056,9 @@ struct rkisp1_stat_buffer {
> * @RKISP1_EXT_PARAMS_BLOCK_TYPE_HST_MEAS: Histogram statistics
> * @RKISP1_EXT_PARAMS_BLOCK_TYPE_AEC_MEAS: Auto exposure statistics
> * @RKISP1_EXT_PARAMS_BLOCK_TYPE_AFC_MEAS: Auto-focus statistics
> + * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS: BLS in the compand block
> + * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND: Companding expand curve
> + * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS: Companding compress curve
> */
> enum rkisp1_ext_params_block_type {
> RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS,
> @@ -1037,6 +1078,9 @@ enum rkisp1_ext_params_block_type {
> RKISP1_EXT_PARAMS_BLOCK_TYPE_HST_MEAS,
> RKISP1_EXT_PARAMS_BLOCK_TYPE_AEC_MEAS,
> RKISP1_EXT_PARAMS_BLOCK_TYPE_AFC_MEAS,
> + RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS,
> + RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND,
> + RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS,
> };
>
> /**
> @@ -1384,6 +1428,46 @@ struct rkisp1_ext_params_afc_config {
> struct rkisp1_cif_isp_afc_config config;
> } __attribute__((aligned(8)));
>
> +/**
> + * struct rkisp1_ext_params_compand_bls_config - RkISP1 extensible params
> + * Compand BLS config
> + *
> + * RkISP1 extensible parameters Companding configuration block (black level
> + * subtraction). Identified by :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS`.
> + *
> + * @header: The RkISP1 extensible parameters header, see
> + * :c:type:`rkisp1_ext_params_block_header`
> + * @config: Companding BLS configuration, see
> + * :c:type:`rkisp1_cif_isp_compand_bls_config`
> + */
> +struct rkisp1_ext_params_compand_bls_config {
> + struct rkisp1_ext_params_block_header header;
> + struct rkisp1_cif_isp_compand_bls_config config;
> +} __attribute__((aligned(8)));
> +
> +/**
> + * struct rkisp1_ext_params_compand_curve_config - RkISP1 extensible params
> + * Compand curve config
> + *
> + * RkISP1 extensible parameters Companding configuration block (expand and
> + * compression curves). Identified by
> + * :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND`or
> + * :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS`.
> + *
> + * @header: The RkISP1 extensible parameters header, see
> + * :c:type:`rkisp1_ext_params_block_header`
> + * @config: Companding curve configuration, see
> + * :c:type:`rkisp1_cif_isp_compand_curve_config`
> + */
> +struct rkisp1_ext_params_compand_curve_config {
> + struct rkisp1_ext_params_block_header header;
> + struct rkisp1_cif_isp_compand_curve_config config;
> +} __attribute__((aligned(8)));
> +
> +/*
> + * The rkisp1_ext_params_compand_curve_config structure is counted twice as it
> + * is used for both the COMPAND_EXPAND and COMPAND_COMPRESS block types.
> + */
> #define RKISP1_EXT_PARAMS_MAX_SIZE \
> (sizeof(struct rkisp1_ext_params_bls_config) +\
> sizeof(struct rkisp1_ext_params_dpcc_config) +\
> @@ -1401,7 +1485,10 @@ struct rkisp1_ext_params_afc_config {
> sizeof(struct rkisp1_ext_params_awb_meas_config) +\
> sizeof(struct rkisp1_ext_params_hst_config) +\
> sizeof(struct rkisp1_ext_params_aec_config) +\
> - sizeof(struct rkisp1_ext_params_afc_config))
> + sizeof(struct rkisp1_ext_params_afc_config) +\
> + sizeof(struct rkisp1_ext_params_compand_bls_config) +\
> + sizeof(struct rkisp1_ext_params_compand_curve_config) +\
> + sizeof(struct rkisp1_ext_params_compand_curve_config))
>
> /**
> * enum rksip1_ext_param_buffer_version - RkISP1 extensible parameters version
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list