277 lines · c
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_MSGS_H__7#define __VENUS_HFI_MSGS_H__8 9/* message calls */10#define HFI_MSG_SYS_INIT 0x2000111#define HFI_MSG_SYS_PC_PREP 0x2000212#define HFI_MSG_SYS_RELEASE_RESOURCE 0x2000313#define HFI_MSG_SYS_DEBUG 0x2000414#define HFI_MSG_SYS_SESSION_INIT 0x2000615#define HFI_MSG_SYS_SESSION_END 0x2000716#define HFI_MSG_SYS_IDLE 0x2000817#define HFI_MSG_SYS_COV 0x2000918#define HFI_MSG_SYS_PROPERTY_INFO 0x2000a19 20#define HFI_MSG_EVENT_NOTIFY 0x2100121#define HFI_MSG_SESSION_GET_SEQUENCE_HEADER 0x2100222 23#define HFI_MSG_SYS_PING_ACK 0x22000224#define HFI_MSG_SYS_SESSION_ABORT 0x22000425 26#define HFI_MSG_SESSION_LOAD_RESOURCES 0x22100127#define HFI_MSG_SESSION_START 0x22100228#define HFI_MSG_SESSION_STOP 0x22100329#define HFI_MSG_SESSION_SUSPEND 0x22100430#define HFI_MSG_SESSION_RESUME 0x22100531#define HFI_MSG_SESSION_FLUSH 0x22100632#define HFI_MSG_SESSION_EMPTY_BUFFER 0x22100733#define HFI_MSG_SESSION_FILL_BUFFER 0x22100834#define HFI_MSG_SESSION_PROPERTY_INFO 0x22100935#define HFI_MSG_SESSION_RELEASE_RESOURCES 0x22100a36#define HFI_MSG_SESSION_PARSE_SEQUENCE_HEADER 0x22100b37#define HFI_MSG_SESSION_RELEASE_BUFFERS 0x22100c38 39#define HFI_PICTURE_I 0x0000000140#define HFI_PICTURE_P 0x0000000241#define HFI_PICTURE_B 0x0000000442#define HFI_PICTURE_IDR 0x0000000843#define HFI_FRAME_NOTCODED 0x7f00200044#define HFI_FRAME_YUV 0x7f00400045#define HFI_UNUSED_PICT 0x1000000046 47/* message packets */48struct hfi_msg_event_notify_pkt {49 struct hfi_session_hdr_pkt shdr;50 u32 event_id;51 u32 event_data1;52 u32 event_data2;53 u32 ext_event_data[];54};55 56struct hfi_msg_event_release_buffer_ref_pkt {57 u32 packet_buffer;58 u32 extradata_buffer;59 u32 output_tag;60};61 62struct hfi_msg_sys_init_done_pkt {63 struct hfi_pkt_hdr hdr;64 u32 error_type;65 u32 num_properties;66 u32 data[];67};68 69struct hfi_msg_sys_pc_prep_done_pkt {70 struct hfi_pkt_hdr hdr;71 u32 error_type;72};73 74struct hfi_msg_sys_release_resource_done_pkt {75 struct hfi_pkt_hdr hdr;76 u32 resource_handle;77 u32 error_type;78};79 80struct hfi_msg_session_init_done_pkt {81 struct hfi_session_hdr_pkt shdr;82 u32 error_type;83 u32 num_properties;84 u32 data[];85};86 87struct hfi_msg_session_end_done_pkt {88 struct hfi_session_hdr_pkt shdr;89 u32 error_type;90};91 92struct hfi_msg_session_get_sequence_hdr_done_pkt {93 struct hfi_session_hdr_pkt shdr;94 u32 error_type;95 u32 header_len;96 u32 sequence_header;97};98 99struct hfi_msg_sys_session_abort_done_pkt {100 struct hfi_session_hdr_pkt shdr;101 u32 error_type;102};103 104struct hfi_msg_sys_idle_pkt {105 struct hfi_pkt_hdr hdr;106};107 108struct hfi_msg_sys_ping_ack_pkt {109 struct hfi_pkt_hdr hdr;110 u32 client_data;111};112 113struct hfi_msg_sys_property_info_pkt {114 struct hfi_pkt_hdr hdr;115 u32 num_properties;116 u32 property;117 u8 data[];118};119 120struct hfi_msg_session_load_resources_done_pkt {121 struct hfi_session_hdr_pkt shdr;122 u32 error_type;123};124 125struct hfi_msg_session_start_done_pkt {126 struct hfi_session_hdr_pkt shdr;127 u32 error_type;128};129 130struct hfi_msg_session_stop_done_pkt {131 struct hfi_session_hdr_pkt shdr;132 u32 error_type;133};134 135struct hfi_msg_session_suspend_done_pkt {136 struct hfi_session_hdr_pkt shdr;137 u32 error_type;138};139 140struct hfi_msg_session_resume_done_pkt {141 struct hfi_session_hdr_pkt shdr;142 u32 error_type;143};144 145struct hfi_msg_session_flush_done_pkt {146 struct hfi_session_hdr_pkt shdr;147 u32 error_type;148 u32 flush_type;149};150 151struct hfi_msg_session_empty_buffer_done_pkt {152 struct hfi_session_hdr_pkt shdr;153 u32 error_type;154 u32 offset;155 u32 filled_len;156 u32 input_tag;157 u32 packet_buffer;158 u32 extradata_buffer;159 u32 data[];160};161 162struct hfi_msg_session_fbd_compressed_pkt {163 struct hfi_session_hdr_pkt shdr;164 u32 time_stamp_hi;165 u32 time_stamp_lo;166 u32 error_type;167 u32 flags;168 u32 mark_target;169 u32 mark_data;170 u32 stats;171 u32 offset;172 u32 alloc_len;173 u32 filled_len;174 u32 input_tag;175 u32 output_tag;176 u32 picture_type;177 u32 packet_buffer;178 u32 extradata_buffer;179 u32 data[];180};181 182struct hfi_msg_session_fbd_uncompressed_plane0_pkt {183 struct hfi_session_hdr_pkt shdr;184 u32 stream_id;185 u32 view_id;186 u32 error_type;187 u32 time_stamp_hi;188 u32 time_stamp_lo;189 u32 flags;190 u32 mark_target;191 u32 mark_data;192 u32 stats;193 u32 alloc_len;194 u32 filled_len;195 u32 offset;196 u32 frame_width;197 u32 frame_height;198 u32 start_x_coord;199 u32 start_y_coord;200 u32 input_tag;201 u32 input_tag2;202 u32 output_tag;203 u32 picture_type;204 u32 packet_buffer;205 u32 extradata_buffer;206 u32 data[];207};208 209struct hfi_msg_session_fbd_uncompressed_plane1_pkt {210 u32 flags;211 u32 alloc_len;212 u32 filled_len;213 u32 offset;214 u32 packet_buffer2;215 u32 data[];216};217 218struct hfi_msg_session_fbd_uncompressed_plane2_pkt {219 u32 flags;220 u32 alloc_len;221 u32 filled_len;222 u32 offset;223 u32 packet_buffer3;224 u32 data[];225};226 227struct hfi_msg_session_parse_sequence_header_done_pkt {228 struct hfi_session_hdr_pkt shdr;229 u32 error_type;230 u32 num_properties;231 u32 data[];232};233 234struct hfi_msg_session_property_info_pkt {235 struct hfi_session_hdr_pkt shdr;236 u32 num_properties;237 u32 property;238 u8 data[];239};240 241struct hfi_msg_session_release_resources_done_pkt {242 struct hfi_session_hdr_pkt shdr;243 u32 error_type;244};245 246struct hfi_msg_session_release_buffers_done_pkt {247 struct hfi_session_hdr_pkt shdr;248 u32 error_type;249 u32 num_buffers;250 u32 buffer_info[];251};252 253struct hfi_msg_sys_debug_pkt {254 struct hfi_pkt_hdr hdr;255 u32 msg_type;256 u32 msg_size;257 u32 time_stamp_hi;258 u32 time_stamp_lo;259 u8 msg_data[];260};261 262struct hfi_msg_sys_coverage_pkt {263 struct hfi_pkt_hdr hdr;264 u32 msg_size;265 u32 time_stamp_hi;266 u32 time_stamp_lo;267 u8 msg_data[];268};269 270struct venus_core;271struct hfi_pkt_hdr;272 273void hfi_process_watchdog_timeout(struct venus_core *core);274u32 hfi_process_msg_packet(struct venus_core *core, struct hfi_pkt_hdr *hdr);275 276#endif277