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.
		
		
		
		
			
				
					478 lines
				
				18 KiB
			
		
		
			
		
	
	
					478 lines
				
				18 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								#ifndef __UAPI_CAM_DEFS_H__
							 | 
						||
| 
								 | 
							
								#define __UAPI_CAM_DEFS_H__
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <linux/videodev2.h>
							 | 
						||
| 
								 | 
							
								#include <linux/types.h>
							 | 
						||
| 
								 | 
							
								#include <linux/ioctl.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera op codes */
							 | 
						||
| 
								 | 
							
								#define CAM_COMMON_OPCODE_BASE                  0x100
							 | 
						||
| 
								 | 
							
								#define CAM_QUERY_CAP                           (CAM_COMMON_OPCODE_BASE + 0x1)
							 | 
						||
| 
								 | 
							
								#define CAM_ACQUIRE_DEV                         (CAM_COMMON_OPCODE_BASE + 0x2)
							 | 
						||
| 
								 | 
							
								#define CAM_START_DEV                           (CAM_COMMON_OPCODE_BASE + 0x3)
							 | 
						||
| 
								 | 
							
								#define CAM_STOP_DEV                            (CAM_COMMON_OPCODE_BASE + 0x4)
							 | 
						||
| 
								 | 
							
								#define CAM_CONFIG_DEV                          (CAM_COMMON_OPCODE_BASE + 0x5)
							 | 
						||
| 
								 | 
							
								#define CAM_RELEASE_DEV                         (CAM_COMMON_OPCODE_BASE + 0x6)
							 | 
						||
| 
								 | 
							
								#define CAM_SD_SHUTDOWN                         (CAM_COMMON_OPCODE_BASE + 0x7)
							 | 
						||
| 
								 | 
							
								#define CAM_FLUSH_REQ                           (CAM_COMMON_OPCODE_BASE + 0x8)
							 | 
						||
| 
								 | 
							
								#define CAM_COMMON_OPCODE_MAX                   (CAM_COMMON_OPCODE_BASE + 0x9)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define CAM_EXT_OPCODE_BASE                     0x200
							 | 
						||
| 
								 | 
							
								#define CAM_CONFIG_DEV_EXTERNAL                 (CAM_EXT_OPCODE_BASE + 0x1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera handle type */
							 | 
						||
| 
								 | 
							
								#define CAM_HANDLE_USER_POINTER                 1
							 | 
						||
| 
								 | 
							
								#define CAM_HANDLE_MEM_HANDLE                   2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Generic Blob CmdBuffer header properties */
							 | 
						||
| 
								 | 
							
								#define CAM_GENERIC_BLOB_CMDBUFFER_SIZE_MASK    0xFFFFFF00
							 | 
						||
| 
								 | 
							
								#define CAM_GENERIC_BLOB_CMDBUFFER_SIZE_SHIFT   8
							 | 
						||
| 
								 | 
							
								#define CAM_GENERIC_BLOB_CMDBUFFER_TYPE_MASK    0xFF
							 | 
						||
| 
								 | 
							
								#define CAM_GENERIC_BLOB_CMDBUFFER_TYPE_SHIFT   0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Command Buffer Types */
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_DMI                     0x1
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_DMI16                   0x2
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_DMI32                   0x3
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_DMI64                   0x4
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_DIRECT                  0x5
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_INDIRECT                0x6
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_I2C                     0x7
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_FW                      0x8
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_GENERIC                 0x9
							 | 
						||
| 
								 | 
							
								#define CAM_CMD_BUF_LEGACY                  0xA
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * enum flush_type_t - Identifies the various flush types
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @CAM_FLUSH_TYPE_REQ:    Flush specific request
							 | 
						||
| 
								 | 
							
								 * @CAM_FLUSH_TYPE_ALL:    Flush all requests belonging to a context
							 | 
						||
| 
								 | 
							
								 * @CAM_FLUSH_TYPE_MAX:    Max enum to validate flush type
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								enum flush_type_t {
							 | 
						||
| 
								 | 
							
									CAM_FLUSH_TYPE_REQ,
							 | 
						||
| 
								 | 
							
									CAM_FLUSH_TYPE_ALL,
							 | 
						||
| 
								 | 
							
									CAM_FLUSH_TYPE_MAX
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_control - Structure used by ioctl control for camera
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @op_code:            This is the op code for camera control
							 | 
						||
| 
								 | 
							
								 * @size:               Control command size
							 | 
						||
| 
								 | 
							
								 * @handle_type:        User pointer or shared memory handle
							 | 
						||
| 
								 | 
							
								 * @reserved:           Reserved field for 64 bit alignment
							 | 
						||
| 
								 | 
							
								 * @handle:             Control command payload
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_control {
							 | 
						||
| 
								 | 
							
									uint32_t        op_code;
							 | 
						||
| 
								 | 
							
									uint32_t        size;
							 | 
						||
| 
								 | 
							
									uint32_t        handle_type;
							 | 
						||
| 
								 | 
							
									uint32_t        reserved;
							 | 
						||
| 
								 | 
							
									uint64_t        handle;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera IOCTL */
							 | 
						||
| 
								 | 
							
								#define VIDIOC_CAM_CONTROL \
							 | 
						||
| 
								 | 
							
									_IOWR('V', BASE_VIDIOC_PRIVATE, struct cam_control)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_hw_version - Structure for HW version of camera devices
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @major    : Hardware version major
							 | 
						||
| 
								 | 
							
								 * @minor    : Hardware version minor
							 | 
						||
| 
								 | 
							
								 * @incr     : Hardware version increment
							 | 
						||
| 
								 | 
							
								 * @reserved : Reserved for 64 bit aligngment
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_hw_version {
							 | 
						||
| 
								 | 
							
									uint32_t major;
							 | 
						||
| 
								 | 
							
									uint32_t minor;
							 | 
						||
| 
								 | 
							
									uint32_t incr;
							 | 
						||
| 
								 | 
							
									uint32_t reserved;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_iommu_handle - Structure for IOMMU handles of camera hw devices
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @non_secure: Device Non Secure IOMMU handle
							 | 
						||
| 
								 | 
							
								 * @secure:     Device Secure IOMMU handle
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_iommu_handle {
							 | 
						||
| 
								 | 
							
									int32_t non_secure;
							 | 
						||
| 
								 | 
							
									int32_t secure;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera secure mode */
							 | 
						||
| 
								 | 
							
								#define CAM_SECURE_MODE_NON_SECURE             0
							 | 
						||
| 
								 | 
							
								#define CAM_SECURE_MODE_SECURE                 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* Camera Format Type */
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_BASE                         0
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MIPI_RAW_6                   1
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MIPI_RAW_8                   2
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MIPI_RAW_10                  3
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MIPI_RAW_12                  4
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MIPI_RAW_14                  5
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MIPI_RAW_16                  6
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MIPI_RAW_20                  7
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_QTI_RAW_8                    8
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_QTI_RAW_10                   9
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_QTI_RAW_12                   10
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_QTI_RAW_14                   11
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN8                       12
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN16_8                    13
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN16_10                   14
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN16_12                   15
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN16_14                   16
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN16_16                   17
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN32_20                   18
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN64                      19
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN128                     20
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_ARGB                         21
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_ARGB_10                      22
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_ARGB_12                      23
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_ARGB_14                      24
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_DPCM_10_6_10                 25
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_DPCM_10_8_10                 26
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_DPCM_12_6_12                 27
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_DPCM_12_8_12                 28
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_DPCM_14_8_14                 29
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_DPCM_14_10_14                30
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_NV21                         31
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_NV12                         32
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_TP10                         33
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_YUV422                       34
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PD8                          35
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PD10                         36
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_UBWC_NV12                    37
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_UBWC_NV12_4R                 38
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_UBWC_TP10                    39
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_UBWC_P010                    40
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN8_SWAP                  41
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN8_10                    42
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_PLAIN8_10_SWAP               43
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_YV12                         44
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_Y_ONLY                       45
							 | 
						||
| 
								 | 
							
								#define CAM_FORMAT_MAX                          46
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera rotaion */
							 | 
						||
| 
								 | 
							
								#define CAM_ROTATE_CW_0_DEGREE                  0
							 | 
						||
| 
								 | 
							
								#define CAM_ROTATE_CW_90_DEGREE                 1
							 | 
						||
| 
								 | 
							
								#define CAM_RORATE_CW_180_DEGREE                2
							 | 
						||
| 
								 | 
							
								#define CAM_ROTATE_CW_270_DEGREE                3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera Color Space */
							 | 
						||
| 
								 | 
							
								#define CAM_COLOR_SPACE_BASE                    0
							 | 
						||
| 
								 | 
							
								#define CAM_COLOR_SPACE_BT601_FULL              1
							 | 
						||
| 
								 | 
							
								#define CAM_COLOR_SPACE_BT601625                2
							 | 
						||
| 
								 | 
							
								#define CAM_COLOR_SPACE_BT601525                3
							 | 
						||
| 
								 | 
							
								#define CAM_COLOR_SPACE_BT709                   4
							 | 
						||
| 
								 | 
							
								#define CAM_COLOR_SPACE_DEPTH                   5
							 | 
						||
| 
								 | 
							
								#define CAM_COLOR_SPACE_MAX                     6
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera buffer direction */
							 | 
						||
| 
								 | 
							
								#define CAM_BUF_INPUT                           1
							 | 
						||
| 
								 | 
							
								#define CAM_BUF_OUTPUT                          2
							 | 
						||
| 
								 | 
							
								#define CAM_BUF_IN_OUT                          3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* camera packet device Type */
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_BASE                     0
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_IMG_SENSOR               1
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_ACTUATOR                 2
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_COMPANION                3
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_EEPOM                    4
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_CSIPHY                   5
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_OIS                      6
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_FLASH                    7
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_FD                       8
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_JPEG_ENC                 9
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_JPEG_DEC                 10
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_VFE                      11
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_CPP                      12
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_CSID                     13
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_ISPIF                    14
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_IFE                      15
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_ICP                      16
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_LRME                     17
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_DEV_MAX                      18
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* constants */
							 | 
						||
| 
								 | 
							
								#define CAM_PACKET_MAX_PLANES                   3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_plane_cfg - Plane configuration info
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @width:                      Plane width in pixels
							 | 
						||
| 
								 | 
							
								 * @height:                     Plane height in lines
							 | 
						||
| 
								 | 
							
								 * @plane_stride:               Plane stride in pixel
							 | 
						||
| 
								 | 
							
								 * @slice_height:               Slice height in line (not used by ISP)
							 | 
						||
| 
								 | 
							
								 * @meta_stride:                UBWC metadata stride
							 | 
						||
| 
								 | 
							
								 * @meta_size:                  UBWC metadata plane size
							 | 
						||
| 
								 | 
							
								 * @meta_offset:                UBWC metadata offset
							 | 
						||
| 
								 | 
							
								 * @packer_config:              UBWC packer config
							 | 
						||
| 
								 | 
							
								 * @mode_config:                UBWC mode config
							 | 
						||
| 
								 | 
							
								 * @tile_config:                UBWC tile config
							 | 
						||
| 
								 | 
							
								 * @h_init:                     UBWC horizontal initial coordinate in pixels
							 | 
						||
| 
								 | 
							
								 * @v_init:                     UBWC vertical initial coordinate in lines
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_plane_cfg {
							 | 
						||
| 
								 | 
							
									uint32_t                width;
							 | 
						||
| 
								 | 
							
									uint32_t                height;
							 | 
						||
| 
								 | 
							
									uint32_t                plane_stride;
							 | 
						||
| 
								 | 
							
									uint32_t                slice_height;
							 | 
						||
| 
								 | 
							
									uint32_t                meta_stride;
							 | 
						||
| 
								 | 
							
									uint32_t                meta_size;
							 | 
						||
| 
								 | 
							
									uint32_t                meta_offset;
							 | 
						||
| 
								 | 
							
									uint32_t                packer_config;
							 | 
						||
| 
								 | 
							
									uint32_t                mode_config;
							 | 
						||
| 
								 | 
							
									uint32_t                tile_config;
							 | 
						||
| 
								 | 
							
									uint32_t                h_init;
							 | 
						||
| 
								 | 
							
									uint32_t                v_init;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_cmd_buf_desc - Command buffer descriptor
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @mem_handle:                 Command buffer handle
							 | 
						||
| 
								 | 
							
								 * @offset:                     Command start offset
							 | 
						||
| 
								 | 
							
								 * @size:                       Size of the command buffer in bytes
							 | 
						||
| 
								 | 
							
								 * @length:                     Used memory in command buffer in bytes
							 | 
						||
| 
								 | 
							
								 * @type:                       Type of the command buffer
							 | 
						||
| 
								 | 
							
								 * @meta_data:                  Data type for private command buffer
							 | 
						||
| 
								 | 
							
								 *                              Between UMD and KMD
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_cmd_buf_desc {
							 | 
						||
| 
								 | 
							
									int32_t                 mem_handle;
							 | 
						||
| 
								 | 
							
									uint32_t                offset;
							 | 
						||
| 
								 | 
							
									uint32_t                size;
							 | 
						||
| 
								 | 
							
									uint32_t                length;
							 | 
						||
| 
								 | 
							
									uint32_t                type;
							 | 
						||
| 
								 | 
							
									uint32_t                meta_data;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_buf_io_cfg - Buffer io configuration for buffers
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @mem_handle:                 Mem_handle array for the buffers.
							 | 
						||
| 
								 | 
							
								 * @offsets:                    Offsets for each planes in the buffer
							 | 
						||
| 
								 | 
							
								 * @planes:                     Per plane information
							 | 
						||
| 
								 | 
							
								 * @width:                      Main plane width in pixel
							 | 
						||
| 
								 | 
							
								 * @height:                     Main plane height in lines
							 | 
						||
| 
								 | 
							
								 * @format:                     Format of the buffer
							 | 
						||
| 
								 | 
							
								 * @color_space:                Color space for the buffer
							 | 
						||
| 
								 | 
							
								 * @color_pattern:              Color pattern in the buffer
							 | 
						||
| 
								 | 
							
								 * @bpp:                        Bit per pixel
							 | 
						||
| 
								 | 
							
								 * @rotation:                   Rotation information for the buffer
							 | 
						||
| 
								 | 
							
								 * @resource_type:              Resource type associated with the buffer
							 | 
						||
| 
								 | 
							
								 * @fence:                      Fence handle
							 | 
						||
| 
								 | 
							
								 * @early_fence:                Fence handle for early signal
							 | 
						||
| 
								 | 
							
								 * @aux_cmd_buf:                An auxiliary command buffer that may be
							 | 
						||
| 
								 | 
							
								 *                              used for programming the IO
							 | 
						||
| 
								 | 
							
								 * @direction:                  Direction of the config
							 | 
						||
| 
								 | 
							
								 * @batch_size:                 Batch size in HFR mode
							 | 
						||
| 
								 | 
							
								 * @subsample_pattern:          Subsample pattern. Used in HFR mode. It
							 | 
						||
| 
								 | 
							
								 *                              should be consistent with batchSize and
							 | 
						||
| 
								 | 
							
								 *                              CAMIF programming.
							 | 
						||
| 
								 | 
							
								 * @subsample_period:           Subsample period. Used in HFR mode. It
							 | 
						||
| 
								 | 
							
								 *                              should be consistent with batchSize and
							 | 
						||
| 
								 | 
							
								 *                              CAMIF programming.
							 | 
						||
| 
								 | 
							
								 * @framedrop_pattern:          Framedrop pattern
							 | 
						||
| 
								 | 
							
								 * @framedrop_period:           Framedrop period
							 | 
						||
| 
								 | 
							
								 * @flag:                       Flags for extra information
							 | 
						||
| 
								 | 
							
								 * @direction:                  Buffer direction: input or output
							 | 
						||
| 
								 | 
							
								 * @padding:                    Padding for the structure
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_buf_io_cfg {
							 | 
						||
| 
								 | 
							
									int32_t                         mem_handle[CAM_PACKET_MAX_PLANES];
							 | 
						||
| 
								 | 
							
									uint32_t                        offsets[CAM_PACKET_MAX_PLANES];
							 | 
						||
| 
								 | 
							
									struct cam_plane_cfg            planes[CAM_PACKET_MAX_PLANES];
							 | 
						||
| 
								 | 
							
									uint32_t                        format;
							 | 
						||
| 
								 | 
							
									uint32_t                        color_space;
							 | 
						||
| 
								 | 
							
									uint32_t                        color_pattern;
							 | 
						||
| 
								 | 
							
									uint32_t                        bpp;
							 | 
						||
| 
								 | 
							
									uint32_t                        rotation;
							 | 
						||
| 
								 | 
							
									uint32_t                        resource_type;
							 | 
						||
| 
								 | 
							
									int32_t                         fence;
							 | 
						||
| 
								 | 
							
									int32_t                         early_fence;
							 | 
						||
| 
								 | 
							
									struct cam_cmd_buf_desc         aux_cmd_buf;
							 | 
						||
| 
								 | 
							
									uint32_t                        direction;
							 | 
						||
| 
								 | 
							
									uint32_t                        batch_size;
							 | 
						||
| 
								 | 
							
									uint32_t                        subsample_pattern;
							 | 
						||
| 
								 | 
							
									uint32_t                        subsample_period;
							 | 
						||
| 
								 | 
							
									uint32_t                        framedrop_pattern;
							 | 
						||
| 
								 | 
							
									uint32_t                        framedrop_period;
							 | 
						||
| 
								 | 
							
									uint32_t                        flag;
							 | 
						||
| 
								 | 
							
									uint32_t                        padding;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_packet_header - Camera packet header
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @op_code:                    Camera packet opcode
							 | 
						||
| 
								 | 
							
								 * @size:                       Size of the camera packet in bytes
							 | 
						||
| 
								 | 
							
								 * @request_id:                 Request id for this camera packet
							 | 
						||
| 
								 | 
							
								 * @flags:                      Flags for the camera packet
							 | 
						||
| 
								 | 
							
								 * @padding:                    Padding
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_packet_header {
							 | 
						||
| 
								 | 
							
									uint32_t                op_code;
							 | 
						||
| 
								 | 
							
									uint32_t                size;
							 | 
						||
| 
								 | 
							
									uint64_t                request_id;
							 | 
						||
| 
								 | 
							
									uint32_t                flags;
							 | 
						||
| 
								 | 
							
									uint32_t                padding;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_patch_desc - Patch structure
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @dst_buf_hdl:                Memory handle for the dest buffer
							 | 
						||
| 
								 | 
							
								 * @dst_offset:                 Offset byte in the dest buffer
							 | 
						||
| 
								 | 
							
								 * @src_buf_hdl:                Memory handle for the source buffer
							 | 
						||
| 
								 | 
							
								 * @src_offset:                 Offset byte in the source buffer
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_patch_desc {
							 | 
						||
| 
								 | 
							
									int32_t                 dst_buf_hdl;
							 | 
						||
| 
								 | 
							
									uint32_t                dst_offset;
							 | 
						||
| 
								 | 
							
									int32_t                 src_buf_hdl;
							 | 
						||
| 
								 | 
							
									uint32_t                src_offset;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_packet - Camera packet structure
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @header:                     Camera packet header
							 | 
						||
| 
								 | 
							
								 * @cmd_buf_offset:             Command buffer start offset
							 | 
						||
| 
								 | 
							
								 * @num_cmd_buf:                Number of the command buffer in the packet
							 | 
						||
| 
								 | 
							
								 * @io_config_offset:           Buffer io configuration start offset
							 | 
						||
| 
								 | 
							
								 * @num_io_configs:             Number of the buffer io configurations
							 | 
						||
| 
								 | 
							
								 * @patch_offset:               Patch offset for the patch structure
							 | 
						||
| 
								 | 
							
								 * @num_patches:                Number of the patch structure
							 | 
						||
| 
								 | 
							
								 * @kmd_cmd_buf_index:          Command buffer index which contains extra
							 | 
						||
| 
								 | 
							
								 *                              space for the KMD buffer
							 | 
						||
| 
								 | 
							
								 * @kmd_cmd_buf_offset:         Offset from the beginning of the command
							 | 
						||
| 
								 | 
							
								 *                              buffer for KMD usage.
							 | 
						||
| 
								 | 
							
								 * @payload:                    Camera packet payload
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_packet {
							 | 
						||
| 
								 | 
							
									struct cam_packet_header        header;
							 | 
						||
| 
								 | 
							
									uint32_t                        cmd_buf_offset;
							 | 
						||
| 
								 | 
							
									uint32_t                        num_cmd_buf;
							 | 
						||
| 
								 | 
							
									uint32_t                        io_configs_offset;
							 | 
						||
| 
								 | 
							
									uint32_t                        num_io_configs;
							 | 
						||
| 
								 | 
							
									uint32_t                        patch_offset;
							 | 
						||
| 
								 | 
							
									uint32_t                        num_patches;
							 | 
						||
| 
								 | 
							
									uint32_t                        kmd_cmd_buf_index;
							 | 
						||
| 
								 | 
							
									uint32_t                        kmd_cmd_buf_offset;
							 | 
						||
| 
								 | 
							
									uint64_t                        payload[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_release_dev_cmd - Control payload for release devices
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @session_handle:             Session handle for the release
							 | 
						||
| 
								 | 
							
								 * @dev_handle:                 Device handle for the release
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_release_dev_cmd {
							 | 
						||
| 
								 | 
							
									int32_t                 session_handle;
							 | 
						||
| 
								 | 
							
									int32_t                 dev_handle;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_start_stop_dev_cmd - Control payload for start/stop device
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @session_handle:             Session handle for the start/stop command
							 | 
						||
| 
								 | 
							
								 * @dev_handle:                 Device handle for the start/stop command
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_start_stop_dev_cmd {
							 | 
						||
| 
								 | 
							
									int32_t                 session_handle;
							 | 
						||
| 
								 | 
							
									int32_t                 dev_handle;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_config_dev_cmd - Command payload for configure device
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @session_handle:             Session handle for the command
							 | 
						||
| 
								 | 
							
								 * @dev_handle:                 Device handle for the command
							 | 
						||
| 
								 | 
							
								 * @offset:                     Offset byte in the packet handle.
							 | 
						||
| 
								 | 
							
								 * @packet_handle:              Packet memory handle for the actual packet:
							 | 
						||
| 
								 | 
							
								 *                              struct cam_packet.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_config_dev_cmd {
							 | 
						||
| 
								 | 
							
									int32_t                 session_handle;
							 | 
						||
| 
								 | 
							
									int32_t                 dev_handle;
							 | 
						||
| 
								 | 
							
									uint64_t                offset;
							 | 
						||
| 
								 | 
							
									uint64_t                packet_handle;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_query_cap_cmd - Payload for query device capability
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @size:               Handle size
							 | 
						||
| 
								 | 
							
								 * @handle_type:        User pointer or shared memory handle
							 | 
						||
| 
								 | 
							
								 * @caps_handle:        Device specific query command payload
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_query_cap_cmd {
							 | 
						||
| 
								 | 
							
									uint32_t        size;
							 | 
						||
| 
								 | 
							
									uint32_t        handle_type;
							 | 
						||
| 
								 | 
							
									uint64_t        caps_handle;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_acquire_dev_cmd - Control payload for acquire devices
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @session_handle:     Session handle for the acquire command
							 | 
						||
| 
								 | 
							
								 * @dev_handle:         Device handle to be returned
							 | 
						||
| 
								 | 
							
								 * @handle_type:        Resource handle type:
							 | 
						||
| 
								 | 
							
								 *                      1 = user pointer, 2 = mem handle
							 | 
						||
| 
								 | 
							
								 * @num_resources:      Number of the resources to be acquired
							 | 
						||
| 
								 | 
							
								 * @resources_hdl:      Resource handle that refers to the actual
							 | 
						||
| 
								 | 
							
								 *                      resource array. Each item in this
							 | 
						||
| 
								 | 
							
								 *                      array is device specific resource structure
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_acquire_dev_cmd {
							 | 
						||
| 
								 | 
							
									int32_t         session_handle;
							 | 
						||
| 
								 | 
							
									int32_t         dev_handle;
							 | 
						||
| 
								 | 
							
									uint32_t        handle_type;
							 | 
						||
| 
								 | 
							
									uint32_t        num_resources;
							 | 
						||
| 
								 | 
							
									uint64_t        resource_hdl;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * struct cam_flush_dev_cmd - Control payload for flush devices
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @version:           Version
							 | 
						||
| 
								 | 
							
								 * @session_handle:    Session handle for the acquire command
							 | 
						||
| 
								 | 
							
								 * @dev_handle:        Device handle to be returned
							 | 
						||
| 
								 | 
							
								 * @flush_type:        Flush type:
							 | 
						||
| 
								 | 
							
								 *                     0 = flush specific request
							 | 
						||
| 
								 | 
							
								 *                     1 = flush all
							 | 
						||
| 
								 | 
							
								 * @reserved:          Reserved for 64 bit aligngment
							 | 
						||
| 
								 | 
							
								 * @req_id:            Request id that needs to cancel
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								struct cam_flush_dev_cmd {
							 | 
						||
| 
								 | 
							
									uint64_t       version;
							 | 
						||
| 
								 | 
							
									int32_t        session_handle;
							 | 
						||
| 
								 | 
							
									int32_t        dev_handle;
							 | 
						||
| 
								 | 
							
									uint32_t       flush_type;
							 | 
						||
| 
								 | 
							
									uint32_t       reserved;
							 | 
						||
| 
								 | 
							
									int64_t        req_id;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* __UAPI_CAM_DEFS_H__ */
							 |