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