1 #ifndef UAPI_MSMB_ISPIF_H
2 #define UAPI_MSMB_ISPIF_H
3 
4 #include <linux/types.h>
5 #include <linux/ioctl.h>
6 #include <linux/videodev2.h>
7 
8 #define CSID_VERSION_V20                      0x02000011
9 #define CSID_VERSION_V22                      0x02001000
10 #define CSID_VERSION_V30                      0x30000000
11 #define CSID_VERSION_V3                      0x30000000
12 
13 enum msm_ispif_vfe_intf {
14 	VFE0,
15 	VFE1,
16 	VFE_MAX
17 };
18 #define VFE0_MASK    (1 << VFE0)
19 #define VFE1_MASK    (1 << VFE1)
20 
21 enum msm_ispif_intftype {
22 	PIX0,
23 	RDI0,
24 	PIX1,
25 	RDI1,
26 	RDI2,
27 	INTF_MAX
28 };
29 #define MAX_PARAM_ENTRIES (INTF_MAX * 2)
30 #define MAX_CID_CH	8
31 
32 #define PIX0_MASK (1 << PIX0)
33 #define PIX1_MASK (1 << PIX1)
34 #define RDI0_MASK (1 << RDI0)
35 #define RDI1_MASK (1 << RDI1)
36 #define RDI2_MASK (1 << RDI2)
37 
38 
39 enum msm_ispif_vc {
40 	VC0,
41 	VC1,
42 	VC2,
43 	VC3,
44 	VC_MAX
45 };
46 
47 enum msm_ispif_cid {
48 	CID0,
49 	CID1,
50 	CID2,
51 	CID3,
52 	CID4,
53 	CID5,
54 	CID6,
55 	CID7,
56 	CID8,
57 	CID9,
58 	CID10,
59 	CID11,
60 	CID12,
61 	CID13,
62 	CID14,
63 	CID15,
64 	CID_MAX
65 };
66 
67 enum msm_ispif_csid {
68 	CSID0,
69 	CSID1,
70 	CSID2,
71 	CSID3,
72 	CSID_MAX
73 };
74 
75 struct msm_ispif_params_entry {
76 	enum msm_ispif_vfe_intf vfe_intf;
77 	enum msm_ispif_intftype intftype;
78 	int num_cids;
79 	enum msm_ispif_cid cids[3];
80 	enum msm_ispif_csid csid;
81 	int crop_enable;
82 	uint16_t crop_start_pixel;
83 	uint16_t crop_end_pixel;
84 };
85 
86 struct msm_ispif_param_data {
87 	uint32_t num;
88 	struct msm_ispif_params_entry entries[MAX_PARAM_ENTRIES];
89 };
90 
91 struct msm_isp_info {
92 	uint32_t max_resolution;
93 	uint32_t id;
94 	uint32_t ver;
95 };
96 
97 struct msm_ispif_vfe_info {
98 	int num_vfe;
99 	struct msm_isp_info info[VFE_MAX];
100 };
101 
102 enum ispif_cfg_type_t {
103 	ISPIF_CLK_ENABLE,
104 	ISPIF_CLK_DISABLE,
105 	ISPIF_INIT,
106 	ISPIF_CFG,
107 	ISPIF_START_FRAME_BOUNDARY,
108 	ISPIF_RECONFIG,
109 	ISPIF_STOP_FRAME_BOUNDARY,
110 	ISPIF_STOP_IMMEDIATELY,
111 	ISPIF_RELEASE,
112 	ISPIF_ENABLE_REG_DUMP,
113 	ISPIF_SET_VFE_INFO,
114 };
115 
116 struct ispif_cfg_data {
117 	enum ispif_cfg_type_t cfg_type;
118 	union {
119 		int reg_dump;                        /* ISPIF_ENABLE_REG_DUMP */
120 		uint32_t csid_version;               /* ISPIF_INIT */
121 		struct msm_ispif_vfe_info vfe_info;  /* ISPIF_SET_VFE_INFO */
122 		struct msm_ispif_param_data params;  /* CFG, START, STOP */
123 	};
124 };
125 
126 #define VIDIOC_MSM_ISPIF_CFG \
127 	_IOWR('V', BASE_VIDIOC_PRIVATE, struct ispif_cfg_data)
128 
129 #endif
130 
131