1
2
3
4
5
6#ifndef __VENUS_HFI_CMDS_H__
7#define __VENUS_HFI_CMDS_H__
8
9#include "hfi.h"
10
11
12#define HFI_CMD_SYS_INIT 0x10001
13#define HFI_CMD_SYS_PC_PREP 0x10002
14#define HFI_CMD_SYS_SET_RESOURCE 0x10003
15#define HFI_CMD_SYS_RELEASE_RESOURCE 0x10004
16#define HFI_CMD_SYS_SET_PROPERTY 0x10005
17#define HFI_CMD_SYS_GET_PROPERTY 0x10006
18#define HFI_CMD_SYS_SESSION_INIT 0x10007
19#define HFI_CMD_SYS_SESSION_END 0x10008
20#define HFI_CMD_SYS_SET_BUFFERS 0x10009
21#define HFI_CMD_SYS_TEST_SSR 0x10101
22
23#define HFI_CMD_SESSION_SET_PROPERTY 0x11001
24#define HFI_CMD_SESSION_SET_BUFFERS 0x11002
25#define HFI_CMD_SESSION_GET_SEQUENCE_HEADER 0x11003
26
27#define HFI_CMD_SYS_SESSION_ABORT 0x210001
28#define HFI_CMD_SYS_PING 0x210002
29
30#define HFI_CMD_SESSION_LOAD_RESOURCES 0x211001
31#define HFI_CMD_SESSION_START 0x211002
32#define HFI_CMD_SESSION_STOP 0x211003
33#define HFI_CMD_SESSION_EMPTY_BUFFER 0x211004
34#define HFI_CMD_SESSION_FILL_BUFFER 0x211005
35#define HFI_CMD_SESSION_SUSPEND 0x211006
36#define HFI_CMD_SESSION_RESUME 0x211007
37#define HFI_CMD_SESSION_FLUSH 0x211008
38#define HFI_CMD_SESSION_GET_PROPERTY 0x211009
39#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER 0x21100a
40#define HFI_CMD_SESSION_RELEASE_BUFFERS 0x21100b
41#define HFI_CMD_SESSION_RELEASE_RESOURCES 0x21100c
42#define HFI_CMD_SESSION_CONTINUE 0x21100d
43#define HFI_CMD_SESSION_SYNC 0x21100e
44
45
46struct hfi_sys_init_pkt {
47 struct hfi_pkt_hdr hdr;
48 u32 arch_type;
49};
50
51struct hfi_sys_pc_prep_pkt {
52 struct hfi_pkt_hdr hdr;
53};
54
55struct hfi_sys_set_resource_pkt {
56 struct hfi_pkt_hdr hdr;
57 u32 resource_handle;
58 u32 resource_type;
59 u32 resource_data[1];
60};
61
62struct hfi_sys_release_resource_pkt {
63 struct hfi_pkt_hdr hdr;
64 u32 resource_type;
65 u32 resource_handle;
66};
67
68struct hfi_sys_set_property_pkt {
69 struct hfi_pkt_hdr hdr;
70 u32 num_properties;
71 u32 data[1];
72};
73
74struct hfi_sys_get_property_pkt {
75 struct hfi_pkt_hdr hdr;
76 u32 num_properties;
77 u32 data[1];
78};
79
80struct hfi_sys_set_buffers_pkt {
81 struct hfi_pkt_hdr hdr;
82 u32 buffer_type;
83 u32 buffer_size;
84 u32 num_buffers;
85 u32 buffer_addr[1];
86};
87
88struct hfi_sys_ping_pkt {
89 struct hfi_pkt_hdr hdr;
90 u32 client_data;
91};
92
93struct hfi_session_init_pkt {
94 struct hfi_session_hdr_pkt shdr;
95 u32 session_domain;
96 u32 session_codec;
97};
98
99struct hfi_session_end_pkt {
100 struct hfi_session_hdr_pkt shdr;
101};
102
103struct hfi_session_abort_pkt {
104 struct hfi_session_hdr_pkt shdr;
105};
106
107struct hfi_session_set_property_pkt {
108 struct hfi_session_hdr_pkt shdr;
109 u32 num_properties;
110 u32 data[];
111};
112
113struct hfi_session_set_buffers_pkt {
114 struct hfi_session_hdr_pkt shdr;
115 u32 buffer_type;
116 u32 buffer_size;
117 u32 extradata_size;
118 u32 min_buffer_size;
119 u32 num_buffers;
120 u32 buffer_info[1];
121};
122
123struct hfi_session_get_sequence_header_pkt {
124 struct hfi_session_hdr_pkt shdr;
125 u32 buffer_len;
126 u32 packet_buffer;
127};
128
129struct hfi_session_load_resources_pkt {
130 struct hfi_session_hdr_pkt shdr;
131};
132
133struct hfi_session_start_pkt {
134 struct hfi_session_hdr_pkt shdr;
135};
136
137struct hfi_session_stop_pkt {
138 struct hfi_session_hdr_pkt shdr;
139};
140
141struct hfi_session_empty_buffer_compressed_pkt {
142 struct hfi_session_hdr_pkt shdr;
143 u32 time_stamp_hi;
144 u32 time_stamp_lo;
145 u32 flags;
146 u32 mark_target;
147 u32 mark_data;
148 u32 offset;
149 u32 alloc_len;
150 u32 filled_len;
151 u32 input_tag;
152 u32 packet_buffer;
153 u32 extradata_buffer;
154 u32 data[1];
155};
156
157struct hfi_session_empty_buffer_uncompressed_plane0_pkt {
158 struct hfi_session_hdr_pkt shdr;
159 u32 view_id;
160 u32 time_stamp_hi;
161 u32 time_stamp_lo;
162 u32 flags;
163 u32 mark_target;
164 u32 mark_data;
165 u32 alloc_len;
166 u32 filled_len;
167 u32 offset;
168 u32 input_tag;
169 u32 packet_buffer;
170 u32 extradata_buffer;
171 u32 data[1];
172};
173
174struct hfi_session_empty_buffer_uncompressed_plane1_pkt {
175 u32 flags;
176 u32 alloc_len;
177 u32 filled_len;
178 u32 offset;
179 u32 packet_buffer2;
180 u32 data[1];
181};
182
183struct hfi_session_empty_buffer_uncompressed_plane2_pkt {
184 u32 flags;
185 u32 alloc_len;
186 u32 filled_len;
187 u32 offset;
188 u32 packet_buffer3;
189 u32 data[1];
190};
191
192struct hfi_session_fill_buffer_pkt {
193 struct hfi_session_hdr_pkt shdr;
194 u32 stream_id;
195 u32 offset;
196 u32 alloc_len;
197 u32 filled_len;
198 u32 output_tag;
199 u32 packet_buffer;
200 u32 extradata_buffer;
201 u32 data[1];
202};
203
204struct hfi_session_flush_pkt {
205 struct hfi_session_hdr_pkt shdr;
206 u32 flush_type;
207};
208
209struct hfi_session_suspend_pkt {
210 struct hfi_session_hdr_pkt shdr;
211};
212
213struct hfi_session_resume_pkt {
214 struct hfi_session_hdr_pkt shdr;
215};
216
217struct hfi_session_get_property_pkt {
218 struct hfi_session_hdr_pkt shdr;
219 u32 num_properties;
220 u32 data[1];
221};
222
223struct hfi_session_release_buffer_pkt {
224 struct hfi_session_hdr_pkt shdr;
225 u32 buffer_type;
226 u32 buffer_size;
227 u32 extradata_size;
228 u32 response_req;
229 u32 num_buffers;
230 u32 buffer_info[1];
231};
232
233struct hfi_session_release_resources_pkt {
234 struct hfi_session_hdr_pkt shdr;
235};
236
237struct hfi_session_parse_sequence_header_pkt {
238 struct hfi_session_hdr_pkt shdr;
239 u32 header_len;
240 u32 packet_buffer;
241};
242
243struct hfi_sfr {
244 u32 buf_size;
245 u8 data[1];
246};
247
248struct hfi_sys_test_ssr_pkt {
249 struct hfi_pkt_hdr hdr;
250 u32 trigger_type;
251};
252
253void pkt_set_version(enum hfi_version version);
254
255void pkt_sys_init(struct hfi_sys_init_pkt *pkt, u32 arch_type);
256void pkt_sys_pc_prep(struct hfi_sys_pc_prep_pkt *pkt);
257void pkt_sys_idle_indicator(struct hfi_sys_set_property_pkt *pkt, u32 enable);
258void pkt_sys_power_control(struct hfi_sys_set_property_pkt *pkt, u32 enable);
259int pkt_sys_set_resource(struct hfi_sys_set_resource_pkt *pkt, u32 id, u32 size,
260 u32 addr, void *cookie);
261int pkt_sys_unset_resource(struct hfi_sys_release_resource_pkt *pkt, u32 id,
262 u32 size, void *cookie);
263void pkt_sys_debug_config(struct hfi_sys_set_property_pkt *pkt, u32 mode,
264 u32 config);
265void pkt_sys_coverage_config(struct hfi_sys_set_property_pkt *pkt, u32 mode);
266void pkt_sys_ping(struct hfi_sys_ping_pkt *pkt, u32 cookie);
267void pkt_sys_image_version(struct hfi_sys_get_property_pkt *pkt);
268int pkt_sys_ssr_cmd(struct hfi_sys_test_ssr_pkt *pkt, u32 trigger_type);
269int pkt_session_init(struct hfi_session_init_pkt *pkt, void *cookie,
270 u32 session_type, u32 codec);
271void pkt_session_cmd(struct hfi_session_pkt *pkt, u32 pkt_type, void *cookie);
272int pkt_session_set_buffers(struct hfi_session_set_buffers_pkt *pkt,
273 void *cookie, struct hfi_buffer_desc *bd);
274int pkt_session_unset_buffers(struct hfi_session_release_buffer_pkt *pkt,
275 void *cookie, struct hfi_buffer_desc *bd);
276int pkt_session_etb_decoder(struct hfi_session_empty_buffer_compressed_pkt *pkt,
277 void *cookie, struct hfi_frame_data *input_frame);
278int pkt_session_etb_encoder(
279 struct hfi_session_empty_buffer_uncompressed_plane0_pkt *pkt,
280 void *cookie, struct hfi_frame_data *input_frame);
281int pkt_session_ftb(struct hfi_session_fill_buffer_pkt *pkt,
282 void *cookie, struct hfi_frame_data *output_frame);
283int pkt_session_parse_seq_header(
284 struct hfi_session_parse_sequence_header_pkt *pkt,
285 void *cookie, u32 seq_hdr, u32 seq_hdr_len);
286int pkt_session_get_seq_hdr(struct hfi_session_get_sequence_header_pkt *pkt,
287 void *cookie, u32 seq_hdr, u32 seq_hdr_len);
288int pkt_session_flush(struct hfi_session_flush_pkt *pkt, void *cookie,
289 u32 flush_mode);
290int pkt_session_get_property(struct hfi_session_get_property_pkt *pkt,
291 void *cookie, u32 ptype);
292int pkt_session_set_property(struct hfi_session_set_property_pkt *pkt,
293 void *cookie, u32 ptype, void *pdata);
294
295#endif
296