RE: [PATCH v4 04/12] intel-ipu3: Add user space ABI definitions
Hi Sakari, > -Original Message- > From: sakari.ai...@linux.intel.com [mailto:sakari.ai...@linux.intel.com] > Sent: Tuesday, November 21, 2017 9:22 AM > To: Mani, Rajmohan <rajmohan.m...@intel.com> > Cc: Sakari Ailus <sakari.ai...@iki.fi>; Zhi, Yong <yong@intel.com>; linux- > me...@vger.kernel.org; Zheng, Jian Xu <jian.xu.zh...@intel.com>; Toivonen, > Tuukka <tuukka.toivo...@intel.com>; Hu, Jerry W <jerry.w...@intel.com> > Subject: Re: [PATCH v4 04/12] intel-ipu3: Add user space ABI definitions > > Hi Rajmohan, > > My apologies for the late reply. > > On Sat, Nov 11, 2017 at 04:07:22AM +, Mani, Rajmohan wrote: > > Hi Sakari, > > > > > -Original Message- > > > From: Sakari Ailus [mailto:sakari.ai...@iki.fi] > > > Sent: Friday, October 20, 2017 2:30 AM > > > To: Zhi, Yong <yong@intel.com> > > > Cc: linux-media@vger.kernel.org; sakari.ai...@linux.intel.com; > > > Zheng, Jian Xu <jian.xu.zh...@intel.com>; Mani, Rajmohan > > > <rajmohan.m...@intel.com>; Toivonen, Tuukka > > > <tuukka.toivo...@intel.com>; Hu, Jerry W <jerry.w...@intel.com> > > > Subject: Re: [PATCH v4 04/12] intel-ipu3: Add user space ABI > > > definitions > > > > > > Hi Yong, > > > > > > On Tue, Oct 17, 2017 at 10:54:49PM -0500, Yong Zhi wrote: > > ... > > > > > +struct ipu3_uapi_params { > > > > + __u32 fourcc; /* V4L2_PIX_FMT_IPU3_PARAMS */ > > > > + __u32 version; /* Must be 0x100 */ > > > > > > These were called padding1 and padding2 in the previous version. > > > What happened? > > > > > > I'd just call them reserved, and maybe also make the use field the > > > first member of the struct. > > > > > > > These fields were repurposed after v3 of this patch series. Please see the > > user > space code that uses these fields. > > https://chromium.googlesource.com/chromiumos/platform/arc- > camera/+/mas > > ter/hal/intel/psl/ipu3/workers/IPU3AicToFwEncoder.cpp > > They were fourcc and version in the beginning, and then replaced by > padding1 and padding 2. Is there a particular reason for changing them back? > We looked into this further to see that we have no compelling reasons to use these variables. I will revert these names back to padding1 and padding2, along with the required user space code changes.
Re: [PATCH v4 04/12] intel-ipu3: Add user space ABI definitions
Hi Rajmohan, My apologies for the late reply. On Sat, Nov 11, 2017 at 04:07:22AM +, Mani, Rajmohan wrote: > Hi Sakari, > > > -Original Message- > > From: Sakari Ailus [mailto:sakari.ai...@iki.fi] > > Sent: Friday, October 20, 2017 2:30 AM > > To: Zhi, Yong <yong@intel.com> > > Cc: linux-media@vger.kernel.org; sakari.ai...@linux.intel.com; Zheng, Jian > > Xu > > <jian.xu.zh...@intel.com>; Mani, Rajmohan <rajmohan.m...@intel.com>; > > Toivonen, Tuukka <tuukka.toivo...@intel.com>; Hu, Jerry W > > <jerry.w...@intel.com> > > Subject: Re: [PATCH v4 04/12] intel-ipu3: Add user space ABI definitions > > > > Hi Yong, > > > > On Tue, Oct 17, 2017 at 10:54:49PM -0500, Yong Zhi wrote: ... > > > +struct ipu3_uapi_params { > > > + __u32 fourcc; /* V4L2_PIX_FMT_IPU3_PARAMS */ > > > + __u32 version; /* Must be 0x100 */ > > > > These were called padding1 and padding2 in the previous version. What > > happened? > > > > I'd just call them reserved, and maybe also make the use field the first > > member of the struct. > > > > These fields were repurposed after v3 of this patch series. Please see the > user space code that uses these fields. > https://chromium.googlesource.com/chromiumos/platform/arc-camera/+/master/hal/intel/psl/ipu3/workers/IPU3AicToFwEncoder.cpp They were fourcc and version in the beginning, and then replaced by padding1 and padding 2. Is there a particular reason for changing them back? -- Sakari Ailus sakari.ai...@linux.intel.com
RE: [PATCH v4 04/12] intel-ipu3: Add user space ABI definitions
Hi Sakari, > -Original Message- > From: Sakari Ailus [mailto:sakari.ai...@iki.fi] > Sent: Friday, October 20, 2017 2:30 AM > To: Zhi, Yong <yong@intel.com> > Cc: linux-media@vger.kernel.org; sakari.ai...@linux.intel.com; Zheng, Jian Xu > <jian.xu.zh...@intel.com>; Mani, Rajmohan <rajmohan.m...@intel.com>; > Toivonen, Tuukka <tuukka.toivo...@intel.com>; Hu, Jerry W > <jerry.w...@intel.com> > Subject: Re: [PATCH v4 04/12] intel-ipu3: Add user space ABI definitions > > Hi Yong, > > On Tue, Oct 17, 2017 at 10:54:49PM -0500, Yong Zhi wrote: > > The UAPI header defines the structures and macros > > to be used by user space. > > > > Signed-off-by: Rajmohan Mani <rajmohan.m...@intel.com> > > Signed-off-by: Yong Zhi <yong@intel.com> > > --- > > include/uapi/linux/intel-ipu3.h | 2199 > +++ > > 1 file changed, 2199 insertions(+) > > create mode 100644 include/uapi/linux/intel-ipu3.h > > > > diff --git a/include/uapi/linux/intel-ipu3.h > > b/include/uapi/linux/intel-ipu3.h > > new file mode 100644 > > index ..e27a449b4ec1 > > --- /dev/null > > +++ b/include/uapi/linux/intel-ipu3.h > > @@ -0,0 +1,2199 @@ > > +/* > > + * Copyright (c) 2017 Intel Corporation. > > + * > > + * This program is free software; you can redistribute it and/or > > + * modify it under the terms of the GNU General Public License version > > + * 2 as published by the Free Software Foundation. > > + * > > + * This program is distributed in the hope that it will be useful, > > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + * GNU General Public License for more details. > > + */ > > + > > +#ifndef __IPU3_UAPI_H > > +#define __IPU3_UAPI_H > > + > > +#include > > + > > +#define IPU3_UAPI_ISP_VEC_ELEMS64 > > + > > +#define IMGU_ABI_PAD __aligned(IPU3_UAPI_ISP_WORD_BYTES) > > +#define IPU3_ALIGN > __attribute__((aligned(IPU3_UAPI_ISP_WORD_BYTES))) > > + > > +#define IPU3_UAPI_ISP_WORD_BYTES 32 > > +#define IPU3_UAPI_MAX_STRIPES 2 > > + > > +/*** ipu3_uapi_stats_3a ***/ > > + > > +#define IPU3_UAPI_MAX_BUBBLE_SIZE 10 > > + > > +#define IPU3_UAPI_AE_COLORS4 > > +#define IPU3_UAPI_AE_BINS 256 > > + > > +#define IPU3_UAPI_AWB_MD_ITEM_SIZE 8 > > +#define IPU3_UAPI_AWB_MAX_SETS 60 > > +#define IPU3_UAPI_AWB_SET_SIZE 0x500 > > +#define IPU3_UAPI_AWB_SPARE_FOR_BUBBLES \ > > + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ > > +IPU3_UAPI_AWB_MD_ITEM_SIZE) > > +#define IPU3_UAPI_AWB_MAX_BUFFER_SIZE \ > > + (IPU3_UAPI_AWB_MAX_SETS * \ > > +(IPU3_UAPI_AWB_SET_SIZE + > IPU3_UAPI_AWB_SPARE_FOR_BUBBLES)) > > + > > +#define IPU3_UAPI_AF_MAX_SETS 24 > > +#define IPU3_UAPI_AF_MD_ITEM_SIZE 4 > > +#define IPU3_UAPI_AF_SPARE_FOR_BUBBLES \ > > + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ > > +IPU3_UAPI_AF_MD_ITEM_SIZE) > > +#define IPU3_UAPI_AF_Y_TABLE_SET_SIZE 0x80 > > +#define IPU3_UAPI_AF_Y_TABLE_MAX_SIZE \ > > + (IPU3_UAPI_AF_MAX_SETS * \ > > +(IPU3_UAPI_AF_Y_TABLE_SET_SIZE + > IPU3_UAPI_AF_SPARE_FOR_BUBBLES) * \ > > +IPU3_UAPI_MAX_STRIPES) > > + > > +#define IPU3_UAPI_AWB_FR_MAX_SETS 24 > > +#define IPU3_UAPI_AWB_FR_MD_ITEM_SIZE 8 > > +#define IPU3_UAPI_AWB_FR_BAYER_TBL_SIZE0x100 > > +#define IPU3_UAPI_AWB_FR_SPARE_FOR_BUBBLES \ > > + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ > > + IPU3_UAPI_AWB_FR_MD_ITEM_SIZE) > > +#define IPU3_UAPI_AWB_FR_BAYER_TABLE_MAX_SIZE \ > > + (IPU3_UAPI_AWB_FR_MAX_SETS * \ > > + (IPU3_UAPI_AWB_FR_BAYER_TBL_SIZE + \ > > +IPU3_UAPI_AWB_FR_SPARE_FOR_BUBBLES) * \ > > + IPU3_UAPI_MAX_STRIPES) > > + > > +struct ipu3_uapi_grid_config { > > + __u8 width; /* 6 or 7 (rgbs_grd_cfg) bits */ > > + __u8 height; > > + __u16 block_width_log2:3; > > + __u16 block_height_log2:3; > > + __u16 height_per_slice:8;
Re: [PATCH v4 04/12] intel-ipu3: Add user space ABI definitions
Hi Yong, On Tue, Oct 17, 2017 at 10:54:49PM -0500, Yong Zhi wrote: > The UAPI header defines the structures and macros > to be used by user space. > > Signed-off-by: Rajmohan Mani> Signed-off-by: Yong Zhi > --- > include/uapi/linux/intel-ipu3.h | 2199 > +++ > 1 file changed, 2199 insertions(+) > create mode 100644 include/uapi/linux/intel-ipu3.h > > diff --git a/include/uapi/linux/intel-ipu3.h b/include/uapi/linux/intel-ipu3.h > new file mode 100644 > index ..e27a449b4ec1 > --- /dev/null > +++ b/include/uapi/linux/intel-ipu3.h > @@ -0,0 +1,2199 @@ > +/* > + * Copyright (c) 2017 Intel Corporation. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License version > + * 2 as published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + */ > + > +#ifndef __IPU3_UAPI_H > +#define __IPU3_UAPI_H > + > +#include > + > +#define IPU3_UAPI_ISP_VEC_ELEMS 64 > + > +#define IMGU_ABI_PAD __aligned(IPU3_UAPI_ISP_WORD_BYTES) > +#define IPU3_ALIGN __attribute__((aligned(IPU3_UAPI_ISP_WORD_BYTES))) > + > +#define IPU3_UAPI_ISP_WORD_BYTES 32 > +#define IPU3_UAPI_MAX_STRIPES2 > + > +/*** ipu3_uapi_stats_3a ***/ > + > +#define IPU3_UAPI_MAX_BUBBLE_SIZE10 > + > +#define IPU3_UAPI_AE_COLORS 4 > +#define IPU3_UAPI_AE_BINS256 > + > +#define IPU3_UAPI_AWB_MD_ITEM_SIZE 8 > +#define IPU3_UAPI_AWB_MAX_SETS 60 > +#define IPU3_UAPI_AWB_SET_SIZE 0x500 > +#define IPU3_UAPI_AWB_SPARE_FOR_BUBBLES \ > + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ > + IPU3_UAPI_AWB_MD_ITEM_SIZE) > +#define IPU3_UAPI_AWB_MAX_BUFFER_SIZE \ > + (IPU3_UAPI_AWB_MAX_SETS * \ > + (IPU3_UAPI_AWB_SET_SIZE + IPU3_UAPI_AWB_SPARE_FOR_BUBBLES)) > + > +#define IPU3_UAPI_AF_MAX_SETS24 > +#define IPU3_UAPI_AF_MD_ITEM_SIZE4 > +#define IPU3_UAPI_AF_SPARE_FOR_BUBBLES \ > + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ > + IPU3_UAPI_AF_MD_ITEM_SIZE) > +#define IPU3_UAPI_AF_Y_TABLE_SET_SIZE0x80 > +#define IPU3_UAPI_AF_Y_TABLE_MAX_SIZE \ > + (IPU3_UAPI_AF_MAX_SETS * \ > + (IPU3_UAPI_AF_Y_TABLE_SET_SIZE + IPU3_UAPI_AF_SPARE_FOR_BUBBLES) * \ > + IPU3_UAPI_MAX_STRIPES) > + > +#define IPU3_UAPI_AWB_FR_MAX_SETS24 > +#define IPU3_UAPI_AWB_FR_MD_ITEM_SIZE8 > +#define IPU3_UAPI_AWB_FR_BAYER_TBL_SIZE 0x100 > +#define IPU3_UAPI_AWB_FR_SPARE_FOR_BUBBLES \ > + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ > + IPU3_UAPI_AWB_FR_MD_ITEM_SIZE) > +#define IPU3_UAPI_AWB_FR_BAYER_TABLE_MAX_SIZE \ > + (IPU3_UAPI_AWB_FR_MAX_SETS * \ > + (IPU3_UAPI_AWB_FR_BAYER_TBL_SIZE + \ > + IPU3_UAPI_AWB_FR_SPARE_FOR_BUBBLES) * \ > + IPU3_UAPI_MAX_STRIPES) > + > +struct ipu3_uapi_grid_config { > + __u8 width; /* 6 or 7 (rgbs_grd_cfg) bits */ > + __u8 height; > + __u16 block_width_log2:3; > + __u16 block_height_log2:3; > + __u16 height_per_slice:8; /* default value 1 */ > + __u16 x_start; /* 12 bits */ > + __u16 y_start; > +#define IPU3_UAPI_GRID_START_MASK((1 << 12) - 1) > +#define IPU3_UAPI_GRID_Y_START_EN(1 << 15) > + __u16 x_end;/* 12 bits */ > + __u16 y_end; > +} __packed; > + > +struct ipu3_uapi_awb_meta_data { > + __u8 meta_data_buffer[IPU3_UAPI_AWB_MAX_BUFFER_SIZE]; > +} __packed; > + > +struct ipu3_uapi_awb_raw_buffer { > + struct ipu3_uapi_awb_meta_data meta_data; > +} __packed; > + > +struct IPU3_ALIGN ipu3_uapi_awb_config_s { > + __u16 rgbs_thr_gr; > + __u16 rgbs_thr_r; > + __u16 rgbs_thr_gb; > + __u16 rgbs_thr_b; > +/* controls generation of meta_data (like FF enable/disable) */ > +#define IPU3_UAPI_AWB_RGBS_THR_B_EN (1 << 14) > +#define IPU3_UAPI_AWB_RGBS_THR_B_INCL_SAT(1 << 15) > + > + struct ipu3_uapi_grid_config grid; > +} __packed; > + > +struct ipu3_uapi_ae_raw_buffer { > + __u32 vals[IPU3_UAPI_AE_BINS * IPU3_UAPI_AE_COLORS]; > +} __packed; > + > +struct ipu3_uapi_ae_raw_buffer_aligned { > + struct ipu3_uapi_ae_raw_buffer buff IPU3_ALIGN; > +} __packed; > + > +struct
[PATCH v4 04/12] intel-ipu3: Add user space ABI definitions
The UAPI header defines the structures and macros to be used by user space. Signed-off-by: Rajmohan ManiSigned-off-by: Yong Zhi --- include/uapi/linux/intel-ipu3.h | 2199 +++ 1 file changed, 2199 insertions(+) create mode 100644 include/uapi/linux/intel-ipu3.h diff --git a/include/uapi/linux/intel-ipu3.h b/include/uapi/linux/intel-ipu3.h new file mode 100644 index ..e27a449b4ec1 --- /dev/null +++ b/include/uapi/linux/intel-ipu3.h @@ -0,0 +1,2199 @@ +/* + * Copyright (c) 2017 Intel Corporation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License version + * 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#ifndef __IPU3_UAPI_H +#define __IPU3_UAPI_H + +#include + +#define IPU3_UAPI_ISP_VEC_ELEMS64 + +#define IMGU_ABI_PAD __aligned(IPU3_UAPI_ISP_WORD_BYTES) +#define IPU3_ALIGN __attribute__((aligned(IPU3_UAPI_ISP_WORD_BYTES))) + +#define IPU3_UAPI_ISP_WORD_BYTES 32 +#define IPU3_UAPI_MAX_STRIPES 2 + +/*** ipu3_uapi_stats_3a ***/ + +#define IPU3_UAPI_MAX_BUBBLE_SIZE 10 + +#define IPU3_UAPI_AE_COLORS4 +#define IPU3_UAPI_AE_BINS 256 + +#define IPU3_UAPI_AWB_MD_ITEM_SIZE 8 +#define IPU3_UAPI_AWB_MAX_SETS 60 +#define IPU3_UAPI_AWB_SET_SIZE 0x500 +#define IPU3_UAPI_AWB_SPARE_FOR_BUBBLES \ + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ +IPU3_UAPI_AWB_MD_ITEM_SIZE) +#define IPU3_UAPI_AWB_MAX_BUFFER_SIZE \ + (IPU3_UAPI_AWB_MAX_SETS * \ +(IPU3_UAPI_AWB_SET_SIZE + IPU3_UAPI_AWB_SPARE_FOR_BUBBLES)) + +#define IPU3_UAPI_AF_MAX_SETS 24 +#define IPU3_UAPI_AF_MD_ITEM_SIZE 4 +#define IPU3_UAPI_AF_SPARE_FOR_BUBBLES \ + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ +IPU3_UAPI_AF_MD_ITEM_SIZE) +#define IPU3_UAPI_AF_Y_TABLE_SET_SIZE 0x80 +#define IPU3_UAPI_AF_Y_TABLE_MAX_SIZE \ + (IPU3_UAPI_AF_MAX_SETS * \ +(IPU3_UAPI_AF_Y_TABLE_SET_SIZE + IPU3_UAPI_AF_SPARE_FOR_BUBBLES) * \ +IPU3_UAPI_MAX_STRIPES) + +#define IPU3_UAPI_AWB_FR_MAX_SETS 24 +#define IPU3_UAPI_AWB_FR_MD_ITEM_SIZE 8 +#define IPU3_UAPI_AWB_FR_BAYER_TBL_SIZE0x100 +#define IPU3_UAPI_AWB_FR_SPARE_FOR_BUBBLES \ + (IPU3_UAPI_MAX_BUBBLE_SIZE * IPU3_UAPI_MAX_STRIPES * \ + IPU3_UAPI_AWB_FR_MD_ITEM_SIZE) +#define IPU3_UAPI_AWB_FR_BAYER_TABLE_MAX_SIZE \ + (IPU3_UAPI_AWB_FR_MAX_SETS * \ + (IPU3_UAPI_AWB_FR_BAYER_TBL_SIZE + \ +IPU3_UAPI_AWB_FR_SPARE_FOR_BUBBLES) * \ + IPU3_UAPI_MAX_STRIPES) + +struct ipu3_uapi_grid_config { + __u8 width; /* 6 or 7 (rgbs_grd_cfg) bits */ + __u8 height; + __u16 block_width_log2:3; + __u16 block_height_log2:3; + __u16 height_per_slice:8; /* default value 1 */ + __u16 x_start; /* 12 bits */ + __u16 y_start; +#define IPU3_UAPI_GRID_START_MASK ((1 << 12) - 1) +#define IPU3_UAPI_GRID_Y_START_EN (1 << 15) + __u16 x_end;/* 12 bits */ + __u16 y_end; +} __packed; + +struct ipu3_uapi_awb_meta_data { + __u8 meta_data_buffer[IPU3_UAPI_AWB_MAX_BUFFER_SIZE]; +} __packed; + +struct ipu3_uapi_awb_raw_buffer { + struct ipu3_uapi_awb_meta_data meta_data; +} __packed; + +struct IPU3_ALIGN ipu3_uapi_awb_config_s { + __u16 rgbs_thr_gr; + __u16 rgbs_thr_r; + __u16 rgbs_thr_gb; + __u16 rgbs_thr_b; +/* controls generation of meta_data (like FF enable/disable) */ +#define IPU3_UAPI_AWB_RGBS_THR_B_EN(1 << 14) +#define IPU3_UAPI_AWB_RGBS_THR_B_INCL_SAT (1 << 15) + + struct ipu3_uapi_grid_config grid; +} __packed; + +struct ipu3_uapi_ae_raw_buffer { + __u32 vals[IPU3_UAPI_AE_BINS * IPU3_UAPI_AE_COLORS]; +} __packed; + +struct ipu3_uapi_ae_raw_buffer_aligned { + struct ipu3_uapi_ae_raw_buffer buff IPU3_ALIGN; +} __packed; + +struct ipu3_uapi_ae_grid_config { + __u8 width; + __u8 height; + __u8 block_width_log2:4; + __u8 block_height_log2:4; + __u8 __reserved0:5; + __u8 ae_en:1; + __u8 rst_hist_array:1; + __u8 done_rst_hist_array:1; + __u16