123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #ifndef __UAPI_CAM_FD_H__
- #define __UAPI_CAM_FD_H__
- #include "cam_defs.h"
- #define CAM_FD_MAX_FACES 35
- #define CAM_FD_RAW_RESULT_ENTRIES 512
- /* FD Op Codes */
- #define CAM_PACKET_OPCODES_FD_FRAME_UPDATE 0x0
- /* FD Command Buffer identifiers */
- #define CAM_FD_CMD_BUFFER_ID_GENERIC 0x0
- #define CAM_FD_CMD_BUFFER_ID_CDM 0x1
- #define CAM_FD_CMD_BUFFER_ID_MAX 0x2
- /* FD Blob types */
- #define CAM_FD_BLOB_TYPE_SOC_CLOCK_BW_REQUEST 0x0
- #define CAM_FD_BLOB_TYPE_RAW_RESULTS_REQUIRED 0x1
- /* FD Resource IDs */
- #define CAM_FD_INPUT_PORT_ID_IMAGE 0x0
- #define CAM_FD_INPUT_PORT_ID_MAX 0x1
- #define CAM_FD_OUTPUT_PORT_ID_RESULTS 0x0
- #define CAM_FD_OUTPUT_PORT_ID_RAW_RESULTS 0x1
- #define CAM_FD_OUTPUT_PORT_ID_WORK_BUFFER 0x2
- #define CAM_FD_OUTPUT_PORT_ID_MAX 0x3
- /**
- * struct cam_fd_soc_clock_bw_request - SOC clock, bandwidth request info
- *
- * @clock_rate : Clock rate required while processing frame
- * @bandwidth : Bandwidth required while processing frame
- * @reserved : Reserved for future use
- */
- struct cam_fd_soc_clock_bw_request {
- uint64_t clock_rate;
- uint64_t bandwidth;
- uint64_t reserved[4];
- };
- /**
- * struct cam_fd_face - Face properties
- *
- * @prop1 : Property 1 of face
- * @prop2 : Property 2 of face
- * @prop3 : Property 3 of face
- * @prop4 : Property 4 of face
- *
- * Do not change this layout, this is inline with how HW writes
- * these values directly when the buffer is programmed to HW
- */
- struct cam_fd_face {
- uint32_t prop1;
- uint32_t prop2;
- uint32_t prop3;
- uint32_t prop4;
- };
- /**
- * struct cam_fd_results - FD results layout
- *
- * @faces : Array of faces with face properties
- * @face_count : Number of faces detected
- * @reserved : Reserved for alignment
- *
- * Do not change this layout, this is inline with how HW writes
- * these values directly when the buffer is programmed to HW
- */
- struct cam_fd_results {
- struct cam_fd_face faces[CAM_FD_MAX_FACES];
- uint32_t face_count;
- uint32_t reserved[3];
- };
- /**
- * struct cam_fd_hw_caps - Face properties
- *
- * @core_version : FD core version
- * @wrapper_version : FD wrapper version
- * @raw_results_available : Whether raw results are available on this HW
- * @supported_modes : Modes supported by this HW.
- * @reserved : Reserved for future use
- */
- struct cam_fd_hw_caps {
- struct cam_hw_version core_version;
- struct cam_hw_version wrapper_version;
- uint32_t raw_results_available;
- uint32_t supported_modes;
- uint64_t reserved;
- };
- /**
- * struct cam_fd_query_cap_cmd - FD Query capabilities information
- *
- * @device_iommu : FD IOMMU handles
- * @cdm_iommu : CDM iommu handles
- * @hw_caps : FD HW capabilities
- * @reserved : Reserved for alignment
- */
- struct cam_fd_query_cap_cmd {
- struct cam_iommu_handle device_iommu;
- struct cam_iommu_handle cdm_iommu;
- struct cam_fd_hw_caps hw_caps;
- uint64_t reserved;
- };
- /**
- * struct cam_fd_acquire_dev_info - FD acquire device information
- *
- * @clk_bw_request : SOC clock, bandwidth request
- * @priority : Priority for this acquire
- * @mode : Mode in which to run FD HW.
- * @get_raw_results : Whether this acquire needs face raw results
- * while frame processing
- * @reserved : Reserved field for 64 bit alignment
- */
- struct cam_fd_acquire_dev_info {
- struct cam_fd_soc_clock_bw_request clk_bw_request;
- uint32_t priority;
- uint32_t mode;
- uint32_t get_raw_results;
- uint32_t reserved[13];
- };
- #endif /* __UAPI_CAM_FD_H__ */
|