blob: fc27ef6c2b9de4dd32d2312507876e839490f07f [file] [log] [blame]
Kevin Chan1d5fd4a2013-01-11 14:08:14 -08001#ifndef MSM_CAM_ISPIF_H
2#define MSM_CAM_ISPIF_H
3
4#define CSID_VERSION_V2 0x02000011
5#define CSID_VERSION_V3 0x30000000
6
7enum msm_ispif_vfe_intf {
8 VFE0,
9 VFE1,
10 VFE_MAX
11};
12#define VFE0_MASK (1 << VFE0)
13#define VFE1_MASK (1 << VFE1)
14
15enum msm_ispif_intftype {
16 PIX0,
17 RDI0,
18 PIX1,
19 RDI1,
20 RDI2,
21 INTF_MAX
22};
23#define PIX0_MASK (1 << PIX0)
24#define PIX1_MASK (1 << PIX1)
25#define RDI0_MASK (1 << RDI0)
26#define RDI1_MASK (1 << RDI1)
27#define RDI2_MASK (1 << RDI2)
28
29
30enum msm_ispif_vc {
31 VC0,
32 VC1,
33 VC2,
34 VC3,
35 VC_MAX
36};
37
38enum msm_ispif_cid {
39 CID0,
40 CID1,
41 CID2,
42 CID3,
43 CID4,
44 CID5,
45 CID6,
46 CID7,
47 CID8,
48 CID9,
49 CID10,
50 CID11,
51 CID12,
52 CID13,
53 CID14,
54 CID15,
55 CID_MAX
56};
57
58enum msm_ispif_csid {
59 CSID0,
60 CSID1,
61 CSID2,
62 CSID3,
63 CSID_MAX
64};
65
66struct msm_ispif_params_entry {
67 enum msm_ispif_intftype intftype;
68 int num_cids;
69 enum msm_ispif_cid cids[3];
70 enum msm_ispif_csid csid;
71};
72
73struct msm_ispif_param_data {
74 enum msm_ispif_vfe_intf vfe_intf;
75 uint32_t num;
76 struct msm_ispif_params_entry entries[INTF_MAX];
77};
78
79enum ispif_cfg_type_t {
80 ISPIF_CLK_ENABLE,
81 ISPIF_CLK_DISABLE,
82 ISPIF_INIT,
83 ISPIF_CFG,
84 ISPIF_START_FRAME_BOUNDARY,
85 ISPIF_STOP_FRAME_BOUNDARY,
86 ISPIF_STOP_IMMEDIATELY,
87 ISPIF_RELEASE,
88 ISPIF_ENABLE_REG_DUMP,
89};
90
91struct ispif_cfg_data {
92 enum ispif_cfg_type_t cfg_type;
93 union {
94 int reg_dump; /* ISPIF_ENABLE_REG_DUMP */
95 uint32_t csid_version; /* ISPIF_INIT */
96 struct msm_ispif_param_data params; /* CFG, START, STOP */
97 };
98};
99
100#define VIDIOC_MSM_ISPIF_CFG \
101 _IOWR('V', BASE_VIDIOC_PRIVATE, struct ispif_cfg_data)
102
103#endif /* MSM_CAM_ISPIF_H */