From: Tomasz Figa <tfiga@chromium.org> To: Jacob Chen <jacob-chen@iotwrt.com>, Shunqian Zheng <zhengsq@rock-chips.com> Cc: "open list:ARM/Rockchip SoC..." <linux-rockchip@lists.infradead.org>, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>, "list@263.net:IOMMU DRIVERS <iommu@lists.linux-foundation.org>, Joerg Roedel <joro@8bytes.org>," <linux-arm-kernel@lists.infradead.org>, "Mauro Carvalho Chehab" <mchehab@kernel.org>, "Linux Media Mailing List" <linux-media@vger.kernel.org>, "Sakari Ailus" <sakari.ailus@linux.intel.com>, "Hans Verkuil" <hans.verkuil@cisco.com>, "Laurent Pinchart" <laurent.pinchart@ideasonboard.com>, 钟以崇 <zyc@rock-chips.com>, "Eddie Cai" <eddie.cai.linux@gmail.com>, Jeffy <jeffy.chen@rock-chips.com>, devicetree@vger.kernel.org, "Heiko Stübner" <heiko@sntech.de>, "Chen Jacob" <jacob2.chen@rock-chips.com> Subject: Re: [PATCH v6 03/17] media: rkisp1: Add user space ABI definitions Date: Tue, 24 Apr 2018 04:28:49 +0000 [thread overview] Message-ID: <CAAFQd5APomi1tx0X=agbSQfsX3SLBwqsXyqGhWzS4mdDcS+N9g@mail.gmail.com> (raw) In-Reply-To: <20180308094807.9443-4-jacob-chen@iotwrt.com> On Thu, Mar 8, 2018 at 6:48 PM Jacob Chen <jacob-chen@iotwrt.com> wrote: [snip] > +/** > + * struct cifisp_lsc_config - Configuration used by Lens shading correction > + * > + * refer to REF_01 for details > + */ > +struct cifisp_lsc_config { > + __u32 r_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + __u32 gr_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + __u32 gb_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + __u32 b_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + > + __u32 x_grad_tbl[CIFISP_LSC_GRAD_TBL_SIZE]; > + __u32 y_grad_tbl[CIFISP_LSC_GRAD_TBL_SIZE]; > + > + __u32 x_size_tbl[CIFISP_LSC_SIZE_TBL_SIZE]; > + __u32 y_size_tbl[CIFISP_LSC_SIZE_TBL_SIZE]; Looking at the code, we only need 12 bits of each, so perhaps it could make sense to make those __u16? Also, the natural layout for these seems to be two-dimensional, i.e. [CIFISP_LSC_NUM_SECTORS][CIFISP_LSC_NUM_SECTORS]. I think it wouldn't be a problem to define it this way for UAPI too. > + __u16 config_width; > + __u16 config_height; These 2 seem unused. Just making sure. If they are part of hardware LSC configuration, then we should keep them. [snip] > +struct cifisp_awb_meas_config { > + /* > + * Note: currently the h and v offsets are mapped to grid offsets > + */ Perhaps should be part of the kerneldoc comment above? Also, I don't seem to understand what this means. > + struct cifisp_window awb_wnd; > + __u32 awb_mode; > + __u8 max_y; > + __u8 min_y; > + __u8 max_csum; > + __u8 min_c; > + __u8 frames; > + __u8 awb_ref_cr; > + __u8 awb_ref_cb; > + __u8 enable_ymax_cmp; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_awb_gain_config - Configuration used by auto white balance gain > + * > + * out_data_x = ( AWB_GEAIN_X * in_data + 128) >> 8 typo: AWB_GAIN? > + */ > +struct cifisp_awb_gain_config { > + __u16 gain_red; > + __u16 gain_green_r; > + __u16 gain_blue; > + __u16 gain_green_b; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_flt_config - Configuration used by ISP filtering > + * > + * @mode: ISP_FILT_MODE register fields (from enum cifisp_flt_mode) > + * @grn_stage1: ISP_FILT_MODE register fields > + * @chr_h_mode: ISP_FILT_MODE register fields > + * @chr_v_mode: ISP_FILT_MODE register fields Missing documentation for remaining fields. > + * > + * refer to REF_01 for details. > + */ > + > +struct cifisp_flt_config { > + __u32 mode; > + __u8 grn_stage1; > + __u8 chr_h_mode; > + __u8 chr_v_mode; Maybe we could move u8 below u32 to optimize the alignment? [snip] > +/** > + * struct cifisp_hst_config - Configuration used by Histogram > + * > + * @mode: histogram mode (from enum cifisp_histogram_mode) > + * @histogram_predivider: process every stepsize pixel, all other pixels are skipped > + * @meas_window: coordinates of the measure window > + * @hist_weight: weighting factor for sub-windows > + */ > +struct cifisp_hst_config { > + __u32 mode; > + __u8 histogram_predivider; > + struct cifisp_window meas_window; Perhaps could swap the two above for better alignment? > + __u8 hist_weight[CIFISP_HISTOGRAM_WEIGHT_GRIDS_SIZE]; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_aec_config - Configuration used by Auto Exposure Control > + * > + * @mode: Exposure measure mode (from enum cifisp_exp_meas_mode) > + * @autostop: stop mode (from enum cifisp_exp_ctrl_autostop) > + * @meas_window: coordinates of the measure window > + */ > +struct cifisp_aec_config { > + __u32 mode; > + __u32 autostop; > + struct cifisp_window meas_window; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_afc_config - Configuration used by Auto Focus Control > + * > + * @num_afm_win: max CIFISP_AFM_MAX_WINDOWS > + * @afm_win: coordinates of the meas window > + * @thres: threshold used for minimizing the influence of noise > + * @var_shift: the number of bits for the shift operation at the end of the calculation chain. > + */ > +struct cifisp_afc_config { > + __u8 num_afm_win; > + struct cifisp_window afm_win[CIFISP_AFM_MAX_WINDOWS]; > + __u32 thres; > + __u32 var_shift; Perhaps could put afm_win[] and then num_afm_win here, for better alignment? Best regards, Tomasz
WARNING: multiple messages have this Message-ID (diff)
From: tfiga@chromium.org (Tomasz Figa) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v6 03/17] media: rkisp1: Add user space ABI definitions Date: Tue, 24 Apr 2018 04:28:49 +0000 [thread overview] Message-ID: <CAAFQd5APomi1tx0X=agbSQfsX3SLBwqsXyqGhWzS4mdDcS+N9g@mail.gmail.com> (raw) In-Reply-To: <20180308094807.9443-4-jacob-chen@iotwrt.com> On Thu, Mar 8, 2018 at 6:48 PM Jacob Chen <jacob-chen@iotwrt.com> wrote: [snip] > +/** > + * struct cifisp_lsc_config - Configuration used by Lens shading correction > + * > + * refer to REF_01 for details > + */ > +struct cifisp_lsc_config { > + __u32 r_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + __u32 gr_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + __u32 gb_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + __u32 b_data_tbl[CIFISP_LSC_DATA_TBL_SIZE]; > + > + __u32 x_grad_tbl[CIFISP_LSC_GRAD_TBL_SIZE]; > + __u32 y_grad_tbl[CIFISP_LSC_GRAD_TBL_SIZE]; > + > + __u32 x_size_tbl[CIFISP_LSC_SIZE_TBL_SIZE]; > + __u32 y_size_tbl[CIFISP_LSC_SIZE_TBL_SIZE]; Looking at the code, we only need 12 bits of each, so perhaps it could make sense to make those __u16? Also, the natural layout for these seems to be two-dimensional, i.e. [CIFISP_LSC_NUM_SECTORS][CIFISP_LSC_NUM_SECTORS]. I think it wouldn't be a problem to define it this way for UAPI too. > + __u16 config_width; > + __u16 config_height; These 2 seem unused. Just making sure. If they are part of hardware LSC configuration, then we should keep them. [snip] > +struct cifisp_awb_meas_config { > + /* > + * Note: currently the h and v offsets are mapped to grid offsets > + */ Perhaps should be part of the kerneldoc comment above? Also, I don't seem to understand what this means. > + struct cifisp_window awb_wnd; > + __u32 awb_mode; > + __u8 max_y; > + __u8 min_y; > + __u8 max_csum; > + __u8 min_c; > + __u8 frames; > + __u8 awb_ref_cr; > + __u8 awb_ref_cb; > + __u8 enable_ymax_cmp; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_awb_gain_config - Configuration used by auto white balance gain > + * > + * out_data_x = ( AWB_GEAIN_X * in_data + 128) >> 8 typo: AWB_GAIN? > + */ > +struct cifisp_awb_gain_config { > + __u16 gain_red; > + __u16 gain_green_r; > + __u16 gain_blue; > + __u16 gain_green_b; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_flt_config - Configuration used by ISP filtering > + * > + * @mode: ISP_FILT_MODE register fields (from enum cifisp_flt_mode) > + * @grn_stage1: ISP_FILT_MODE register fields > + * @chr_h_mode: ISP_FILT_MODE register fields > + * @chr_v_mode: ISP_FILT_MODE register fields Missing documentation for remaining fields. > + * > + * refer to REF_01 for details. > + */ > + > +struct cifisp_flt_config { > + __u32 mode; > + __u8 grn_stage1; > + __u8 chr_h_mode; > + __u8 chr_v_mode; Maybe we could move u8 below u32 to optimize the alignment? [snip] > +/** > + * struct cifisp_hst_config - Configuration used by Histogram > + * > + * @mode: histogram mode (from enum cifisp_histogram_mode) > + * @histogram_predivider: process every stepsize pixel, all other pixels are skipped > + * @meas_window: coordinates of the measure window > + * @hist_weight: weighting factor for sub-windows > + */ > +struct cifisp_hst_config { > + __u32 mode; > + __u8 histogram_predivider; > + struct cifisp_window meas_window; Perhaps could swap the two above for better alignment? > + __u8 hist_weight[CIFISP_HISTOGRAM_WEIGHT_GRIDS_SIZE]; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_aec_config - Configuration used by Auto Exposure Control > + * > + * @mode: Exposure measure mode (from enum cifisp_exp_meas_mode) > + * @autostop: stop mode (from enum cifisp_exp_ctrl_autostop) > + * @meas_window: coordinates of the measure window > + */ > +struct cifisp_aec_config { > + __u32 mode; > + __u32 autostop; > + struct cifisp_window meas_window; > +} __attribute__ ((packed)); > + > +/** > + * struct cifisp_afc_config - Configuration used by Auto Focus Control > + * > + * @num_afm_win: max CIFISP_AFM_MAX_WINDOWS > + * @afm_win: coordinates of the meas window > + * @thres: threshold used for minimizing the influence of noise > + * @var_shift: the number of bits for the shift operation at the end of the calculation chain. > + */ > +struct cifisp_afc_config { > + __u8 num_afm_win; > + struct cifisp_window afm_win[CIFISP_AFM_MAX_WINDOWS]; > + __u32 thres; > + __u32 var_shift; Perhaps could put afm_win[] and then num_afm_win here, for better alignment? Best regards, Tomasz
next prev parent reply other threads:[~2018-04-24 4:29 UTC|newest] Thread overview: 128+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-08 9:47 [PATCH v6 00/17] Rockchip ISP1 Driver Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` [PATCH v6 01/17] media: videodev2.h, v4l2-ioctl: add rkisp1 meta buffer format Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2019-04-26 20:34 ` Nicolas Dufresne 2019-04-26 20:34 ` Nicolas Dufresne 2018-03-08 9:47 ` [PATCH v6 02/17] media: doc: add document for " Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-09 13:37 ` Hans Verkuil 2018-03-09 13:37 ` Hans Verkuil 2018-03-08 9:47 ` [PATCH v6 03/17] media: rkisp1: Add user space ABI definitions Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-09 13:34 ` Hans Verkuil 2018-03-09 13:34 ` Hans Verkuil 2018-04-24 4:28 ` Tomasz Figa [this message] 2018-04-24 4:28 ` Tomasz Figa 2018-03-08 9:47 ` [PATCH v6 04/17] media: rkisp1: add Rockchip MIPI Synopsys DPHY driver Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-05-16 5:20 ` Laurent Pinchart 2018-05-16 5:20 ` Laurent Pinchart 2018-05-16 14:39 ` Jacob Chen 2018-05-16 14:39 ` Jacob Chen 2018-05-16 14:53 ` Jacob Chen 2018-05-16 14:53 ` Jacob Chen 2018-05-16 15:15 ` Tomasz Figa 2018-05-16 15:15 ` Tomasz Figa 2019-03-10 17:49 ` Laurent Pinchart 2019-03-10 17:49 ` Laurent Pinchart 2019-03-11 9:37 ` Tomasz Figa 2019-03-11 9:37 ` Tomasz Figa 2018-03-08 9:47 ` [PATCH v6 05/17] media: rkisp1: add Rockchip ISP1 subdev driver Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-09 13:57 ` Hans Verkuil 2018-03-09 13:57 ` Hans Verkuil 2018-05-03 9:09 ` Baruch Siach 2018-05-03 9:09 ` Baruch Siach 2018-05-07 6:13 ` Tomasz Figa 2018-05-07 6:13 ` Tomasz Figa 2018-05-07 6:13 ` Tomasz Figa 2018-05-07 6:38 ` Baruch Siach 2018-05-07 6:38 ` Baruch Siach 2018-05-07 6:38 ` Baruch Siach 2018-05-07 6:41 ` Tomasz Figa 2018-05-07 6:41 ` Tomasz Figa 2018-05-07 6:41 ` Tomasz Figa 2018-05-24 11:30 ` Baruch Siach 2018-05-24 11:30 ` Baruch Siach 2018-05-24 11:30 ` Baruch Siach 2018-05-25 4:35 ` Tomasz Figa 2018-05-25 4:35 ` Tomasz Figa 2018-05-25 4:35 ` Tomasz Figa 2018-03-08 9:47 ` [PATCH v6 06/17] media: rkisp1: add ISP1 statistics driver Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-09 13:59 ` Hans Verkuil 2018-03-09 13:59 ` Hans Verkuil 2018-03-08 9:47 ` [PATCH v6 07/17] media: rkisp1: add ISP1 params driver Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-09 14:03 ` Hans Verkuil 2018-03-09 14:03 ` Hans Verkuil 2018-03-08 9:47 ` [PATCH v6 08/17] media: rkisp1: add capture device driver Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-09 14:07 ` Hans Verkuil 2018-03-09 14:07 ` Hans Verkuil 2018-04-17 8:44 ` Tomasz Figa 2018-04-17 8:44 ` Tomasz Figa 2018-04-17 8:44 ` Tomasz Figa 2018-03-08 9:47 ` [PATCH v6 09/17] media: rkisp1: add rockchip isp1 core driver Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-08 9:47 ` Jacob Chen 2018-03-11 6:58 ` Baruch Siach 2018-03-11 6:58 ` Baruch Siach 2018-05-16 8:08 ` Tomasz Figa 2018-05-16 8:08 ` Tomasz Figa 2018-05-16 8:08 ` Tomasz Figa 2018-03-08 9:48 ` [PATCH v6 10/17] dt-bindings: Document the Rockchip ISP1 bindings Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` [PATCH v6 11/17] dt-bindings: Document the Rockchip MIPI RX D-PHY bindings Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` [PATCH v6 12/17] ARM: dts: rockchip: add isp node for rk3288 Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` [PATCH v6 13/17] ARM: dts: rockchip: add rx0 mipi-phy " Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` [PATCH v6 14/17] ARM: dts: rockchip: Add dts mipi-dphy TXRX1 node " Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` [PATCH v6 15/17] arm64: dts: rockchip: add isp0 node for rk3399 Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-12 3:49 ` [PATCH v6-1,15/17] " Shunqian Zheng 2018-03-12 3:55 ` Shunqian Zheng 2018-03-08 9:48 ` [PATCH v6 16/17] arm64: dts: rockchip: add rx0 mipi-phy " Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` [PATCH v6 17/17] MAINTAINERS: add entry for Rockchip ISP1 driver Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 9:48 ` Jacob Chen 2018-03-08 10:29 ` [PATCH v6 00/17] Rockchip ISP1 Driver Tomasz Figa 2018-03-08 10:29 ` Tomasz Figa 2018-03-08 10:29 ` Tomasz Figa 2018-03-08 12:02 ` Baruch Siach 2018-03-08 12:02 ` Baruch Siach 2018-03-09 0:53 ` Jacob Chen 2018-03-09 0:53 ` Jacob Chen 2018-03-09 4:09 ` Baruch Siach 2018-03-09 4:09 ` Baruch Siach 2018-03-09 5:05 ` Jacob Chen 2018-03-09 5:05 ` Jacob Chen 2018-03-09 5:54 ` Baruch Siach 2018-03-09 5:54 ` Baruch Siach 2018-03-09 14:12 ` Hans Verkuil 2018-03-09 14:12 ` Hans Verkuil 2018-03-12 3:37 ` [v6-1,15/17] arm64: dts: rockchip: add isp0 node for rk3399 Shunqian Zheng 2018-03-12 3:51 ` Shunqian Zheng 2018-09-03 13:07 ` [PATCH v6 00/17] Rockchip ISP1 Driver Hans Verkuil 2018-09-03 13:07 ` Hans Verkuil 2018-09-03 13:50 ` Tomasz Figa 2018-09-03 13:50 ` Tomasz Figa 2018-09-03 13:50 ` Tomasz Figa 2018-09-03 14:15 ` Heiko Stuebner 2018-09-03 14:15 ` Heiko Stuebner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAAFQd5APomi1tx0X=agbSQfsX3SLBwqsXyqGhWzS4mdDcS+N9g@mail.gmail.com' \ --to=tfiga@chromium.org \ --cc=devicetree@vger.kernel.org \ --cc=eddie.cai.linux@gmail.com \ --cc=hans.verkuil@cisco.com \ --cc=heiko@sntech.de \ --cc=jacob-chen@iotwrt.com \ --cc=jacob2.chen@rock-chips.com \ --cc=jeffy.chen@rock-chips.com \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=mchehab@kernel.org \ --cc=sakari.ailus@linux.intel.com \ --cc=zhengsq@rock-chips.com \ --cc=zyc@rock-chips.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.