hfi_cmds.h (7522B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. 4 * Copyright (C) 2017 Linaro Ltd. 5 */ 6#ifndef __VENUS_HFI_CMDS_H__ 7#define __VENUS_HFI_CMDS_H__ 8 9#include "hfi.h" 10 11/* commands */ 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/* command packets */ 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[]; 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