1537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#ifndef MSM_CAM_ISPIF_H 2537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_CAM_ISPIF_H 3537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 47a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim#define CSID_VERSION_V20 0x02000011 57a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim#define CSID_VERSION_V22 0x02001000 67a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim#define CSID_VERSION_V30 0x30000000 77a90a415fdbdc9397677f6339f0c2fb402dcae29Devin Kim#define CSID_VERSION_V3 0x30000000 8537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 9537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_ispif_vfe_intf { 10537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VFE0, 11537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VFE1, 12537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VFE_MAX 13537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 14537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VFE0_MASK (1 << VFE0) 15537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VFE1_MASK (1 << VFE1) 16537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 17537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_ispif_intftype { 18537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani PIX0, 19537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani RDI0, 20537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani PIX1, 21537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani RDI1, 22537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani RDI2, 23537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani INTF_MAX 24537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 25537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_PARAM_ENTRIES (INTF_MAX * 2) 26537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 27537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define PIX0_MASK (1 << PIX0) 28537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define PIX1_MASK (1 << PIX1) 29537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define RDI0_MASK (1 << RDI0) 30537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define RDI1_MASK (1 << RDI1) 31537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define RDI2_MASK (1 << RDI2) 32537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 33537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 34537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_ispif_vc { 35537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VC0, 36537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VC1, 37537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VC2, 38537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VC3, 39537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani VC_MAX 40537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 41537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 42537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_ispif_cid { 43537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID0, 44537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID1, 45537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID2, 46537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID3, 47537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID4, 48537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID5, 49537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID6, 50537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID7, 51537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID8, 52537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID9, 53537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID10, 54537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID11, 55537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID12, 56537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID13, 57537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID14, 58537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID15, 59537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CID_MAX 60537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 61537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 62537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_ispif_csid { 63537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID0, 64537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID1, 65537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID2, 66537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID3, 67537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani CSID_MAX 68537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 69537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 70537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_ispif_params_entry { 71537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_ispif_vfe_intf vfe_intf; 72537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_ispif_intftype intftype; 73537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int num_cids; 74537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_ispif_cid cids[3]; 75537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum msm_ispif_csid csid; 76537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int crop_enable; 77537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t crop_start_pixel; 78537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint16_t crop_end_pixel; 79537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 80537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 81537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_ispif_param_data { 82537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t num; 83537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_ispif_params_entry entries[MAX_PARAM_ENTRIES]; 84537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 85537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 86537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_isp_info { 87537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t max_resolution; 88537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t id; 89537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t ver; 90537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 91537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 92537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_ispif_vfe_info { 93537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int num_vfe; 94537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_isp_info info[VFE_MAX]; 95537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 96537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 97537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum ispif_cfg_type_t { 98537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_CLK_ENABLE, 99537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_CLK_DISABLE, 100537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_INIT, 101537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_CFG, 102537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_START_FRAME_BOUNDARY, 103537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_STOP_FRAME_BOUNDARY, 104537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_STOP_IMMEDIATELY, 105537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_RELEASE, 106537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_ENABLE_REG_DUMP, 107537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani ISPIF_SET_VFE_INFO, 108537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 109537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 110537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct ispif_cfg_data { 111537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani enum ispif_cfg_type_t cfg_type; 112537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani union { 113537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani int reg_dump; /* ISPIF_ENABLE_REG_DUMP */ 114537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani uint32_t csid_version; /* ISPIF_INIT */ 115537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_ispif_vfe_info vfe_info; /* ISPIF_SET_VFE_INFO */ 116537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani struct msm_ispif_param_data params; /* CFG, START, STOP */ 117537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani }; 118537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani}; 119537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 120537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ISPIF_CFG \ 121537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani _IOWR('V', BASE_VIDIOC_PRIVATE, struct ispif_cfg_data) 122537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani 123537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#endif /* MSM_CAM_ISPIF_H */ 124