blob: 20dc851a06ab0fb04c19c81fee0dbcba18bbfc12 [file] [log] [blame]
Mona Hossain803c3d92012-11-21 13:33:42 -08001/*
2 * Copyright (c) 2013, The Linux Foundation. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#ifndef __QSEECOMI_H_
15#define __QSEECOMI_H_
16
17#include <linux/qseecom.h>
18
Mona Hossain4cf78a92013-02-14 12:06:41 -080019#define QSEECOM_KEY_ID_SIZE 32
20
Mona Hossain803c3d92012-11-21 13:33:42 -080021enum qseecom_command_scm_resp_type {
22 QSEOS_APP_ID = 0xEE01,
23 QSEOS_LISTENER_ID
24};
25
26enum qseecom_qceos_cmd_id {
27 QSEOS_APP_START_COMMAND = 0x01,
28 QSEOS_APP_SHUTDOWN_COMMAND,
29 QSEOS_APP_LOOKUP_COMMAND,
30 QSEOS_REGISTER_LISTENER,
31 QSEOS_DEREGISTER_LISTENER,
32 QSEOS_CLIENT_SEND_DATA_COMMAND,
33 QSEOS_LISTENER_DATA_RSP_COMMAND,
34 QSEOS_LOAD_EXTERNAL_ELF_COMMAND,
35 QSEOS_UNLOAD_EXTERNAL_ELF_COMMAND,
36 QSEOS_GET_APP_STATE_COMMAND,
37 QSEOS_LOAD_SERV_IMAGE_COMMAND,
38 QSEOS_UNLOAD_SERV_IMAGE_COMMAND,
39 QSEOS_APP_REGION_NOTIFICATION,
40 QSEOS_REGISTER_LOG_BUF_COMMAND,
Hariprasad Dhalinarasimhaadf27a82013-02-11 15:07:59 -080041 QSEE_RPMB_PROVISION_KEY_COMMAND,
42 QSEE_RPMB_ERASE_COMMAND,
Mona Hossain803c3d92012-11-21 13:33:42 -080043 QSEOS_CMD_MAX = 0xEFFFFFFF
44};
45
46enum qseecom_qceos_cmd_status {
47 QSEOS_RESULT_SUCCESS = 0,
48 QSEOS_RESULT_INCOMPLETE,
49 QSEOS_RESULT_FAILURE = 0xFFFFFFFF
50};
51
52__packed struct qsee_apps_region_info_ireq {
53 uint32_t qsee_cmd_id;
54 uint32_t addr;
55 uint32_t size;
56};
57
58__packed struct qseecom_check_app_ireq {
59 uint32_t qsee_cmd_id;
60 char app_name[MAX_APP_NAME_SIZE];
61};
62
63__packed struct qseecom_load_app_ireq {
64 uint32_t qsee_cmd_id;
65 uint32_t mdt_len; /* Length of the mdt file */
66 uint32_t img_len; /* Length of .bxx and .mdt files */
67 uint32_t phy_addr; /* phy addr of the start of image */
68 char app_name[MAX_APP_NAME_SIZE]; /* application name*/
69};
70
71__packed struct qseecom_unload_app_ireq {
72 uint32_t qsee_cmd_id;
73 uint32_t app_id;
74};
75
76__packed struct qseecom_load_lib_image_ireq {
77 uint32_t qsee_cmd_id;
78 uint32_t mdt_len;
79 uint32_t img_len;
80 uint32_t phy_addr;
81};
82
83__packed struct qseecom_unload_lib_image_ireq {
84 uint32_t qsee_cmd_id;
85};
86
87__packed struct qseecom_register_listener_ireq {
88 uint32_t qsee_cmd_id;
89 uint32_t listener_id;
90 void *sb_ptr;
91 uint32_t sb_len;
92};
93
94__packed struct qseecom_unregister_listener_ireq {
95 uint32_t qsee_cmd_id;
96 uint32_t listener_id;
97};
98
99__packed struct qseecom_client_send_data_ireq {
100 uint32_t qsee_cmd_id;
101 uint32_t app_id;
102 void *req_ptr;
103 uint32_t req_len;
104 void *rsp_ptr; /* First 4 bytes should always be the return status */
105 uint32_t rsp_len;
106};
107
108__packed struct qseecom_reg_log_buf_ireq {
109 uint32_t qsee_cmd_id;
110 unsigned long phy_addr;
111 uint32_t len;
112};
113
114/* send_data resp */
115__packed struct qseecom_client_listener_data_irsp {
116 uint32_t qsee_cmd_id;
117 uint32_t listener_id;
Mona Hossain0b3a2792013-02-05 17:38:55 -0800118 uint32_t status;
Mona Hossain803c3d92012-11-21 13:33:42 -0800119};
120
121/*
122 * struct qseecom_command_scm_resp - qseecom response buffer
123 * @cmd_status: value from enum tz_sched_cmd_status
124 * @sb_in_rsp_addr: points to physical location of response
125 * buffer
126 * @sb_in_rsp_len: length of command response
127 */
128__packed struct qseecom_command_scm_resp {
129 uint32_t result;
130 enum qseecom_command_scm_resp_type resp_type;
131 unsigned int data;
132};
133
Hariprasad Dhalinarasimhaadf27a82013-02-11 15:07:59 -0800134struct qseecom_rpmb_provision_key {
135 uint32_t key_type;
136};
137
138__packed struct qseecom_client_send_service_ireq {
139 uint32_t qsee_cmd_id;
140 uint32_t key_type; /* in */
141 unsigned int req_len; /* in */
142 void *rsp_ptr; /* in/out */
143 unsigned int rsp_len; /* in/out */
144};
145
Mona Hossain4cf78a92013-02-14 12:06:41 -0800146/* Key Management requests */
147enum qseecom_qceos_key_gen_cmd_id {
148 QSEOS_GENERATE_KEY = 0x02,
149 QSEOS_SET_KEY,
150 QSEOS_DELETE_KEY,
151 QSEOS_MAX_KEY_COUNT,
152 QSEOS_KEY_CMD_MAX = 0xEFFFFFFF
153};
154
155__packed struct qseecom_key_generate_ireq {
156 uint32_t flags;
157 uint8_t key_id[QSEECOM_KEY_ID_SIZE];
158};
159
160__packed struct qseecom_key_select_ireq {
161 uint32_t ce;
162 uint32_t pipe;
163 uint32_t flags;
164 uint8_t key_id[QSEECOM_KEY_ID_SIZE];
165 unsigned char hash[QSEECOM_HASH_SIZE];
166};
167
168__packed struct qseecom_key_delete_ireq {
169 uint32_t flags;
170 uint8_t key_id[QSEECOM_KEY_ID_SIZE];
171};
172
173__packed struct qseecom_key_max_count_query_ireq {
174 uint32_t flags;
175};
176
177__packed struct qseecom_key_max_count_query_irsp {
178 uint32_t max_key_count;
179};
180
181struct key_id_info {
182 uint32_t ce_hw;
183 uint32_t pipe;
184 bool flags;
185};
Hariprasad Dhalinarasimhaadf27a82013-02-11 15:07:59 -0800186
Mona Hossain803c3d92012-11-21 13:33:42 -0800187#endif /* __QSEECOMI_H_ */