You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					180 lines
				
				5.3 KiB
			
		
		
			
		
	
	
					180 lines
				
				5.3 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								#ifndef __UAPI_CAM_ICP_H__
							 | 
						||
| 
								 | 
							
								#define __UAPI_CAM_ICP_H__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "cam_defs.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* icp, ipe, bps, cdm(ipe/bps) are used in querycap */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_DEV_TYPE_A5      1
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_DEV_TYPE_IPE     2
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_DEV_TYPE_BPS     3
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_DEV_TYPE_IPE_CDM 4
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_DEV_TYPE_BPS_CDM 5
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_DEV_TYPE_MAX     5
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* definitions needed for icp aquire device */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_RES_TYPE_BPS        1
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_RES_TYPE_IPE_RT     2
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_RES_TYPE_IPE        3
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_RES_TYPE_MAX        4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* packet opcode types */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_OPCODE_IPE_UPDATE 0
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_OPCODE_BPS_UPDATE 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* IPE input port resource type */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_FULL            0x0
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_DS4             0x1
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_DS16            0x2
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_DS64            0x3
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_FULL_REF        0x4
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_DS4_REF         0x5
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_DS16_REF        0x6
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_INPUT_IMAGE_DS64_REF        0x7
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* IPE output port resource type */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_OUTPUT_IMAGE_DISPLAY        0x8
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_OUTPUT_IMAGE_VIDEO          0x9
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_OUTPUT_IMAGE_FULL_REF       0xA
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_OUTPUT_IMAGE_DS4_REF        0xB
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_OUTPUT_IMAGE_DS16_REF       0xC
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_OUTPUT_IMAGE_DS64_REF       0xD
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_IPE_IMAGE_MAX                   0xE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* BPS input port resource type */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_INPUT_IMAGE                 0x0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* BPS output port resource type */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_FULL           0x1
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_DS4            0x2
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_DS16           0x3
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_DS64           0x4
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_STATS_BG       0x5
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_STATS_BHIST    0x6
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_REG1           0x7
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_OUTPUT_IMAGE_REG2           0x8
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_BPS_IO_IMAGES_MAX               0x9
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Command meta types */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_CMD_META_GENERIC_BLOB           0x1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Generic blob types */
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_CMD_GENERIC_BLOB_CLK            0x1
							 | 
						||
| 
								 | 
							
								#define CAM_ICP_CMD_GENERIC_BLOB_CFG_IO         0x2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_icp_clk_bw_request
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @budget_ns: Time required to process frame
							 | 
						||
| 
								 | 
							
								 * @frame_cycles: Frame cycles needed to process the frame
							 | 
						||
| 
								 | 
							
								 * @rt_flag: Flag to indicate real time stream
							 | 
						||
| 
								 | 
							
								 * @uncompressed_bw: Bandwidth required to process frame
							 | 
						||
| 
								 | 
							
								 * @compressed_bw: Compressed bandwidth to process frame
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_icp_clk_bw_request {
							 | 
						||
| 
								 | 
							
									uint64_t budget_ns;
							 | 
						||
| 
								 | 
							
									uint32_t frame_cycles;
							 | 
						||
| 
								 | 
							
									uint32_t rt_flag;
							 | 
						||
| 
								 | 
							
									uint64_t uncompressed_bw;
							 | 
						||
| 
								 | 
							
									uint64_t compressed_bw;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_icp_dev_ver - Device information for particular hw type
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This is used to get device version info of
							 | 
						||
| 
								 | 
							
								 * ICP, IPE, BPS and CDM related IPE and BPS from firmware
							 | 
						||
| 
								 | 
							
								 * and use this info in CAM_QUERY_CAP IOCTL
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @dev_type: hardware type for the cap info(icp, ipe, bps, cdm(ipe/bps))
							 | 
						||
| 
								 | 
							
								 * @reserved: reserved field
							 | 
						||
| 
								 | 
							
								 * @hw_ver: major, minor and incr values of a device version
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_icp_dev_ver {
							 | 
						||
| 
								 | 
							
									uint32_t dev_type;
							 | 
						||
| 
								 | 
							
									uint32_t reserved;
							 | 
						||
| 
								 | 
							
									struct cam_hw_version hw_ver;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_icp_ver - ICP version info
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This strcuture is used for fw and api version
							 | 
						||
| 
								 | 
							
								 * this is used to get firmware version and api version from firmware
							 | 
						||
| 
								 | 
							
								 * and use this info in CAM_QUERY_CAP IOCTL
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @major: FW version major
							 | 
						||
| 
								 | 
							
								 * @minor: FW version minor
							 | 
						||
| 
								 | 
							
								 * @revision: FW version increment
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_icp_ver {
							 | 
						||
| 
								 | 
							
									uint32_t major;
							 | 
						||
| 
								 | 
							
									uint32_t minor;
							 | 
						||
| 
								 | 
							
									uint32_t revision;
							 | 
						||
| 
								 | 
							
									uint32_t reserved;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_icp_query_cap_cmd - ICP query device capability payload
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @dev_iommu_handle: icp iommu handles for secure/non secure modes
							 | 
						||
| 
								 | 
							
								 * @cdm_iommu_handle: iommu handles for secure/non secure modes
							 | 
						||
| 
								 | 
							
								 * @fw_version: firmware version info
							 | 
						||
| 
								 | 
							
								 * @api_version: api version info
							 | 
						||
| 
								 | 
							
								 * @num_ipe: number of ipes
							 | 
						||
| 
								 | 
							
								 * @num_bps: number of bps
							 | 
						||
| 
								 | 
							
								 * @dev_ver: returned device capability array
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_icp_query_cap_cmd {
							 | 
						||
| 
								 | 
							
									struct cam_iommu_handle dev_iommu_handle;
							 | 
						||
| 
								 | 
							
									struct cam_iommu_handle cdm_iommu_handle;
							 | 
						||
| 
								 | 
							
									struct cam_icp_ver fw_version;
							 | 
						||
| 
								 | 
							
									struct cam_icp_ver api_version;
							 | 
						||
| 
								 | 
							
									uint32_t num_ipe;
							 | 
						||
| 
								 | 
							
									uint32_t num_bps;
							 | 
						||
| 
								 | 
							
									struct cam_icp_dev_ver dev_ver[CAM_ICP_DEV_TYPE_MAX];
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_icp_res_info - ICP output resource info
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @format: format of the resource
							 | 
						||
| 
								 | 
							
								 * @width:  width in pixels
							 | 
						||
| 
								 | 
							
								 * @height: height in lines
							 | 
						||
| 
								 | 
							
								 * @fps:  fps
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_icp_res_info {
							 | 
						||
| 
								 | 
							
									uint32_t format;
							 | 
						||
| 
								 | 
							
									uint32_t width;
							 | 
						||
| 
								 | 
							
									uint32_t height;
							 | 
						||
| 
								 | 
							
									uint32_t fps;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_icp_acquire_dev_info - An ICP device info
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @scratch_mem_size: Output param - size of scratch memory
							 | 
						||
| 
								 | 
							
								 * @dev_type: device type (IPE_RT/IPE_NON_RT/BPS)
							 | 
						||
| 
								 | 
							
								 * @io_config_cmd_size: size of IO config command
							 | 
						||
| 
								 | 
							
								 * @io_config_cmd_handle: IO config command for each acquire
							 | 
						||
| 
								 | 
							
								 * @secure_mode: camera mode (secure/non secure)
							 | 
						||
| 
								 | 
							
								 * @chain_info: chaining info of FW device handles
							 | 
						||
| 
								 | 
							
								 * @in_res: resource info used for clock and bandwidth calculation
							 | 
						||
| 
								 | 
							
								 * @num_out_res: number of output resources
							 | 
						||
| 
								 | 
							
								 * @out_res: output resource
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_icp_acquire_dev_info {
							 | 
						||
| 
								 | 
							
									uint32_t scratch_mem_size;
							 | 
						||
| 
								 | 
							
									uint32_t dev_type;
							 | 
						||
| 
								 | 
							
									uint32_t io_config_cmd_size;
							 | 
						||
| 
								 | 
							
									int32_t  io_config_cmd_handle;
							 | 
						||
| 
								 | 
							
									uint32_t secure_mode;
							 | 
						||
| 
								 | 
							
									int32_t chain_info;
							 | 
						||
| 
								 | 
							
									struct cam_icp_res_info in_res;
							 | 
						||
| 
								 | 
							
									uint32_t num_out_res;
							 | 
						||
| 
								 | 
							
									struct cam_icp_res_info out_res[1];
							 | 
						||
| 
								 | 
							
								} __attribute__((__packed__));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* __UAPI_CAM_ICP_H__ */
							 |