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

Commit d3d110af authored by Kranthikumar Kurapati's avatar Kranthikumar Kurapati Committed by William Clark
Browse files

qseecom: Add ioctl command and QSEOS_FSM_ENCFS_REQ for fsm fde support



For FSM fde support, new ioctl command is added to retrieve fde ce, and
pipe pair information. QSEOS_FSM_ENCFS_REQ_CMD and
QSEOS_FSM_ENCFS_REQ_RSP_CMD are added to send service command to TZ.
In the driver, ce_hw_usage_info is enhanced to support multiple instances
of fde, and pfe.

Change-Id: Iee72851511e53089351c9e1b8e7da25991000616
Acked-by: default avatarChe-Min Hsieh <cheminh@qti.qualcomm.com>
Signed-off-by: default avatarKranthikumar Kurapati <kkurap@codeaurora.org>
parent 6cb8923f
Loading
Loading
Loading
Loading
+812 −167

File changed.

Preview size limit exceeded, changes collapsed.

+3 −0
Original line number Diff line number Diff line
@@ -69,6 +69,9 @@ enum qseecom_qceos_cmd_id {
	QSEOS_FSM_IKE_REQ_RSP_CMD = 0x204,
	QSEOS_FSM_OEM_FUSE_WRITE_ROW = 0x301,
	QSEOS_FSM_OEM_FUSE_READ_ROW = 0x302,
	QSEOS_FSM_ENCFS_REQ_CMD = 0x403,
	QSEOS_FSM_ENCFS_REQ_RSP_CMD = 0x404,

	QSEOS_CMD_MAX     = 0xEFFFFFFF
};

+24 −0
Original line number Diff line number Diff line
@@ -207,6 +207,21 @@ struct compat_qseecom_qteec_modfd_req {
	struct compat_qseecom_ion_fd_info ifd_data[MAX_ION_FD];
};

struct compat_qseecom_ce_pipe_entry {
	compat_int_t valid;
	compat_uint_t ce_num;
	compat_uint_t ce_pipe_pair;
};

struct compat_qseecom_ce_info_req {
	unsigned char handle[MAX_CE_INFO_HANDLE_SIZE];
	compat_uint_t usage;
	compat_uint_t unit_num;
	compat_uint_t num_ce_pipe_entries;
	struct compat_qseecom_ce_pipe_entry
				ce_pipe_entry[MAX_CE_PIPE_PAIR_PER_UNIT];
};

struct file;
extern long compat_qseecom_ioctl(struct file *file,
					unsigned int cmd, unsigned long arg);
@@ -304,6 +319,15 @@ extern long compat_qseecom_ioctl(struct file *file,
#define COMPAT_QSEECOM_IOCTL_SEND_MODFD_RESP_64 \
	_IOWR(QSEECOM_IOC_MAGIC, 36, \
				struct compat_qseecom_send_modfd_listener_resp)
#define COMPAT_QSEECOM_IOCTL_GET_CE_PIPE_INFO \
	_IOWR(QSEECOM_IOC_MAGIC, 40, \
				struct compat_qseecom_ce_info_req)
#define COMPAT_QSEECOM_IOCTL_FREE_CE_PIPE_INFO \
	_IOWR(QSEECOM_IOC_MAGIC, 41, \
				struct compat_qseecom_ce_info_req)
#define COMPAT_QSEECOM_IOCTL_QUERY_CE_PIPE_INFO \
	_IOWR(QSEECOM_IOC_MAGIC, 42, \
				struct compat_qseecom_ce_info_req)

#endif
#endif /* _UAPI_COMPAT_QSEECOM_H_ */
+31 −0
Original line number Diff line number Diff line
@@ -233,6 +233,27 @@ struct qseecom_sg_entry_64bit {
	uint32_t len;
} __attribute__ ((packed));

#define MAX_CE_PIPE_PAIR_PER_UNIT 3
#define INVALID_CE_INFO_UNIT_NUM 0xffffffff

#define CE_PIPE_PAIR_USE_TYPE_FDE 0
#define CE_PIPE_PAIR_USE_TYPE_PFE 1

struct qseecom_ce_pipe_entry {
	int valid;
	unsigned int ce_num;
	unsigned int ce_pipe_pair;
};

#define MAX_CE_INFO_HANDLE_SIZE 32
struct qseecom_ce_info_req {
	unsigned char handle[MAX_CE_INFO_HANDLE_SIZE];
	unsigned int usage;
	unsigned int unit_num;
	unsigned int num_ce_pipe_entries;
	struct qseecom_ce_pipe_entry ce_pipe_entry[MAX_CE_PIPE_PAIR_PER_UNIT];
};

#define SG_ENTRY_SZ		sizeof(struct qseecom_sg_entry)
#define SG_ENTRY_SZ_64BIT	sizeof(struct qseecom_sg_entry_64bit)

@@ -334,4 +355,14 @@ extern long qseecom_ioctl(struct file *file,
#define QSEECOM_IOCTL_SEND_MODFD_RESP_64 \
	_IOWR(QSEECOM_IOC_MAGIC, 36, struct qseecom_send_modfd_listener_resp)

#define QSEECOM_IOCTL_GET_CE_PIPE_INFO \
	_IOWR(QSEECOM_IOC_MAGIC, 40, struct qseecom_ce_info_req)

#define QSEECOM_IOCTL_FREE_CE_PIPE_INFO \
	_IOWR(QSEECOM_IOC_MAGIC, 41, struct qseecom_ce_info_req)

#define QSEECOM_IOCTL_QUERY_CE_PIPE_INFO \
	_IOWR(QSEECOM_IOC_MAGIC, 42, struct qseecom_ce_info_req)


#endif /* _UAPI_QSEECOM_H_ */