Message ID | 20250411130423.2164577-2-stefan.klug@ideasonboard.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
Hi Stefan, Thanks for posting this. On Apr 11, 2025 at 15:04:08 +0200, Stefan Klug wrote: > From: Jai Luthra <me@jailuthra.in> > > Update linux headers. > > Signed-off-by: Jai Luthra <me@jailuthra.in> Ah this seems to have my personal email from the dev branch. Can you pick the latest version of this header from upstream in your v2? https://lore.kernel.org/linux-media/20250225-awb64-v3-1-af29b1201e48@ideasonboard.com/#Z31include:uapi:linux:rkisp1-config.h No functional changes other than doxygen comments. > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> > --- > include/linux/rkisp1-config.h | 72 +++++++++++++++++++++++++++++++++++ > 1 file changed, 72 insertions(+) > [snip] >
Quoting Stefan Klug (2025-04-11 15:04:08) > From: Jai Luthra <me@jailuthra.in> > > Update linux headers. > > Signed-off-by: Jai Luthra <me@jailuthra.in> > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Acked-by: Paul Elder <paul.elder@ideasonboard.com> > --- > include/linux/rkisp1-config.h | 72 +++++++++++++++++++++++++++++++++++ > 1 file changed, 72 insertions(+) > > diff --git a/include/linux/rkisp1-config.h b/include/linux/rkisp1-config.h > index edbc6cb65d1c..656835577c9e 100644 > --- a/include/linux/rkisp1-config.h > +++ b/include/linux/rkisp1-config.h > @@ -169,6 +169,13 @@ > */ > #define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64 > > +/* > + * Wide Dynamic Range > + */ > +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV 32 > +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF (RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV + 1) > +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS 4 > + > /* > * Measurement types > */ > @@ -889,6 +896,52 @@ struct rkisp1_cif_isp_compand_curve_config { > __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS]; > }; > > +/** > + * struct rkisp1_cif_isp_wdr_tone_curve - Tone mapping curve definition for WDR unit. > + * > + * @dY: the dYn increments for horizontal (input) axis of the tone curve. > + * each 3-bit dY value represents an increment of 2**(value+3). > + * dY[0] bits 0:2 is increment dY1, bit 3 unused > + * dY[0] bits 4:6 is increment dY2, bit 7 unused > + * ... > + * dY[0] bits 28:30 is increment dY8, bit 31 unused > + * ... and so on till dY[3] bits 28:30 is increment dY32, bit 31 unused. > + * @ym: the Ym values for the vertical (output) axis of the tone curve. > + * each value is 13 bit. > + * > + * The reset values define a linear curve which has the same effect as bypass: > + * > + * dY[0..3] = 0x44444444, This means that input sample range of 0-4096 is > + * divided in 32 equal increments of 2**(4+3) = 128 units > + * > + * ym[0] = 0x0000, ym[1] = 0x0080, ... ym[31] = 0x0f80, ym[32] = 0x1000 > + * which increases by 0x80 = 128 units > + * > + */ > +struct rkisp1_cif_isp_wdr_tone_curve { > + __u32 dY[RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS]; > + __u16 ym[RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF]; > +}; > + > +struct rkisp1_cif_isp_wdr_iref_config { > + __u8 rgb_factor; > + __u8 use_y9_8; > + __u8 use_rgb7_8; > + __u8 disable_transient; > +}; > + > +struct rkisp1_cif_isp_wdr_config { > + struct rkisp1_cif_isp_wdr_tone_curve tone_curve; > + struct rkisp1_cif_isp_wdr_iref_config iref_config; > + __u16 rgb_offset; > + __u16 luma_offset; > + __u16 dmin_thresh; > + __u8 dmin_strength; > + __u8 use_rgb_colorspace; > + __u8 bypass_chroma_mapping; > + __u8 use_iref; > +}; > + > /*---------- PART2: Measurement Statistics ------------*/ > > /** > @@ -1059,6 +1112,7 @@ struct rkisp1_stat_buffer { > * @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 > + * @RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR: Wide dynamic range > */ > enum rkisp1_ext_params_block_type { > RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS, > @@ -1081,6 +1135,7 @@ enum rkisp1_ext_params_block_type { > RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS, > RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND, > RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS, > + RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR, > }; > > #define RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE (1U << 0) > @@ -1460,6 +1515,23 @@ struct rkisp1_ext_params_compand_curve_config { > struct rkisp1_cif_isp_compand_curve_config config; > } __attribute__((aligned(8))); > > +/** > + * struct rkisp1_ext_params_wdr_config - RkISP1 extensible params > + * Wide dynamic range config > + * > + * RkISP1 extensible parameters WDR block. > + * Identified by :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR` > + * > + * @header: The RkISP1 extensible parameters header, see > + * :c:type:`rkisp1_ext_params_block_header` > + * @config: WDR configuration, see > + * :c:type:`rkisp1_cif_isp_wdr_config` > + */ > +struct rkisp1_ext_params_wdr_config { > + struct rkisp1_ext_params_block_header header; > + struct rkisp1_cif_isp_wdr_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. > -- > 2.43.0 >
Hi Jai, Thank you for the patch. On Fri, Apr 11, 2025 at 03:04:08PM +0200, Stefan Klug wrote: > From: Jai Luthra <me@jailuthra.in> > > Update linux headers. We have a script to update kernel headers, see for instance commit df770d4b0a6d ("include: linux: Update kernel headers to version v6.7"). As WDR support has been merged in the linux-media tree but not in Linus tree yet it may be a bit too early to use it though, so manual modifications are OK. Please mention this in the commit message to explain why the script isn't used, and please make sure you run make headers-install on the linux-media tree and copy the installed rkisp1-config.h header. The commit message should indicate you're copying the upstream header, not just adding WDR support. > Signed-off-by: Jai Luthra <me@jailuthra.in> > Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> > --- > include/linux/rkisp1-config.h | 72 +++++++++++++++++++++++++++++++++++ > 1 file changed, 72 insertions(+) > > diff --git a/include/linux/rkisp1-config.h b/include/linux/rkisp1-config.h > index edbc6cb65d1c..656835577c9e 100644 > --- a/include/linux/rkisp1-config.h > +++ b/include/linux/rkisp1-config.h > @@ -169,6 +169,13 @@ > */ > #define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64 > > +/* > + * Wide Dynamic Range > + */ > +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV 32 > +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF (RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV + 1) > +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS 4 > + > /* > * Measurement types > */ > @@ -889,6 +896,52 @@ struct rkisp1_cif_isp_compand_curve_config { > __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS]; > }; > > +/** > + * struct rkisp1_cif_isp_wdr_tone_curve - Tone mapping curve definition for WDR unit. > + * > + * @dY: the dYn increments for horizontal (input) axis of the tone curve. > + * each 3-bit dY value represents an increment of 2**(value+3). > + * dY[0] bits 0:2 is increment dY1, bit 3 unused > + * dY[0] bits 4:6 is increment dY2, bit 7 unused > + * ... > + * dY[0] bits 28:30 is increment dY8, bit 31 unused > + * ... and so on till dY[3] bits 28:30 is increment dY32, bit 31 unused. > + * @ym: the Ym values for the vertical (output) axis of the tone curve. > + * each value is 13 bit. > + * > + * The reset values define a linear curve which has the same effect as bypass: > + * > + * dY[0..3] = 0x44444444, This means that input sample range of 0-4096 is > + * divided in 32 equal increments of 2**(4+3) = 128 units > + * > + * ym[0] = 0x0000, ym[1] = 0x0080, ... ym[31] = 0x0f80, ym[32] = 0x1000 > + * which increases by 0x80 = 128 units > + * > + */ > +struct rkisp1_cif_isp_wdr_tone_curve { > + __u32 dY[RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS]; > + __u16 ym[RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF]; > +}; > + > +struct rkisp1_cif_isp_wdr_iref_config { > + __u8 rgb_factor; > + __u8 use_y9_8; > + __u8 use_rgb7_8; > + __u8 disable_transient; > +}; > + > +struct rkisp1_cif_isp_wdr_config { > + struct rkisp1_cif_isp_wdr_tone_curve tone_curve; > + struct rkisp1_cif_isp_wdr_iref_config iref_config; > + __u16 rgb_offset; > + __u16 luma_offset; > + __u16 dmin_thresh; > + __u8 dmin_strength; > + __u8 use_rgb_colorspace; > + __u8 bypass_chroma_mapping; > + __u8 use_iref; > +}; > + > /*---------- PART2: Measurement Statistics ------------*/ > > /** > @@ -1059,6 +1112,7 @@ struct rkisp1_stat_buffer { > * @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 > + * @RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR: Wide dynamic range > */ > enum rkisp1_ext_params_block_type { > RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS, > @@ -1081,6 +1135,7 @@ enum rkisp1_ext_params_block_type { > RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS, > RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND, > RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS, > + RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR, > }; > > #define RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE (1U << 0) > @@ -1460,6 +1515,23 @@ struct rkisp1_ext_params_compand_curve_config { > struct rkisp1_cif_isp_compand_curve_config config; > } __attribute__((aligned(8))); > > +/** > + * struct rkisp1_ext_params_wdr_config - RkISP1 extensible params > + * Wide dynamic range config > + * > + * RkISP1 extensible parameters WDR block. > + * Identified by :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR` > + * > + * @header: The RkISP1 extensible parameters header, see > + * :c:type:`rkisp1_ext_params_block_header` > + * @config: WDR configuration, see > + * :c:type:`rkisp1_cif_isp_wdr_config` > + */ > +struct rkisp1_ext_params_wdr_config { > + struct rkisp1_ext_params_block_header header; > + struct rkisp1_cif_isp_wdr_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.
diff --git a/include/linux/rkisp1-config.h b/include/linux/rkisp1-config.h index edbc6cb65d1c..656835577c9e 100644 --- a/include/linux/rkisp1-config.h +++ b/include/linux/rkisp1-config.h @@ -169,6 +169,13 @@ */ #define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64 +/* + * Wide Dynamic Range + */ +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV 32 +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF (RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV + 1) +#define RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS 4 + /* * Measurement types */ @@ -889,6 +896,52 @@ struct rkisp1_cif_isp_compand_curve_config { __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS]; }; +/** + * struct rkisp1_cif_isp_wdr_tone_curve - Tone mapping curve definition for WDR unit. + * + * @dY: the dYn increments for horizontal (input) axis of the tone curve. + * each 3-bit dY value represents an increment of 2**(value+3). + * dY[0] bits 0:2 is increment dY1, bit 3 unused + * dY[0] bits 4:6 is increment dY2, bit 7 unused + * ... + * dY[0] bits 28:30 is increment dY8, bit 31 unused + * ... and so on till dY[3] bits 28:30 is increment dY32, bit 31 unused. + * @ym: the Ym values for the vertical (output) axis of the tone curve. + * each value is 13 bit. + * + * The reset values define a linear curve which has the same effect as bypass: + * + * dY[0..3] = 0x44444444, This means that input sample range of 0-4096 is + * divided in 32 equal increments of 2**(4+3) = 128 units + * + * ym[0] = 0x0000, ym[1] = 0x0080, ... ym[31] = 0x0f80, ym[32] = 0x1000 + * which increases by 0x80 = 128 units + * + */ +struct rkisp1_cif_isp_wdr_tone_curve { + __u32 dY[RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS]; + __u16 ym[RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF]; +}; + +struct rkisp1_cif_isp_wdr_iref_config { + __u8 rgb_factor; + __u8 use_y9_8; + __u8 use_rgb7_8; + __u8 disable_transient; +}; + +struct rkisp1_cif_isp_wdr_config { + struct rkisp1_cif_isp_wdr_tone_curve tone_curve; + struct rkisp1_cif_isp_wdr_iref_config iref_config; + __u16 rgb_offset; + __u16 luma_offset; + __u16 dmin_thresh; + __u8 dmin_strength; + __u8 use_rgb_colorspace; + __u8 bypass_chroma_mapping; + __u8 use_iref; +}; + /*---------- PART2: Measurement Statistics ------------*/ /** @@ -1059,6 +1112,7 @@ struct rkisp1_stat_buffer { * @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 + * @RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR: Wide dynamic range */ enum rkisp1_ext_params_block_type { RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS, @@ -1081,6 +1135,7 @@ enum rkisp1_ext_params_block_type { RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS, RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND, RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS, + RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR, }; #define RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE (1U << 0) @@ -1460,6 +1515,23 @@ struct rkisp1_ext_params_compand_curve_config { struct rkisp1_cif_isp_compand_curve_config config; } __attribute__((aligned(8))); +/** + * struct rkisp1_ext_params_wdr_config - RkISP1 extensible params + * Wide dynamic range config + * + * RkISP1 extensible parameters WDR block. + * Identified by :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR` + * + * @header: The RkISP1 extensible parameters header, see + * :c:type:`rkisp1_ext_params_block_header` + * @config: WDR configuration, see + * :c:type:`rkisp1_cif_isp_wdr_config` + */ +struct rkisp1_ext_params_wdr_config { + struct rkisp1_ext_params_block_header header; + struct rkisp1_cif_isp_wdr_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.