1537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#ifndef __MSMB_ISP__
2537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define __MSMB_ISP__
3537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
4537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <linux/videodev2.h>
5537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
6537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_PLANES_PER_STREAM 3
7537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_NUM_STREAM 7
8537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
9537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_VERSION_40        40
10537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_VERSION_32        32
1139255afaa96f3cff1ab99d98bb70c85723bb1c97Shuzhen Wang#define ISP_NATIVE_BUF_BIT    (0x10000 << 0)
1239255afaa96f3cff1ab99d98bb70c85723bb1c97Shuzhen Wang#define ISP0_BIT              (0x10000 << 1)
1339255afaa96f3cff1ab99d98bb70c85723bb1c97Shuzhen Wang#define ISP1_BIT              (0x10000 << 2)
1439255afaa96f3cff1ab99d98bb70c85723bb1c97Shuzhen Wang#define ISP_META_CHANNEL_BIT  (0x10000 << 3)
1539255afaa96f3cff1ab99d98bb70c85723bb1c97Shuzhen Wang#define ISP_SCRATCH_BUF_BIT   (0x10000 << 4)
16537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_STATS_STREAM_BIT  0x80000000
17537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
18537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum ISP_START_PIXEL_PATTERN {
19537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_BAYER_RGRGRG,
20537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_BAYER_GRGRGR,
21537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_BAYER_BGBGBG,
22537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_BAYER_GBGBGB,
23537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_YUV_YCbYCr,
24537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_YUV_YCrYCb,
25537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_YUV_CbYCrY,
26537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_YUV_CrYCbY,
27537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_PIX_PATTERN_MAX
28537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
29537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
30537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_plane_fmt {
31537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	Y_PLANE,
32537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CB_PLANE,
33537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CR_PLANE,
34537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CRCB_PLANE,
35537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CBCR_PLANE,
36537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_PLANE_FMT_MAX
37537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
38537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
39537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_input_src {
40537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_PIX_0,
41537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_RAW_0,
42537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_RAW_1,
43537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_RAW_2,
44537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_SRC_MAX,
45537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
46537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
47537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_axi_stream_src {
48537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	PIX_ENCODER,
49537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	PIX_VIEWFINDER,
50537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMIF_RAW,
51537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	IDEAL_RAW,
52537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	RDI_INTF_0,
53537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	RDI_INTF_1,
54537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	RDI_INTF_2,
55537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_AXI_SRC_MAX
56537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
57537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
58537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_frame_skip_pattern {
59537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	NO_SKIP,
60537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_2FRAME,
61537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_3FRAME,
62537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_4FRAME,
63537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_5FRAME,
64537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_6FRAME,
65537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_7FRAME,
66537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_8FRAME,
67537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_16FRAME,
68537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EVERY_32FRAME,
6992b8da1af686c72bde47254e7fcd4b17e39be634Ajay Dudani	SKIP_ALL,
70537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MAX_SKIP,
71537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
72537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
73537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_camif_input {
74537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMIF_DISABLED,
75537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMIF_PAD_REG_INPUT,
76537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMIF_MIDDI_INPUT,
77537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMIF_MIPI_INPUT,
78537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
79537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
80537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_camif_cfg {
81537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t lines_per_frame;
82537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t pixels_per_line;
83537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t first_pixel;
84537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t last_pixel;
85537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t first_line;
86537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t last_line;
87537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t epoch_line0;
88537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t epoch_line1;
89537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_camif_input camif_input;
90537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
91537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
92537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_inputmux {
93537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMIF,
94537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	TESTGEN,
95537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	EXTERNAL_READ,
96537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
97537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
98537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_pix_cfg {
99537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_vfe_camif_cfg camif_cfg;
100537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_inputmux input_mux;
101537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum ISP_START_PIXEL_PATTERN pixel_pattern;
102537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
103537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
104537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_rdi_cfg {
105537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t cid;
106537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t frame_based;
107537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
108537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
109537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_input_cfg {
110537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
111537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_vfe_pix_cfg pix_cfg;
112537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_vfe_rdi_cfg rdi_cfg;
113537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} d;
114537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_input_src input_src;
115537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t input_pix_clk;
116537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
117537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
118537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_axi_plane_cfg {
119537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t output_width; /*Include padding*/
120537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t output_height;
121537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t output_stride;
122537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t output_scan_lines;
123537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t output_plane_format; /*Y/Cb/Cr/CbCr*/
124537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t plane_addr_offset;
125537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t csid_src; /*RDI 0-2*/
126537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t rdi_cid;/*CID 1-16*/
127537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
128537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
129537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_axi_stream_request_cmd {
130537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t session_id;
131537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_id;
132537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t output_format;/*Planar/RAW/Misc*/
133537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_axi_stream_src stream_src; /*CAMIF/IDEAL/RDIs*/
134537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_vfe_axi_plane_cfg plane_cfg[MAX_PLANES_PER_STREAM];
135537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
136537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t burst_count;
137537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t hfr_mode;
138537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t frame_base;
139537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
140537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t init_frame_drop; /*MAX 31 Frames*/
141537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_frame_skip_pattern frame_skip_pattern;
142537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t buf_divert; /* if TRUE no vb2 buf done. */
143537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/*Return values*/
144537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t axi_stream_handle;
145537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
146537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
147537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_axi_stream_release_cmd {
148537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_handle;
149537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
150537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
151537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_axi_stream_cmd {
152537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	STOP_STREAM,
153537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	START_STREAM,
154537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
155537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
156537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_axi_stream_cfg_cmd {
157537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t num_streams;
158537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_handle[MAX_NUM_STREAM];
159537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_axi_stream_cmd cmd;
160537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
161537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
162537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_axi_stream_update_type {
163537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ENABLE_STREAM_BUF_DIVERT,
164537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	DISABLE_STREAM_BUF_DIVERT,
165537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	UPDATE_STREAM_FRAMEDROP_PATTERN,
16639255afaa96f3cff1ab99d98bb70c85723bb1c97Shuzhen Wang	UPDATE_STREAM_REQUEST_FRAMES,
167537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
168537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
169537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_axi_stream_update_cmd {
170537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_handle;
171537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_axi_stream_update_type update_type;
172537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_frame_skip_pattern skip_pattern;
17339255afaa96f3cff1ab99d98bb70c85723bb1c97Shuzhen Wang	uint32_t request_frm_num;
174537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
175537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
176537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_isp_stats_type {
177537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_AEC,   /* legacy based AEC */
178537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_AF,    /* legacy based AF */
179537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_AWB,   /* legacy based AWB */
180537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_RS,    /* legacy based RS */
181537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_CS,    /* legacy based CS */
182537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_IHIST, /* legacy based HIST */
183537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_SKIN,  /* legacy based SKIN */
184537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_BG,    /* Bayer Grids */
185537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_BF,    /* Bayer Focus */
186537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_BE,    /* Bayer Exposure*/
187537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_BHIST, /* Bayer Hist */
188537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ISP_STATS_MAX    /* MAX */
189537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
190537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
191537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_stats_stream_request_cmd {
192537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t session_id;
193537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_id;
194537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_isp_stats_type stats_type;
195537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t composite_flag;
196537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t framedrop_pattern;
197537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t irq_subsample_pattern;
198537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t buffer_offset;
199537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_handle;
200537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
201537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
202537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_stats_stream_release_cmd {
203537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_handle;
204537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
205537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_stats_stream_cfg_cmd {
206537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t num_streams;
207537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_handle[MSM_ISP_STATS_MAX];
208537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t enable;
209537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
210537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
211537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_vfe_reg_cfg_type {
212537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_WRITE,
213537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_WRITE_MB,
214537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_READ,
215537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_CFG_MASK,
216537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_WRITE_DMI_16BIT,
217537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_WRITE_DMI_32BIT,
218537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_WRITE_DMI_64BIT,
219537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_READ_DMI_16BIT,
220537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_READ_DMI_32BIT,
221537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	VFE_READ_DMI_64BIT,
222537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
223537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
224537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_cfg_cmd2 {
225537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t num_cfg;
226537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t cmd_len;
227537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	void __user *cfg_data;
228537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	void __user *cfg_cmd;
229537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
230537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
231537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_reg_rw_info {
232537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t reg_offset;
233537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t cmd_data_offset;
234537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t len;
235537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
236537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
237537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_reg_mask_info {
238537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t reg_offset;
239537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t mask;
240537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t val;
241537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
242537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
243537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_reg_dmi_info {
244537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t hi_tbl_offset; /*Optional*/
245537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t lo_tbl_offset; /*Required*/
246537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t len;
247537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
248537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
249537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_reg_cfg_cmd {
250537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
251537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_vfe_reg_rw_info rw_info;
252537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_vfe_reg_mask_info mask_info;
253537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_vfe_reg_dmi_info dmi_info;
254537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} u;
255537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
256537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_reg_cfg_type cmd_type;
257537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
258537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
259537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_isp_buf_type {
260537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_PRIVATE_BUF,
261537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_SHARE_BUF,
262537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MAX_ISP_BUF_TYPE,
263537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
264537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
265537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_isp_buf_request {
266537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t session_id;
267537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_id;
268537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t num_buf;
269537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t handle;
270537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_isp_buf_type buf_type;
271537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
272537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
273537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_isp_qbuf_info {
274537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t handle;
275537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int buf_idx;
276537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/*Only used for prepare buffer*/
277537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct v4l2_buffer buffer;
278537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/*Only used for diverted buffer*/
279537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t dirty_buf;
280537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
281537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
282537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_vfe_axi_src_state {
283537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_vfe_input_src input_src;
284537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t src_active;
285537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
286537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
287537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_isp_event_idx {
288537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_REG_UPDATE      = 0,
289537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_START_ACK       = 1,
290537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_STOP_ACK        = 2,
291537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_IRQ_VIOLATION   = 3,
292537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_WM_BUS_OVERFLOW = 4,
293537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_STATS_OVERFLOW  = 5,
294537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_CAMIF_ERROR     = 6,
295537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_SOF             = 7,
296537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_EOF             = 8,
297537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ISP_EVENT_MAX       = 9
298537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
299537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
300537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_OFFSET          8
301537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_BASE            (V4L2_EVENT_PRIVATE_START)
302537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_BUF_EVENT_BASE        (ISP_EVENT_BASE + (1 << ISP_EVENT_OFFSET))
303537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_STATS_EVENT_BASE      (ISP_EVENT_BASE + (2 << ISP_EVENT_OFFSET))
304537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_REG_UPDATE      (ISP_EVENT_BASE + ISP_REG_UPDATE)
305537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_START_ACK       (ISP_EVENT_BASE + ISP_START_ACK)
306537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_STOP_ACK        (ISP_EVENT_BASE + ISP_STOP_ACK)
307537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_IRQ_VIOLATION   (ISP_EVENT_BASE + ISP_IRQ_VIOLATION)
308537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_WM_BUS_OVERFLOW (ISP_EVENT_BASE + ISP_WM_BUS_OVERFLOW)
309537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_STATS_OVERFLOW  (ISP_EVENT_BASE + ISP_STATS_OVERFLOW)
310537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_CAMIF_ERROR     (ISP_EVENT_BASE + ISP_CAMIF_ERROR)
311537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_SOF             (ISP_EVENT_BASE + ISP_SOF)
312537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_EOF             (ISP_EVENT_BASE + ISP_EOF)
313537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_BUF_DIVERT      (ISP_BUF_EVENT_BASE)
314537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_STATS_NOTIFY    (ISP_STATS_EVENT_BASE)
315537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define ISP_EVENT_COMP_STATS_NOTIFY (ISP_EVENT_STATS_NOTIFY + MSM_ISP_STATS_MAX)
316537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani/* The msm_v4l2_event_data structure should match the
317537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani * v4l2_event.u.data field.
318537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani * should not exceed 64 bytes */
319537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
320537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_isp_buf_event {
321537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t session_id;
322537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_id;
323537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t handle;
324537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int8_t buf_idx;
325537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
326537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_isp_stats_event {
327537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stats_mask;                        /* 4 bytes */
328537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t stats_buf_idxs[MSM_ISP_STATS_MAX];  /* 11 bytes */
329537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
330537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
331537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_isp_stream_ack {
332537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t session_id;
333537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t stream_id;
334537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t handle;
335537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
336537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
337537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_isp_event_data {
338537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/*Wall clock except for buffer divert events
339537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	 *which use monotonic clock
340537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	 */
341537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct timeval timestamp;
3424071280488d3a261c39278b404aacc8701daef3eBongkyu Kim	/* Monotonic timestamp since bootup */
3434071280488d3a261c39278b404aacc8701daef3eBongkyu Kim	struct timeval mono_timestamp;
344537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/* if pix is a src frame_id is from camif */
345537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t frame_id;
346537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
347537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		/* START_ACK, STOP_ACK */
348537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_isp_stream_ack stream_ack;
349537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		/* REG_UPDATE_TRIGGER, bus over flow */
350537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		enum msm_vfe_input_src input_src;
351537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		/* stats notify */
352537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_isp_stats_event stats;
353537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		/* IRQ_VIOLATION, STATS_OVER_FLOW, WM_OVER_FLOW */
354537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		uint32_t irq_status_mask;
355537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_isp_buf_event buf_done;
356537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} u; /* union can have max 52 bytes */
357537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
358537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
359537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QBGGR8  v4l2_fourcc('Q', 'B', 'G', '8')
360537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QGBRG8  v4l2_fourcc('Q', 'G', 'B', '8')
361537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QGRBG8  v4l2_fourcc('Q', 'G', 'R', '8')
362537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QRGGB8  v4l2_fourcc('Q', 'R', 'G', '8')
363537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QBGGR10 v4l2_fourcc('Q', 'B', 'G', '0')
364537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QGBRG10 v4l2_fourcc('Q', 'G', 'B', '0')
365537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QGRBG10 v4l2_fourcc('Q', 'G', 'R', '0')
366537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QRGGB10 v4l2_fourcc('Q', 'R', 'G', '0')
367537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QBGGR12 v4l2_fourcc('Q', 'B', 'G', '2')
368537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QGBRG12 v4l2_fourcc('Q', 'G', 'B', '2')
369537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QGRBG12 v4l2_fourcc('Q', 'G', 'R', '2')
370537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define V4L2_PIX_FMT_QRGGB12 v4l2_fourcc('Q', 'R', 'G', '2')
371537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
372537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_VFE_REG_CFG \
373537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_vfe_cfg_cmd2)
374537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
375537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_REQUEST_BUF \
376537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+1, struct msm_isp_buf_request)
377537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
378537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_ENQUEUE_BUF \
379537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+2, struct msm_isp_qbuf_info)
380537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
381537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_RELEASE_BUF \
382537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+3, struct msm_isp_buf_request)
383537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
384537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_REQUEST_STREAM \
385537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+4, struct msm_vfe_axi_stream_request_cmd)
386537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
387537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_CFG_STREAM \
388537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+5, struct msm_vfe_axi_stream_cfg_cmd)
389537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
390537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_RELEASE_STREAM \
391537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+6, struct msm_vfe_axi_stream_release_cmd)
392537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
393537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_INPUT_CFG \
394537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+7, struct msm_vfe_input_cfg)
395537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
396537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_SET_SRC_STATE \
397537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+8, struct msm_vfe_axi_src_state)
398537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
399537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_REQUEST_STATS_STREAM \
400537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+9, \
401537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_vfe_stats_stream_request_cmd)
402537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
403537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_CFG_STATS_STREAM \
404537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+10, struct msm_vfe_stats_stream_cfg_cmd)
405537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
406537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_RELEASE_STATS_STREAM \
407537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+11, \
408537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_vfe_stats_stream_release_cmd)
409537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
410537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISP_UPDATE_STREAM \
411537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE+13, struct msm_vfe_axi_stream_update_cmd)
412537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
413537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#endif /* __MSMB_ISP__ */
414