Message ID | 20240704162035.15074-9-laurent.pinchart@ideasonboard.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
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@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@ideasonboard.com> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Stefan Klug <stefan.klug@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 >
Hi Laurent, Paul On 04/07/2024 17:20, Laurent Pinchart wrote: > From: Paul Elder <paul.elder@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@ideasonboard.com> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- Looks good to me: Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com> > 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
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