13c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#ifndef MSM_CAM_ISPIF_H 23c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define MSM_CAM_ISPIF_H 33c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 43c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define CSID_VERSION_V20 0x02000011 53c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define CSID_VERSION_V22 0x02001000 63c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define CSID_VERSION_V30 0x30000000 73c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define CSID_VERSION_V3 0x30000000 83c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 93c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangenum msm_ispif_vfe_intf { 103c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VFE0, 113c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VFE1, 123c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VFE_MAX 133c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 143c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define VFE0_MASK (1 << VFE0) 153c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define VFE1_MASK (1 << VFE1) 163c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 173c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangenum msm_ispif_intftype { 183c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang PIX0, 193c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang RDI0, 203c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang PIX1, 213c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang RDI1, 223c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang RDI2, 233c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang INTF_MAX 243c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 253c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define MAX_PARAM_ENTRIES (INTF_MAX * 2) 263c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define MAX_CID_CH 8 273c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 283c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define PIX0_MASK (1 << PIX0) 293c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define PIX1_MASK (1 << PIX1) 303c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define RDI0_MASK (1 << RDI0) 313c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define RDI1_MASK (1 << RDI1) 323c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define RDI2_MASK (1 << RDI2) 333c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 343c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 353c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangenum msm_ispif_vc { 363c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VC0, 373c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VC1, 383c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VC2, 393c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VC3, 403c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang VC_MAX 413c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 423c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 433c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangenum msm_ispif_cid { 443c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID0, 453c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID1, 463c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID2, 473c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID3, 483c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID4, 493c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID5, 503c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID6, 513c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID7, 523c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID8, 533c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID9, 543c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID10, 553c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID11, 563c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID12, 573c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID13, 583c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID14, 593c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID15, 603c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CID_MAX 613c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 623c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 633c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangenum msm_ispif_csid { 643c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CSID0, 653c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CSID1, 663c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CSID2, 673c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CSID3, 683c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang CSID_MAX 693c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 703c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 713c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangstruct msm_ispif_params_entry { 723c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang enum msm_ispif_vfe_intf vfe_intf; 733c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang enum msm_ispif_intftype intftype; 743c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang int num_cids; 753c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang enum msm_ispif_cid cids[3]; 763c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang enum msm_ispif_csid csid; 773c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang int crop_enable; 783c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint16_t crop_start_pixel; 793c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint16_t crop_end_pixel; 803c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 813c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 823c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangstruct msm_ispif_param_data { 833c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t num; 843c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang struct msm_ispif_params_entry entries[MAX_PARAM_ENTRIES]; 853c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 863c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 873c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangstruct msm_isp_info { 883c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t max_resolution; 893c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t id; 903c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t ver; 913c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 923c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 933c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangstruct msm_ispif_vfe_info { 943c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang int num_vfe; 953c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang struct msm_isp_info info[VFE_MAX]; 963c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 973c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 983c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangenum ispif_cfg_type_t { 993c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_CLK_ENABLE, 1003c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_CLK_DISABLE, 1013c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_INIT, 1023c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_CFG, 1033c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_START_FRAME_BOUNDARY, 1043c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_STOP_FRAME_BOUNDARY, 1053c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_STOP_IMMEDIATELY, 1063c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_RELEASE, 1073c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_ENABLE_REG_DUMP, 1083c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang ISPIF_SET_VFE_INFO, 1093c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 1103c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 1113c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wangstruct ispif_cfg_data { 1123c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang enum ispif_cfg_type_t cfg_type; 1133c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang union { 1143c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang int reg_dump; /* ISPIF_ENABLE_REG_DUMP */ 1153c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang uint32_t csid_version; /* ISPIF_INIT */ 1163c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang struct msm_ispif_vfe_info vfe_info; /* ISPIF_SET_VFE_INFO */ 1173c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang struct msm_ispif_param_data params; /* CFG, START, STOP */ 1183c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang }; 1193c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang}; 1203c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 1213c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#define VIDIOC_MSM_ISPIF_CFG \ 1223c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang _IOWR('V', BASE_VIDIOC_PRIVATE, struct ispif_cfg_data) 1233c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang 1243c85dc9b54252007411d433390ad438d8c0cf36eShuzhen Wang#endif /* MSM_CAM_ISPIF_H */ 125