14e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#ifndef __UAPI_MSMB_ISP__
24e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define __UAPI_MSMB_ISP__
35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/videodev2.h>
55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_PLANES_PER_STREAM 3
75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_NUM_STREAM 7
85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_47        47
105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_46        46
115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_44        44
125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_40        40
135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_VERSION_32        32
145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_NATIVE_BUF_BIT    (0x10000 << 0)
155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP0_BIT              (0x10000 << 1)
165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP1_BIT              (0x10000 << 2)
175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_META_CHANNEL_BIT  (0x10000 << 3)
185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_SCRATCH_BUF_BIT   (0x10000 << 4)
195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_OFFLINE_STATS_BIT (0x10000 << 5)
205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_STATS_STREAM_BIT  0x80000000
215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_cfg_cmd_list;
235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum ISP_START_PIXEL_PATTERN {
255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_BAYER_RGRGRG,
265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_BAYER_GRGRGR,
275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_BAYER_BGBGBG,
285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_BAYER_GBGBGB,
295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_YUV_YCbYCr,
305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_YUV_YCrYCb,
315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_YUV_CbYCrY,
325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_YUV_CrYCbY,
335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_PIX_PATTERN_MAX
345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_plane_fmt {
375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	Y_PLANE,
385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CB_PLANE,
395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CR_PLANE,
405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CRCB_PLANE,
415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CBCR_PLANE,
425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_PLANE_FMT_MAX
435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_input_src {
465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_PIX_0,
475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_RAW_0,
485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_RAW_1,
495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_RAW_2,
505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_SRC_MAX,
515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_axi_stream_src {
545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	PIX_ENCODER,
555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	PIX_VIEWFINDER,
565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	PIX_VIDEO,
575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMIF_RAW,
585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	IDEAL_RAW,
595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	RDI_INTF_0,
605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	RDI_INTF_1,
615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	RDI_INTF_2,
625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_AXI_SRC_MAX
635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_frame_skip_pattern {
665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	NO_SKIP,
675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_2FRAME,
685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_3FRAME,
695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_4FRAME,
705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_5FRAME,
715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_6FRAME,
725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_7FRAME,
735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_8FRAME,
745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_16FRAME,
755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EVERY_32FRAME,
765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SKIP_ALL,
775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SKIP_RANGE,
785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MAX_SKIP,
795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Define an unused period. When this period is set it means that the stream is
835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * stopped(i.e the pattern is 0). We don't track the current pattern, just the
845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * period defines what the pattern is, if period is this then pattern is 0 else
855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * pattern is 1
865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSM_VFE_STREAM_STOP_PERIOD 15
885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_stats_type {
905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_AEC,   /* legacy based AEC */
915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_AF,    /* legacy based AF */
925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_AWB,   /* legacy based AWB */
935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_RS,    /* legacy based RS */
945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_CS,    /* legacy based CS */
955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_IHIST, /* legacy based HIST */
965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_SKIN,  /* legacy based SKIN */
975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_BG,    /* Bayer Grids */
985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_BF,    /* Bayer Focus */
995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_BE,    /* Bayer Exposure*/
1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_BHIST, /* Bayer Hist */
1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_BF_SCALE,  /* Bayer Focus scale */
1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_HDR_BE,    /* HDR Bayer Exposure */
1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_HDR_BHIST, /* HDR Bayer Hist */
1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_AEC_BG,   /* AEC BG */
1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MSM_ISP_STATS_MAX    /* MAX */
1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @stats_type_mask: Stats type mask (enum msm_isp_stats_type).
1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @stream_src_mask: Stream src mask (enum msm_vfe_axi_stream_src)
1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @skip_mode: skip pattern, if skip mode is range only then min/max is used
1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @min_frame_id: minimum frame id (valid only if skip_mode = RANGE)
1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @max_frame_id: maximum frame id (valid only if skip_mode = RANGE)
1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin*/
1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_sw_framskip {
1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stats_type_mask;
1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_src_mask;
1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_frame_skip_pattern skip_mode;
1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t min_frame_id;
1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t max_frame_id;
1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_testgen_color_pattern {
1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	COLOR_BAR_8_COLOR,
1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_WHITE,
1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_YELLOW,
1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_CYAN,
1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_GREEN,
1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_MAGENTA,
1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_RED,
1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_BLUE,
1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UNICOLOR_BLACK,
1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MAX_COLOR,
1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_camif_input {
1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMIF_DISABLED,
1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMIF_PAD_REG_INPUT,
1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMIF_MIDDI_INPUT,
1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMIF_MIPI_INPUT,
1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_fetch_engine_cfg {
1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t input_format;
1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t buf_width;
1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t buf_height;
1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t fetch_width;
1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t fetch_height;
1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t x_offset;
1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t y_offset;
1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t buf_stride;
1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
154d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjinenum msm_vfe_camif_output_format {
155d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	CAMIF_QCOM_RAW,
156d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	CAMIF_MIPI_RAW,
157d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	CAMIF_PLAIN_8,
158d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	CAMIF_PLAIN_16,
159d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	CAMIF_MAX_FORMAT,
160d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin};
161d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin
1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Camif output general configuration
1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_camif_subsample_cfg {
1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t irq_subsample_period;
1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t irq_subsample_pattern;
1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t sof_counter_step;
1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t pixel_skip;
1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t line_skip;
1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t first_line;
1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t last_line;
1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t first_pixel;
1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t last_pixel;
175d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	enum msm_vfe_camif_output_format output_format;
1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Camif frame and window configuration
1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_camif_cfg {
1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t lines_per_frame;
1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t pixels_per_line;
1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t first_pixel;
1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t last_pixel;
1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t first_line;
1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t last_line;
1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t epoch_line0;
1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t epoch_line1;
1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t is_split;
1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_camif_input camif_input;
1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_camif_subsample_cfg subsample_cfg;
1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_testgen_cfg {
1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t lines_per_frame;
1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t pixels_per_line;
1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t v_blank;
1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t h_blank;
2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum ISP_START_PIXEL_PATTERN pixel_bayer_pattern;
2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t rotate_period;
2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_testgen_color_pattern color_bar_pattern;
2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t burst_num_frame;
2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_inputmux {
2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	CAMIF,
2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	TESTGEN,
2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	EXTERNAL_READ,
2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_stats_composite_group {
2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	STATS_COMPOSITE_GRP_NONE,
2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	STATS_COMPOSITE_GRP_1,
2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	STATS_COMPOSITE_GRP_2,
2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	STATS_COMPOSITE_GRP_MAX,
2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_hvx_streaming_cmd {
2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	HVX_DISABLE,
2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	HVX_ONE_WAY,
2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	HVX_ROUND_TRIP
2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_pix_cfg {
2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_camif_cfg camif_cfg;
2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_testgen_cfg testgen_cfg;
2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_fetch_engine_cfg fetch_engine_cfg;
2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_inputmux input_mux;
2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum ISP_START_PIXEL_PATTERN pixel_pattern;
2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t input_format;
2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_hvx_streaming_cmd hvx_cmd;
2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t is_split;
2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_rdi_cfg {
2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t cid;
2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t frame_based;
2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_input_cfg {
2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_vfe_pix_cfg pix_cfg;
2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_vfe_rdi_cfg rdi_cfg;
2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} d;
2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_input_src input_src;
2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t input_pix_clk;
2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_fetch_eng_start {
2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t buf_idx;
2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t  offline_mode;
2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t fd;
2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t buf_addr;
2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t frame_id;
2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_plane_cfg {
2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_width; /*Include padding*/
2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_height;
2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_stride;
2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_scan_lines;
2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_plane_format; /*Y/Cb/Cr/CbCr*/
2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t plane_addr_offset;
2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t csid_src; /*RDI 0-2*/
2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t rdi_cid;/*CID 1-16*/
2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_stream_memory_input_t {
2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MEMORY_INPUT_DISABLED,
2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MEMORY_INPUT_ENABLED
2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_request_cmd {
2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t vt_enable;
2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_format;/*Planar/RAW/Misc*/
2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_axi_stream_src stream_src; /*CAMIF/IDEAL/RDIs*/
2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_axi_plane_cfg plane_cfg[MAX_PLANES_PER_STREAM];
2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t burst_count;
2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t hfr_mode;
2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t frame_base;
2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t init_frame_drop; /*MAX 31 Frames*/
2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_frame_skip_pattern frame_skip_pattern;
2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t buf_divert; /* if TRUE no vb2 buf done. */
2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*Return values*/
2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t axi_stream_handle;
2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t controllable_output;
2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t burst_len;
2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Flag indicating memory input stream */
2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_stream_memory_input_t memory_input;
2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_release_cmd {
3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_handle;
3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_axi_stream_cmd {
3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	STOP_STREAM,
3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	START_STREAM,
3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	STOP_IMMEDIATELY,
3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_cfg_cmd {
3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t num_streams;
3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_handle[VFE_AXI_SRC_MAX];
3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_axi_stream_cmd cmd;
3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t sync_frame_id_src;
3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_axi_stream_update_type {
3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ENABLE_STREAM_BUF_DIVERT,
3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	DISABLE_STREAM_BUF_DIVERT,
3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UPDATE_STREAM_FRAMEDROP_PATTERN,
3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UPDATE_STREAM_STATS_FRAMEDROP_PATTERN,
3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UPDATE_STREAM_AXI_CONFIG,
3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UPDATE_STREAM_REQUEST_FRAMES,
3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UPDATE_STREAM_ADD_BUFQ,
3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UPDATE_STREAM_REMOVE_BUFQ,
3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	UPDATE_STREAM_SW_FRAME_DROP,
32600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	UPDATE_STREAM_REQUEST_FRAMES_VER2,
3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
32800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He#define UPDATE_STREAM_REQUEST_FRAMES_VER2 UPDATE_STREAM_REQUEST_FRAMES_VER2
3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_iommu_type {
3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	IOMMU_ATTACH,
3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	IOMMU_DETACH,
3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_buff_queue_id {
3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_BUF_QUEUE_DEFAULT,
3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_BUF_QUEUE_SHARED,
3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_BUF_QUEUE_MAX,
3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_cfg_update_info {
3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_handle;
3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_format;
3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t user_stream_id;
3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t frame_id;
3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_frame_skip_pattern skip_pattern;
3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_axi_plane_cfg plane_cfg[MAX_PLANES_PER_STREAM];
3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_isp_sw_framskip sw_skip_info;
3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
35100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun Hestruct msm_vfe_axi_stream_cfg_update_info_req_frm {
35200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	uint32_t stream_handle;
35300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	uint32_t user_stream_id;
35400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	uint32_t frame_id;
35500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	uint32_t buf_index;
35600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He};
35700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He
3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_halt_cmd {
3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stop_camif;
3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t overflow_detected;
3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t blocking_halt;
3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_reset_cmd {
3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t blocking;
3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t frame_id;
3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_restart_cmd {
3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t enable_camif;
3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_stream_update_cmd {
3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t num_streams;
3755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_axi_stream_update_type update_type;
37600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	/*
37700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	 * For backward compatibility, ensure 1st member of any struct
37800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	 * in union below is uint32_t stream_handle.
37900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	 */
38000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	union {
38100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_stream_cfg_update_info
3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					update_info[MSM_ISP_STATS_MAX];
38300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_stream_cfg_update_info_req_frm req_frm_ver2;
38400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	};
3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_smmu_attach_cmd {
3885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t security_mode;
3895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t iommu_attach_mode;
3905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
3915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_stats_stream_request_cmd {
3935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
3945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
3955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_isp_stats_type stats_type;
3965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t composite_flag;
3975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t framedrop_pattern;
3985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t init_frame_drop; /*MAX 31 Frames*/
3995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t irq_subsample_pattern;
4005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t buffer_offset;
4015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_handle;
4025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_stats_stream_release_cmd {
4055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_handle;
4065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_stats_stream_cfg_cmd {
4085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t num_streams;
4095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_handle[MSM_ISP_STATS_MAX];
4105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t enable;
4115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stats_burst_len;
4125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_reg_cfg_type {
4155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_WRITE,
4165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_WRITE_MB,
4175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_READ,
4185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_CFG_MASK,
4195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_WRITE_DMI_16BIT,
4205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_WRITE_DMI_32BIT,
4215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_WRITE_DMI_64BIT,
4225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_READ_DMI_16BIT,
4235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_READ_DMI_32BIT,
4245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_READ_DMI_64BIT,
4255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	GET_MAX_CLK_RATE,
4265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	GET_CLK_RATES,
4275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	GET_ISP_ID,
4285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_HW_UPDATE_LOCK,
4295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_HW_UPDATE_UNLOCK,
4305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SET_WM_UB_SIZE,
4315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	SET_UB_POLICY,
4325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_cfg_cmd2 {
4355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t num_cfg;
4365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t cmd_len;
437d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	void __user *cfg_data;
438d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	void __user *cfg_cmd;
4395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_cfg_cmd_list {
4425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_cfg_cmd2      cfg_cmd;
4435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_vfe_cfg_cmd_list *next;
4445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t                     next_size;
4455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_rw_info {
4485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t reg_offset;
4495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t cmd_data_offset;
4505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t len;
4515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_mask_info {
4545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t reg_offset;
4555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t mask;
4565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t val;
4575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_dmi_info {
4605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t hi_tbl_offset; /*Optional*/
4615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t lo_tbl_offset; /*Required*/
4625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t len;
4635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_reg_cfg_cmd {
4665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
4675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_vfe_reg_rw_info rw_info;
4685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_vfe_reg_mask_info mask_info;
4695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_vfe_reg_dmi_info dmi_info;
4705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} u;
4715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_reg_cfg_type cmd_type;
4735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum vfe_sd_type {
4765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_SD_0 = 0,
4775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_SD_1,
4785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_SD_COMMON,
4795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	VFE_SD_MAX,
4805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* When you change the value below, check for the sof event_data size.
4835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * V4l2 limits payload to 64 bytes */
4845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MS_NUM_SLAVE_MAX 1
4855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Usecases when 2 HW need to be related or synced */
4875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_dual_hw_type {
4885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	DUAL_NONE = 0,
4895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	DUAL_HW_VFE_SPLIT = 1,
4905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	DUAL_HW_MASTER_SLAVE = 2,
4915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Type for 2 INTF when used in Master-Slave mode */
4945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_dual_hw_ms_type {
4955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MS_TYPE_NONE,
4965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MS_TYPE_MASTER,
4975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MS_TYPE_SLAVE,
4985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
4995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_set_dual_hw_ms_cmd {
5015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t num_src;
5025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Each session can be only one type but multiple intf if YUV cam */
5035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_dual_hw_ms_type dual_hw_ms_type;
5045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Primary intf is mostly associated with preview.
5055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * This primary intf SOF frame_id and timestamp is tracked
5065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * and used to calculate delta */
5075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_input_src primary_intf;
5085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* input_src array indicates other input INTF that may be Master/Slave.
5095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * For these additional intf, frame_id and timestamp are not saved.
5105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * However, if these are slaves then they will still get their
5115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * frame_id from Master */
5125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_input_src input_src[VFE_SRC_MAX];
5135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t sof_delta_threshold; /* In milliseconds. Sent for Master */
5145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_buf_type {
5175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_PRIVATE_BUF,
5185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_SHARE_BUF,
5195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	MAX_ISP_BUF_TYPE,
5205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_unmap_buf_req {
5235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t fd;
5245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_buf_request {
5275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
5285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
5295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t num_buf;
5305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t handle;
5315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_isp_buf_type buf_type;
5325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_qbuf_plane {
5355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t addr;
5365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t offset;
5375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t length;
5385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_qbuf_buffer {
5415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_isp_qbuf_plane planes[MAX_PLANES_PER_STREAM];
5425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t num_planes;
5435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_qbuf_info {
5465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t handle;
5475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int32_t buf_idx;
5485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*Only used for prepare buffer*/
5495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_isp_qbuf_buffer buffer;
5505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*Only used for diverted buffer*/
5515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t dirty_buf;
5525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_clk_rates {
5555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t svs_rate;
5565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t nominal_rate;
5575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t high_rate;
5585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_vfe_axi_src_state {
5615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_input_src input_src;
5625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t src_active;
5635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t src_frame_id;
5645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_event_mask_index {
5675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_STATS_NOTIFY		= 0,
5685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_ERROR			= 1,
5695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_IOMMU_P_FAULT		= 2,
5705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_STREAM_UPDATE_DONE		= 3,
5715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_REG_UPDATE			= 4,
5725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_SOF			= 5,
5735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_BUF_DIVERT			= 6,
5745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_COMP_STATS_NOTIFY		= 7,
5755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EVENT_MASK_INDEX_MASK_FE_READ_DONE		= 8,
576d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	ISP_EVENT_MASK_INDEX_BUF_DONE			= 9,
577d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	ISP_EVENT_MASK_INDEX_REG_UPDATE_MISSING		= 10,
578d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	ISP_EVENT_MASK_INDEX_PING_PONG_MISMATCH		= 11,
579d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	ISP_EVENT_MASK_INDEX_BUF_FATAL_ERROR		= 12,
5805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_NONE			0
5845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_STATS_NOTIFY \
5865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_STATS_NOTIFY)
5875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_ERROR \
5895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_ERROR)
5905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_IOMMU_P_FAULT \
5925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_IOMMU_P_FAULT)
5935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_STREAM_UPDATE_DONE \
5955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_STREAM_UPDATE_DONE)
5965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_REG_UPDATE \
5985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_REG_UPDATE)
5995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_SOF \
6015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_SOF)
6025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_BUF_DIVERT \
6045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_BUF_DIVERT)
6055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_COMP_STATS_NOTIFY \
6075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_COMP_STATS_NOTIFY)
6085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_FE_READ_DONE \
6105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_MASK_FE_READ_DONE)
6115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SUBS_MASK_BUF_DONE \
6135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_BUF_DONE)
6145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
615d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_SUBS_MASK_REG_UPDATE_MISSING \
616d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_REG_UPDATE_MISSING)
617d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin
618d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_SUBS_MASK_PING_PONG_MISMATCH \
619d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_PING_PONG_MISMATCH)
620d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin
621d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_SUBS_MASK_BUF_FATAL_ERROR \
622d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin			(1 << ISP_EVENT_MASK_INDEX_BUF_FATAL_ERROR)
623d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin
6245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_isp_event_idx {
6255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_REG_UPDATE        = 0,
6265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EPOCH_0           = 1,
6275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_EPOCH_1           = 2,
6285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_START_ACK         = 3,
6295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_STOP_ACK          = 4,
6305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_IRQ_VIOLATION     = 5,
6315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_STATS_OVERFLOW    = 6,
6325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_BUF_DONE          = 7,
6335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_FE_RD_DONE        = 8,
6345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_IOMMU_P_FAULT     = 9,
6355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_ERROR             = 10,
6365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_HW_FATAL_ERROR      = 11,
6375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_PING_PONG_MISMATCH = 12,
6385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_REG_UPDATE_MISSING = 13,
639d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	ISP_BUF_FATAL_ERROR = 14,
640d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	ISP_EVENT_MAX         = 15
6415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
6425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_OFFSET          8
6445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_BASE            (V4L2_EVENT_PRIVATE_START)
6455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_BUF_EVENT_BASE        (ISP_EVENT_BASE + (1 << ISP_EVENT_OFFSET))
6465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_STATS_EVENT_BASE      (ISP_EVENT_BASE + (2 << ISP_EVENT_OFFSET))
6475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_CAMIF_EVENT_BASE      (ISP_EVENT_BASE + (3 << ISP_EVENT_OFFSET))
6485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_STREAM_EVENT_BASE     (ISP_EVENT_BASE + (4 << ISP_EVENT_OFFSET))
6495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_REG_UPDATE      (ISP_EVENT_BASE + ISP_REG_UPDATE)
6505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_EPOCH_0         (ISP_EVENT_BASE + ISP_EPOCH_0)
6515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_EPOCH_1         (ISP_EVENT_BASE + ISP_EPOCH_1)
6525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_START_ACK       (ISP_EVENT_BASE + ISP_START_ACK)
6535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STOP_ACK        (ISP_EVENT_BASE + ISP_STOP_ACK)
6545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_IRQ_VIOLATION   (ISP_EVENT_BASE + ISP_IRQ_VIOLATION)
6555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STATS_OVERFLOW  (ISP_EVENT_BASE + ISP_STATS_OVERFLOW)
6565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_ERROR           (ISP_EVENT_BASE + ISP_ERROR)
6575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_SOF             (ISP_CAMIF_EVENT_BASE)
6585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_EOF             (ISP_CAMIF_EVENT_BASE + 1)
6595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_BUF_DONE        (ISP_EVENT_BASE + ISP_BUF_DONE)
6605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_BUF_DIVERT      (ISP_BUF_EVENT_BASE)
6615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STATS_NOTIFY    (ISP_STATS_EVENT_BASE)
6625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_COMP_STATS_NOTIFY (ISP_EVENT_STATS_NOTIFY + MSM_ISP_STATS_MAX)
6635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_FE_READ_DONE    (ISP_EVENT_BASE + ISP_FE_RD_DONE)
6645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_IOMMU_P_FAULT   (ISP_EVENT_BASE + ISP_IOMMU_P_FAULT)
6655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_HW_FATAL_ERROR  (ISP_EVENT_BASE + ISP_HW_FATAL_ERROR)
6665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_PING_PONG_MISMATCH (ISP_EVENT_BASE + ISP_PING_PONG_MISMATCH)
6675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_REG_UPDATE_MISSING (ISP_EVENT_BASE + ISP_REG_UPDATE_MISSING)
668d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define ISP_EVENT_BUF_FATAL_ERROR (ISP_EVENT_BASE + ISP_BUF_FATAL_ERROR)
6695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define ISP_EVENT_STREAM_UPDATE_DONE   (ISP_STREAM_EVENT_BASE)
6705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The msm_v4l2_event_data structure should match the
6725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * v4l2_event.u.data field.
6735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * should not exceed 64 bytes */
6745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_buf_event {
6765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
6775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
6785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t handle;
6795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t output_format;
6805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int8_t buf_idx;
6815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
6825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_fetch_eng_event {
6835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
6845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
6855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t handle;
6865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t fd;
6875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int8_t buf_idx;
6885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int8_t offline_mode;
6895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
6905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_stats_event {
6915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stats_mask;                        /* 4 bytes */
6925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t stats_buf_idxs[MSM_ISP_STATS_MAX];  /* 11 bytes */
6935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
6945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_stream_ack {
6965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
6975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
6985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t handle;
6995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum msm_vfe_error_type {
7025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_ERROR_NONE,
7035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_ERROR_CAMIF,
7045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_ERROR_BUS_OVERFLOW,
7055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_ERROR_RETURN_EMPTY_BUFFER,
7065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_ERROR_FRAME_ID_MISMATCH,
7075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	ISP_ERROR_MAX,
7085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_error_info {
7115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	enum msm_vfe_error_type err_type;
7125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t session_id;
7135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_id;
714d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	uint32_t stream_id_mask;
7155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* This structure reports delta between master and slave */
7185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_ms_delta_info {
7195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t num_delta_info;
7205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t delta[MS_NUM_SLAVE_MAX];
7215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* This is sent in EPOCH irq */
7245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_output_info {
7255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t regs_not_updated;
7265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* mask with bufq_handle for regs not updated or return empty */
7275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t output_err_mask;
7285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* mask with stream_idx for get_buf failed */
7295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t stream_framedrop_mask;
7305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* mask with stats stream_idx for get_buf failed */
7315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t stats_framedrop_mask;
7325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* delta between master and slave */
7335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* This structure is piggybacked with SOF event */
7365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_sof_info {
7375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint8_t regs_not_updated;
7385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* mask with AXI_SRC for regs not updated */
7395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t reg_update_fail_mask;
7405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* mask with bufq_handle for get_buf failed */
7415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t stream_get_buf_fail_mask;
7425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* mask with stats stream_idx for get_buf failed */
7435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint16_t stats_get_buf_fail_mask;
7445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* delta between master and slave */
7455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct msm_isp_ms_delta_info ms_delta_info;
7465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct msm_isp_event_data {
7495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*Wall clock except for buffer divert events
7505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 *which use monotonic clock
7515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
7525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct timeval timestamp;
7535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Monotonic timestamp since bootup */
7545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct timeval mono_timestamp;
7555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	uint32_t frame_id;
7565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
7575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		/* Sent for Stats_Done event */
7585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_isp_stats_event stats;
7595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		/* Sent for Buf_Divert event */
7605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_isp_buf_event buf_done;
7615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		/* Sent for offline fetch done event */
7625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_isp_fetch_eng_event fetch_done;
7635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		/* Sent for Error_Event */
7645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_isp_error_info error_info;
7655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		/*
7665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		 * This struct needs to be removed once
7675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		 * userspace switches to sof_info
7685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		 */
7695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_isp_output_info output_info;
7705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		/* Sent for SOF event */
7715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct msm_isp_sof_info sof_info;
7725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} u; /* union can have max 52 bytes */
7735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR8  v4l2_fourcc('Q', 'B', 'G', '8')
7765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG8  v4l2_fourcc('Q', 'G', 'B', '8')
7775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG8  v4l2_fourcc('Q', 'G', 'R', '8')
7785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB8  v4l2_fourcc('Q', 'R', 'G', '8')
7795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR10 v4l2_fourcc('Q', 'B', 'G', '0')
7805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG10 v4l2_fourcc('Q', 'G', 'B', '0')
7815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG10 v4l2_fourcc('Q', 'G', 'R', '0')
7825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB10 v4l2_fourcc('Q', 'R', 'G', '0')
7835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR12 v4l2_fourcc('Q', 'B', 'G', '2')
7845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG12 v4l2_fourcc('Q', 'G', 'B', '2')
7855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG12 v4l2_fourcc('Q', 'G', 'R', '2')
7865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB12 v4l2_fourcc('Q', 'R', 'G', '2')
7875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QBGGR14 v4l2_fourcc('Q', 'B', 'G', '4')
7885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGBRG14 v4l2_fourcc('Q', 'G', 'B', '4')
7895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QGRBG14 v4l2_fourcc('Q', 'G', 'R', '4')
7905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_QRGGB14 v4l2_fourcc('Q', 'R', 'G', '4')
7915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16BGGR10 v4l2_fourcc('P', 'B', 'G', '0')
7925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16GBRG10 v4l2_fourcc('P', 'G', 'B', '0')
7935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16GRBG10 v4l2_fourcc('P', 'G', 'R', '0')
7945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_P16RGGB10 v4l2_fourcc('P', 'R', 'G', '0')
7955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV14 v4l2_fourcc('N', 'V', '1', '4')
7965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV41 v4l2_fourcc('N', 'V', '4', '1')
7975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_META v4l2_fourcc('Q', 'M', 'E', 'T')
7985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR14 v4l2_fourcc('B', 'G', '1', '4') /* 14 BGBG.GRGR.*/
7995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGBRG14 v4l2_fourcc('G', 'B', '1', '4') /* 14 GBGB.RGRG.*/
8005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGRBG14 v4l2_fourcc('B', 'A', '1', '4') /* 14 GRGR.BGBG.*/
8015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SRGGB14 v4l2_fourcc('R', 'G', '1', '4') /* 14 RGRG.GBGB.*/
8025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
80300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun Heenum msm_isp_ioctl_cmd_code {
80400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_VFE_REG_CFG = BASE_VIDIOC_PRIVATE,
80500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_REQUEST_BUF,
80600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_ENQUEUE_BUF,
80700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_RELEASE_BUF,
80800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_REQUEST_STREAM,
80900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_CFG_STREAM,
81000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_RELEASE_STREAM,
81100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_INPUT_CFG,
81200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_SET_SRC_STATE,
81300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_REQUEST_STATS_STREAM,
81400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_CFG_STATS_STREAM,
81500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_RELEASE_STATS_STREAM,
81600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_REG_UPDATE_CMD,
81700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_UPDATE_STREAM,
81800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_VFE_REG_LIST_CFG,
81900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_SMMU_ATTACH,
82000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_UPDATE_STATS_STREAM,
82100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_AXI_HALT,
82200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_AXI_RESET,
82300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_AXI_RESTART,
82400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_FETCH_ENG_START,
82500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_DEQUEUE_BUF,
82600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_SET_DUAL_HW_MASTER_SLAVE,
82700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_MAP_BUF_START_FE,
82800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	MSM_ISP_UNMAP_BUF,
82900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He};
83000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He
8315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VFE_REG_CFG \
83200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_VFE_REG_CFG, \
83300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_cfg_cmd2)
8345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REQUEST_BUF \
83600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_REQUEST_BUF, \
83700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_isp_buf_request)
8385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_ENQUEUE_BUF \
84000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_ENQUEUE_BUF, \
84100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_isp_qbuf_info)
8425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_RELEASE_BUF \
84400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_RELEASE_BUF, \
84500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_isp_buf_request)
8465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REQUEST_STREAM \
84800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_REQUEST_STREAM, \
84900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_stream_request_cmd)
8505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_CFG_STREAM \
85200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_CFG_STREAM, \
85300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_stream_cfg_cmd)
8545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_RELEASE_STREAM \
85600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_RELEASE_STREAM, \
85700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_stream_release_cmd)
8585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_INPUT_CFG \
86000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_INPUT_CFG, \
86100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_input_cfg)
8625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_SET_SRC_STATE \
86400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_SET_SRC_STATE, \
86500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_src_state)
8665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REQUEST_STATS_STREAM \
86800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_REQUEST_STATS_STREAM, \
86900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_stats_stream_request_cmd)
8705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_CFG_STATS_STREAM \
87200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_CFG_STATS_STREAM, \
87300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_stats_stream_cfg_cmd)
8745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_RELEASE_STATS_STREAM \
87600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_RELEASE_STATS_STREAM, \
87700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_stats_stream_release_cmd)
8785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_REG_UPDATE_CMD \
88000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_REG_UPDATE_CMD, \
88100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		enum msm_vfe_input_src)
8825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_UPDATE_STREAM \
88400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_UPDATE_STREAM, \
88500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_stream_update_cmd)
8865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_VFE_REG_LIST_CFG \
88800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_VFE_REG_LIST_CFG, \
88900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_cfg_cmd_list)
8905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_SMMU_ATTACH \
89200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_SMMU_ATTACH, \
89300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_smmu_attach_cmd)
8945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_UPDATE_STATS_STREAM \
89600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_UPDATE_STATS_STREAM, \
89700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_stream_update_cmd)
8985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_AXI_HALT \
90000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_AXI_HALT, \
90100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_halt_cmd)
9025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_AXI_RESET \
90400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_AXI_RESET, \
90500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_reset_cmd)
9065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_AXI_RESTART \
90800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_AXI_RESTART, \
90900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_axi_restart_cmd)
9105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_FETCH_ENG_START \
91200e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_FETCH_ENG_START, \
91300e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_fetch_eng_start)
9145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_DEQUEUE_BUF \
91600e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_DEQUEUE_BUF, \
91700e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_isp_qbuf_info)
9185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_SET_DUAL_HW_MASTER_SLAVE \
92000e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_SET_DUAL_HW_MASTER_SLAVE, \
92100e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_isp_set_dual_hw_ms_cmd)
9225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_MAP_BUF_START_FE \
92400e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_MAP_BUF_START_FE, \
92500e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_vfe_fetch_eng_start)
9265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_MSM_ISP_UNMAP_BUF \
92800e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He	_IOWR('V', MSM_ISP_UNMAP_BUF, \
92900e236ff056e912f8f498dc8ee6b2a62b05bac76Zhijun He		struct msm_isp_unmap_buf_req)
9305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif /* __MSMB_ISP__ */
932