Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 288413e2 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: Add UAPI header for camera ICP" into msm-4.9

parents 373178b3 6efb7cf4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
header-y += cam_cpas.h
header-y += cam_defs.h
header-y += cam_icp.h
header-y += cam_isp.h
header-y += cam_isp_vfe.h
header-y += cam_isp_ife.h
+0 −8
Original line number Diff line number Diff line
@@ -121,9 +121,6 @@ struct cam_iommu_handle {
#define CAM_FORMAT_Y_ONLY                       45
#define CAM_FORMAT_MAX                          46


/* camera packet */

/* camera rotaion */
#define CAM_ROTATE_CW_0_DEGREE                  0
#define CAM_ROTATE_CW_90_DEGREE                 1
@@ -343,7 +340,6 @@ struct cam_packet {

};

/* Release Device */
/**
 * struct cam_release_dev_cmd - Control payload for release devices
 *
@@ -355,7 +351,6 @@ struct cam_release_dev_cmd {
	int32_t                 dev_handle;
};

/* Start/Stop device */
/**
 * struct cam_start_stop_dev_cmd - Control payload for start/stop device
 *
@@ -368,7 +363,6 @@ struct cam_start_stop_dev_cmd {
	int32_t                 dev_handle;
};

/* Configure Device */
/**
 * struct cam_config_dev_cmd - Command payload for configure device
 *
@@ -386,7 +380,6 @@ struct cam_config_dev_cmd {
	uint64_t                packet_handle;
};

/* Query Device Caps */
/**
 * struct cam_query_cap_cmd - Payload for query device capability
 *
@@ -401,7 +394,6 @@ struct cam_query_cap_cmd {
	uint64_t        caps_handle;
};

/* Acquire Device */
/**
 * struct cam_acquire_dev_cmd - Control payload for acquire devices
 *
+155 −0
Original line number Diff line number Diff line
#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

/**
 * 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__ */