• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef __UAPI_CAM_ICP_H__
2 #define __UAPI_CAM_ICP_H__
3 
4 #include "cam_defs.h"
5 
6 #define CAM_ICP_DEV_TYPE_A5      1
7 #define CAM_ICP_DEV_TYPE_IPE     2
8 #define CAM_ICP_DEV_TYPE_BPS     3
9 #define CAM_ICP_DEV_TYPE_IPE_CDM 4
10 #define CAM_ICP_DEV_TYPE_BPS_CDM 5
11 #define CAM_ICP_DEV_TYPE_MAX     5
12 
13 #define CAM_ICP_RES_TYPE_BPS        1
14 #define CAM_ICP_RES_TYPE_IPE_RT     2
15 #define CAM_ICP_RES_TYPE_IPE        3
16 #define CAM_ICP_RES_TYPE_MAX        4
17 
18 #define CAM_ICP_OPCODE_IPE_UPDATE   0
19 #define CAM_ICP_OPCODE_BPS_UPDATE   1
20 #define CAM_ICP_OPCODE_IPE_SETTINGS 2
21 #define CAM_ICP_OPCODE_BPS_SETTINGS 3
22 
23 
24 #define CAM_ICP_IPE_INPUT_IMAGE_FULL            0x0
25 #define CAM_ICP_IPE_INPUT_IMAGE_DS4             0x1
26 #define CAM_ICP_IPE_INPUT_IMAGE_DS16            0x2
27 #define CAM_ICP_IPE_INPUT_IMAGE_DS64            0x3
28 #define CAM_ICP_IPE_INPUT_IMAGE_FULL_REF        0x4
29 #define CAM_ICP_IPE_INPUT_IMAGE_DS4_REF         0x5
30 #define CAM_ICP_IPE_INPUT_IMAGE_DS16_REF        0x6
31 #define CAM_ICP_IPE_INPUT_IMAGE_DS64_REF        0x7
32 
33 #define CAM_ICP_IPE_OUTPUT_IMAGE_DISPLAY        0x8
34 #define CAM_ICP_IPE_OUTPUT_IMAGE_VIDEO          0x9
35 #define CAM_ICP_IPE_OUTPUT_IMAGE_FULL_REF       0xA
36 #define CAM_ICP_IPE_OUTPUT_IMAGE_DS4_REF        0xB
37 #define CAM_ICP_IPE_OUTPUT_IMAGE_DS16_REF       0xC
38 #define CAM_ICP_IPE_OUTPUT_IMAGE_DS64_REF       0xD
39 
40 #define CAM_ICP_IPE_IMAGE_MAX                   0xE
41 
42 #define CAM_ICP_BPS_INPUT_IMAGE                 0x0
43 
44 #define CAM_ICP_BPS_OUTPUT_IMAGE_FULL           0x1
45 #define CAM_ICP_BPS_OUTPUT_IMAGE_DS4            0x2
46 #define CAM_ICP_BPS_OUTPUT_IMAGE_DS16           0x3
47 #define CAM_ICP_BPS_OUTPUT_IMAGE_DS64           0x4
48 #define CAM_ICP_BPS_OUTPUT_IMAGE_STATS_BG       0x5
49 #define CAM_ICP_BPS_OUTPUT_IMAGE_STATS_BHIST    0x6
50 #define CAM_ICP_BPS_OUTPUT_IMAGE_REG1           0x7
51 #define CAM_ICP_BPS_OUTPUT_IMAGE_REG2           0x8
52 
53 #define CAM_ICP_BPS_IO_IMAGES_MAX               0x9
54 
55 #define CAM_ICP_CMD_META_GENERIC_BLOB           0x1
56 
57 #define CAM_ICP_CMD_GENERIC_BLOB_CLK            0x1
58 #define CAM_ICP_CMD_GENERIC_BLOB_CFG_IO         0x2
59 #define CAM_ICP_CMD_GENERIC_BLOB_FW_MEM_MAP     0x3
60 #define CAM_ICP_CMD_GENERIC_BLOB_FW_MEM_UNMAP   0x4
61 
62 #ifdef CONFIG_BOARD_SUNFISH
63 
64 #include "cam_cpas.h"
65 
66 #define CAM_ICP_CMD_GENERIC_BLOB_CLK_V2         0x5
67 
68 struct cam_icp_clk_bw_request_v2 {
69        uint64_t                          budget_ns;
70        uint32_t                          frame_cycles;
71        uint32_t                          rt_flag;
72        uint32_t                          reserved;
73        uint32_t                          num_paths;
74        struct cam_axi_per_path_bw_vote   axi_path[1];
75 };
76 
77 #endif /*CONFIG_BOARD_SUNFISH*/
78 
79 struct cam_icp_clk_bw_request {
80 	uint64_t budget_ns;
81 	uint32_t frame_cycles;
82 	uint32_t rt_flag;
83 	uint64_t uncompressed_bw;
84 	uint64_t compressed_bw;
85 };
86 
87 struct cam_icp_dev_ver {
88 	uint32_t dev_type;
89 	uint32_t reserved;
90 	struct cam_hw_version hw_ver;
91 };
92 
93 struct cam_icp_ver {
94 	uint32_t major;
95 	uint32_t minor;
96 	uint32_t revision;
97 	uint32_t reserved;
98 };
99 
100 struct cam_icp_query_cap_cmd {
101 	struct cam_iommu_handle dev_iommu_handle;
102 	struct cam_iommu_handle cdm_iommu_handle;
103 	struct cam_icp_ver fw_version;
104 	struct cam_icp_ver api_version;
105 	uint32_t num_ipe;
106 	uint32_t num_bps;
107 	struct cam_icp_dev_ver dev_ver[CAM_ICP_DEV_TYPE_MAX];
108 };
109 
110 struct cam_icp_res_info {
111 	uint32_t format;
112 	uint32_t width;
113 	uint32_t height;
114 	uint32_t fps;
115 };
116 
117 struct cam_icp_acquire_dev_info {
118 	uint32_t scratch_mem_size;
119 	uint32_t dev_type;
120 	uint32_t io_config_cmd_size;
121 	int32_t  io_config_cmd_handle;
122 	uint32_t secure_mode;
123 	int32_t chain_info;
124 	struct cam_icp_res_info in_res;
125 	uint32_t num_out_res;
126 	struct cam_icp_res_info out_res[1];
127 } __attribute__((__packed__));
128 
129 #endif /* __UAPI_CAM_ICP_H__ */
130