hfi_msgs.h (5825B)
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 0x20001 11#define HFI_MSG_SYS_PC_PREP 0x20002 12#define HFI_MSG_SYS_RELEASE_RESOURCE 0x20003 13#define HFI_MSG_SYS_DEBUG 0x20004 14#define HFI_MSG_SYS_SESSION_INIT 0x20006 15#define HFI_MSG_SYS_SESSION_END 0x20007 16#define HFI_MSG_SYS_IDLE 0x20008 17#define HFI_MSG_SYS_COV 0x20009 18#define HFI_MSG_SYS_PROPERTY_INFO 0x2000a 19 20#define HFI_MSG_EVENT_NOTIFY 0x21001 21#define HFI_MSG_SESSION_GET_SEQUENCE_HEADER 0x21002 22 23#define HFI_MSG_SYS_PING_ACK 0x220002 24#define HFI_MSG_SYS_SESSION_ABORT 0x220004 25 26#define HFI_MSG_SESSION_LOAD_RESOURCES 0x221001 27#define HFI_MSG_SESSION_START 0x221002 28#define HFI_MSG_SESSION_STOP 0x221003 29#define HFI_MSG_SESSION_SUSPEND 0x221004 30#define HFI_MSG_SESSION_RESUME 0x221005 31#define HFI_MSG_SESSION_FLUSH 0x221006 32#define HFI_MSG_SESSION_EMPTY_BUFFER 0x221007 33#define HFI_MSG_SESSION_FILL_BUFFER 0x221008 34#define HFI_MSG_SESSION_PROPERTY_INFO 0x221009 35#define HFI_MSG_SESSION_RELEASE_RESOURCES 0x22100a 36#define HFI_MSG_SESSION_PARSE_SEQUENCE_HEADER 0x22100b 37#define HFI_MSG_SESSION_RELEASE_BUFFERS 0x22100c 38 39#define HFI_PICTURE_I 0x00000001 40#define HFI_PICTURE_P 0x00000002 41#define HFI_PICTURE_B 0x00000004 42#define HFI_PICTURE_IDR 0x00000008 43#define HFI_FRAME_NOTCODED 0x7f002000 44#define HFI_FRAME_YUV 0x7f004000 45#define HFI_UNUSED_PICT 0x10000000 46 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[1]; 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[1]; 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[1]; 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[1]; 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[1]; 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[1]; 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[1]; 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#endif