Commit 09c2845e authored by Stanimir Varbanov's avatar Stanimir Varbanov Committed by Mauro Carvalho Chehab

[media] media: venus: hfi: add Host Firmware Interface (HFI)

This is the implementation of HFI. It is charged with the
responsibility to comunicate with the firmware through an
interface commands and messages.

 - hfi.c has interface functions used by the core, decoder
and encoder parts to comunicate with the firmware. For example
there are functions for session and core initialisation.

 - hfi_cmds has packetization operations which preparing
packets to be send from host to firmware.

 - hfi_msgs takes care of messages sent from firmware to the
host.
Signed-off-by: default avatarStanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent aaaa93ed
This diff is collapsed.
/*
* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
* Copyright (C) 2017 Linaro Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef __HFI_H__
#define __HFI_H__
#include <linux/interrupt.h>
#include "hfi_helper.h"
#define VIDC_SESSION_TYPE_VPE 0
#define VIDC_SESSION_TYPE_ENC 1
#define VIDC_SESSION_TYPE_DEC 2
#define VIDC_RESOURCE_NONE 0
#define VIDC_RESOURCE_OCMEM 1
#define VIDC_RESOURCE_VMEM 2
struct hfi_buffer_desc {
u32 buffer_type;
u32 buffer_size;
u32 num_buffers;
u32 device_addr;
u32 extradata_addr;
u32 extradata_size;
u32 response_required;
};
struct hfi_frame_data {
u32 buffer_type;
u32 device_addr;
u32 extradata_addr;
u64 timestamp;
u32 flags;
u32 offset;
u32 alloc_len;
u32 filled_len;
u32 mark_target;
u32 mark_data;
u32 clnt_data;
u32 extradata_size;
};
union hfi_get_property {
struct hfi_profile_level profile_level;
struct hfi_buffer_requirements bufreq[HFI_BUFFER_TYPE_MAX];
};
/* HFI events */
#define EVT_SYS_EVENT_CHANGE 1
#define EVT_SYS_WATCHDOG_TIMEOUT 2
#define EVT_SYS_ERROR 3
#define EVT_SESSION_ERROR 4
/* HFI event callback structure */
struct hfi_event_data {
u32 error;
u32 height;
u32 width;
u32 event_type;
u32 packet_buffer;
u32 extradata_buffer;
u32 tag;
u32 profile;
u32 level;
};
/* define core states */
#define CORE_UNINIT 0
#define CORE_INIT 1
/* define instance states */
#define INST_UNINIT 2
#define INST_INIT 3
#define INST_LOAD_RESOURCES 4
#define INST_START 5
#define INST_STOP 6
#define INST_RELEASE_RESOURCES 7
struct venus_core;
struct venus_inst;
struct hfi_core_ops {
void (*event_notify)(struct venus_core *core, u32 event);
};
struct hfi_inst_ops {
void (*buf_done)(struct venus_inst *inst, unsigned int buf_type,
u32 tag, u32 bytesused, u32 data_offset, u32 flags,
u32 hfi_flags, u64 timestamp_us);
void (*event_notify)(struct venus_inst *inst, u32 event,
struct hfi_event_data *data);
};
struct hfi_ops {
int (*core_init)(struct venus_core *core);
int (*core_deinit)(struct venus_core *core);
int (*core_ping)(struct venus_core *core, u32 cookie);
int (*core_trigger_ssr)(struct venus_core *core, u32 trigger_type);
int (*session_init)(struct venus_inst *inst, u32 session_type,
u32 codec);
int (*session_end)(struct venus_inst *inst);
int (*session_abort)(struct venus_inst *inst);
int (*session_flush)(struct venus_inst *inst, u32 flush_mode);
int (*session_start)(struct venus_inst *inst);
int (*session_stop)(struct venus_inst *inst);
int (*session_continue)(struct venus_inst *inst);
int (*session_etb)(struct venus_inst *inst, struct hfi_frame_data *fd);
int (*session_ftb)(struct venus_inst *inst, struct hfi_frame_data *fd);
int (*session_set_buffers)(struct venus_inst *inst,
struct hfi_buffer_desc *bd);
int (*session_unset_buffers)(struct venus_inst *inst,
struct hfi_buffer_desc *bd);
int (*session_load_res)(struct venus_inst *inst);
int (*session_release_res)(struct venus_inst *inst);
int (*session_parse_seq_hdr)(struct venus_inst *inst, u32 seq_hdr,
u32 seq_hdr_len);
int (*session_get_seq_hdr)(struct venus_inst *inst, u32 seq_hdr,
u32 seq_hdr_len);
int (*session_set_property)(struct venus_inst *inst, u32 ptype,
void *pdata);
int (*session_get_property)(struct venus_inst *inst, u32 ptype);
int (*resume)(struct venus_core *core);
int (*suspend)(struct venus_core *core);
/* interrupt operations */
irqreturn_t (*isr)(struct venus_core *core);
irqreturn_t (*isr_thread)(struct venus_core *core);
};
int hfi_create(struct venus_core *core, const struct hfi_core_ops *ops);
void hfi_destroy(struct venus_core *core);
int hfi_core_init(struct venus_core *core);
int hfi_core_deinit(struct venus_core *core, bool blocking);
int hfi_core_suspend(struct venus_core *core);
int hfi_core_resume(struct venus_core *core, bool force);
int hfi_core_trigger_ssr(struct venus_core *core, u32 type);
int hfi_core_ping(struct venus_core *core);
int hfi_session_create(struct venus_inst *inst, const struct hfi_inst_ops *ops);
void hfi_session_destroy(struct venus_inst *inst);
int hfi_session_init(struct venus_inst *inst, u32 pixfmt);
int hfi_session_deinit(struct venus_inst *inst);
int hfi_session_start(struct venus_inst *inst);
int hfi_session_stop(struct venus_inst *inst);
int hfi_session_continue(struct venus_inst *inst);
int hfi_session_abort(struct venus_inst *inst);
int hfi_session_load_res(struct venus_inst *inst);
int hfi_session_unload_res(struct venus_inst *inst);
int hfi_session_flush(struct venus_inst *inst);
int hfi_session_set_buffers(struct venus_inst *inst,
struct hfi_buffer_desc *bd);
int hfi_session_unset_buffers(struct venus_inst *inst,
struct hfi_buffer_desc *bd);
int hfi_session_get_property(struct venus_inst *inst, u32 ptype,
union hfi_get_property *hprop);
int hfi_session_set_property(struct venus_inst *inst, u32 ptype, void *pdata);
int hfi_session_process_buf(struct venus_inst *inst, struct hfi_frame_data *f);
irqreturn_t hfi_isr_thread(int irq, void *dev_id);
irqreturn_t hfi_isr(int irq, void *dev);
#endif
This diff is collapsed.
/*
* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
* Copyright (C) 2017 Linaro Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef __VENUS_HFI_CMDS_H__
#define __VENUS_HFI_CMDS_H__
#include "hfi.h"
/* commands */
#define HFI_CMD_SYS_INIT 0x10001
#define HFI_CMD_SYS_PC_PREP 0x10002
#define HFI_CMD_SYS_SET_RESOURCE 0x10003
#define HFI_CMD_SYS_RELEASE_RESOURCE 0x10004
#define HFI_CMD_SYS_SET_PROPERTY 0x10005
#define HFI_CMD_SYS_GET_PROPERTY 0x10006
#define HFI_CMD_SYS_SESSION_INIT 0x10007
#define HFI_CMD_SYS_SESSION_END 0x10008
#define HFI_CMD_SYS_SET_BUFFERS 0x10009
#define HFI_CMD_SYS_TEST_SSR 0x10101
#define HFI_CMD_SESSION_SET_PROPERTY 0x11001
#define HFI_CMD_SESSION_SET_BUFFERS 0x11002
#define HFI_CMD_SESSION_GET_SEQUENCE_HEADER 0x11003
#define HFI_CMD_SYS_SESSION_ABORT 0x210001
#define HFI_CMD_SYS_PING 0x210002
#define HFI_CMD_SESSION_LOAD_RESOURCES 0x211001
#define HFI_CMD_SESSION_START 0x211002
#define HFI_CMD_SESSION_STOP 0x211003
#define HFI_CMD_SESSION_EMPTY_BUFFER 0x211004
#define HFI_CMD_SESSION_FILL_BUFFER 0x211005
#define HFI_CMD_SESSION_SUSPEND 0x211006
#define HFI_CMD_SESSION_RESUME 0x211007
#define HFI_CMD_SESSION_FLUSH 0x211008
#define HFI_CMD_SESSION_GET_PROPERTY 0x211009
#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER 0x21100a
#define HFI_CMD_SESSION_RELEASE_BUFFERS 0x21100b
#define HFI_CMD_SESSION_RELEASE_RESOURCES 0x21100c
#define HFI_CMD_SESSION_CONTINUE 0x21100d
#define HFI_CMD_SESSION_SYNC 0x21100e
/* command packets */
struct hfi_sys_init_pkt {
struct hfi_pkt_hdr hdr;
u32 arch_type;
};
struct hfi_sys_pc_prep_pkt {
struct hfi_pkt_hdr hdr;
};
struct hfi_sys_set_resource_pkt {
struct hfi_pkt_hdr hdr;
u32 resource_handle;
u32 resource_type;
u32 resource_data[1];
};
struct hfi_sys_release_resource_pkt {
struct hfi_pkt_hdr hdr;
u32 resource_type;
u32 resource_handle;
};
struct hfi_sys_set_property_pkt {
struct hfi_pkt_hdr hdr;
u32 num_properties;
u32 data[1];
};
struct hfi_sys_get_property_pkt {
struct hfi_pkt_hdr hdr;
u32 num_properties;
u32 data[1];
};
struct hfi_sys_set_buffers_pkt {
struct hfi_pkt_hdr hdr;
u32 buffer_type;
u32 buffer_size;
u32 num_buffers;
u32 buffer_addr[1];
};
struct hfi_sys_ping_pkt {
struct hfi_pkt_hdr hdr;
u32 client_data;
};
struct hfi_session_init_pkt {
struct hfi_session_hdr_pkt shdr;
u32 session_domain;
u32 session_codec;
};
struct hfi_session_end_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_abort_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_set_property_pkt {
struct hfi_session_hdr_pkt shdr;
u32 num_properties;
u32 data[0];
};
struct hfi_session_set_buffers_pkt {
struct hfi_session_hdr_pkt shdr;
u32 buffer_type;
u32 buffer_size;
u32 extradata_size;
u32 min_buffer_size;
u32 num_buffers;
u32 buffer_info[1];
};
struct hfi_session_get_sequence_header_pkt {
struct hfi_session_hdr_pkt shdr;
u32 buffer_len;
u32 packet_buffer;
};
struct hfi_session_load_resources_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_start_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_stop_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_empty_buffer_compressed_pkt {
struct hfi_session_hdr_pkt shdr;
u32 time_stamp_hi;
u32 time_stamp_lo;
u32 flags;
u32 mark_target;
u32 mark_data;
u32 offset;
u32 alloc_len;
u32 filled_len;
u32 input_tag;
u32 packet_buffer;
u32 extradata_buffer;
u32 data[1];
};
struct hfi_session_empty_buffer_uncompressed_plane0_pkt {
struct hfi_session_hdr_pkt shdr;
u32 view_id;
u32 time_stamp_hi;
u32 time_stamp_lo;
u32 flags;
u32 mark_target;
u32 mark_data;
u32 alloc_len;
u32 filled_len;
u32 offset;
u32 input_tag;
u32 packet_buffer;
u32 extradata_buffer;
u32 data[1];
};
struct hfi_session_empty_buffer_uncompressed_plane1_pkt {
u32 flags;
u32 alloc_len;
u32 filled_len;
u32 offset;
u32 packet_buffer2;
u32 data[1];
};
struct hfi_session_empty_buffer_uncompressed_plane2_pkt {
u32 flags;
u32 alloc_len;
u32 filled_len;
u32 offset;
u32 packet_buffer3;
u32 data[1];
};
struct hfi_session_fill_buffer_pkt {
struct hfi_session_hdr_pkt shdr;
u32 stream_id;
u32 offset;
u32 alloc_len;
u32 filled_len;
u32 output_tag;
u32 packet_buffer;
u32 extradata_buffer;
u32 data[1];
};
struct hfi_session_flush_pkt {
struct hfi_session_hdr_pkt shdr;
u32 flush_type;
};
struct hfi_session_suspend_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_resume_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_get_property_pkt {
struct hfi_session_hdr_pkt shdr;
u32 num_properties;
u32 data[1];
};
struct hfi_session_release_buffer_pkt {
struct hfi_session_hdr_pkt shdr;
u32 buffer_type;
u32 buffer_size;
u32 extradata_size;
u32 response_req;
u32 num_buffers;
u32 buffer_info[1];
};
struct hfi_session_release_resources_pkt {
struct hfi_session_hdr_pkt shdr;
};
struct hfi_session_parse_sequence_header_pkt {
struct hfi_session_hdr_pkt shdr;
u32 header_len;
u32 packet_buffer;
};
struct hfi_sfr {
u32 buf_size;
u8 data[1];
};
struct hfi_sys_test_ssr_pkt {
struct hfi_pkt_hdr hdr;
u32 trigger_type;
};
void pkt_set_version(enum hfi_version version);
void pkt_sys_init(struct hfi_sys_init_pkt *pkt, u32 arch_type);
void pkt_sys_pc_prep(struct hfi_sys_pc_prep_pkt *pkt);
void pkt_sys_idle_indicator(struct hfi_sys_set_property_pkt *pkt, u32 enable);
void pkt_sys_power_control(struct hfi_sys_set_property_pkt *pkt, u32 enable);
int pkt_sys_set_resource(struct hfi_sys_set_resource_pkt *pkt, u32 id, u32 size,
u32 addr, void *cookie);
int pkt_sys_unset_resource(struct hfi_sys_release_resource_pkt *pkt, u32 id,
u32 size, void *cookie);
void pkt_sys_debug_config(struct hfi_sys_set_property_pkt *pkt, u32 mode,
u32 config);
void pkt_sys_coverage_config(struct hfi_sys_set_property_pkt *pkt, u32 mode);
void pkt_sys_ping(struct hfi_sys_ping_pkt *pkt, u32 cookie);
void pkt_sys_image_version(struct hfi_sys_get_property_pkt *pkt);
int pkt_sys_ssr_cmd(struct hfi_sys_test_ssr_pkt *pkt, u32 trigger_type);
int pkt_session_init(struct hfi_session_init_pkt *pkt, void *cookie,
u32 session_type, u32 codec);
void pkt_session_cmd(struct hfi_session_pkt *pkt, u32 pkt_type, void *cookie);
int pkt_session_set_buffers(struct hfi_session_set_buffers_pkt *pkt,
void *cookie, struct hfi_buffer_desc *bd);
int pkt_session_unset_buffers(struct hfi_session_release_buffer_pkt *pkt,
void *cookie, struct hfi_buffer_desc *bd);
int pkt_session_etb_decoder(struct hfi_session_empty_buffer_compressed_pkt *pkt,
void *cookie, struct hfi_frame_data *input_frame);
int pkt_session_etb_encoder(
struct hfi_session_empty_buffer_uncompressed_plane0_pkt *pkt,
void *cookie, struct hfi_frame_data *input_frame);
int pkt_session_ftb(struct hfi_session_fill_buffer_pkt *pkt,
void *cookie, struct hfi_frame_data *output_frame);
int pkt_session_parse_seq_header(
struct hfi_session_parse_sequence_header_pkt *pkt,
void *cookie, u32 seq_hdr, u32 seq_hdr_len);
int pkt_session_get_seq_hdr(struct hfi_session_get_sequence_header_pkt *pkt,
void *cookie, u32 seq_hdr, u32 seq_hdr_len);
int pkt_session_flush(struct hfi_session_flush_pkt *pkt, void *cookie,
u32 flush_mode);
int pkt_session_get_property(struct hfi_session_get_property_pkt *pkt,
void *cookie, u32 ptype);
int pkt_session_set_property(struct hfi_session_set_property_pkt *pkt,
void *cookie, u32 ptype, void *pdata);
#endif
This diff is collapsed.
This diff is collapsed.
/*
* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
* Copyright (C) 2017 Linaro Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef __VENUS_HFI_MSGS_H__
#define __VENUS_HFI_MSGS_H__
/* message calls */
#define HFI_MSG_SYS_INIT 0x20001
#define HFI_MSG_SYS_PC_PREP 0x20002
#define HFI_MSG_SYS_RELEASE_RESOURCE 0x20003
#define HFI_MSG_SYS_DEBUG 0x20004
#define HFI_MSG_SYS_SESSION_INIT 0x20006
#define HFI_MSG_SYS_SESSION_END 0x20007
#define HFI_MSG_SYS_IDLE 0x20008
#define HFI_MSG_SYS_COV 0x20009
#define HFI_MSG_SYS_PROPERTY_INFO 0x2000a
#define HFI_MSG_EVENT_NOTIFY 0x21001
#define HFI_MSG_SESSION_GET_SEQUENCE_HEADER 0x21002
#define HFI_MSG_SYS_PING_ACK 0x220002
#define HFI_MSG_SYS_SESSION_ABORT 0x220004
#define HFI_MSG_SESSION_LOAD_RESOURCES 0x221001
#define HFI_MSG_SESSION_START 0x221002
#define HFI_MSG_SESSION_STOP 0x221003
#define HFI_MSG_SESSION_SUSPEND 0x221004
#define HFI_MSG_SESSION_RESUME 0x221005
#define HFI_MSG_SESSION_FLUSH 0x221006
#define HFI_MSG_SESSION_EMPTY_BUFFER 0x221007
#define HFI_MSG_SESSION_FILL_BUFFER 0x221008
#define HFI_MSG_SESSION_PROPERTY_INFO 0x221009
#define HFI_MSG_SESSION_RELEASE_RESOURCES 0x22100a
#define HFI_MSG_SESSION_PARSE_SEQUENCE_HEADER 0x22100b
#define HFI_MSG_SESSION_RELEASE_BUFFERS 0x22100c
#define HFI_PICTURE_I 0x00000001
#define HFI_PICTURE_P 0x00000002
#define HFI_PICTURE_B 0x00000004
#define HFI_PICTURE_IDR 0x00000008
#define HFI_FRAME_NOTCODED 0x7f002000
#define HFI_FRAME_YUV 0x7f004000
#define HFI_UNUSED_PICT 0x10000000
/* message packets */
struct hfi_msg_event_notify_pkt {
struct hfi_session_hdr_pkt shdr;
u32 event_id;
u32 event_data1;
u32 event_data2;
u32 ext_event_data[1];
};
struct hfi_msg_event_release_buffer_ref_pkt {
u32 packet_buffer;
u32 extradata_buffer;
u32 output_tag;
};
struct hfi_msg_sys_init_done_pkt {
struct hfi_pkt_hdr hdr;
u32 error_type;
u32 num_properties;
u32 data[1];
};
struct hfi_msg_sys_pc_prep_done_pkt {
struct hfi_pkt_hdr hdr;
u32 error_type;
};
struct hfi_msg_sys_release_resource_done_pkt {
struct hfi_pkt_hdr hdr;
u32 resource_handle;
u32 error_type;
};
struct hfi_msg_session_init_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
u32 num_properties;
u32 data[1];
};
struct hfi_msg_session_end_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_session_get_sequence_hdr_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
u32 header_len;
u32 sequence_header;
};
struct hfi_msg_sys_session_abort_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_sys_idle_pkt {
struct hfi_pkt_hdr hdr;
};
struct hfi_msg_sys_ping_ack_pkt {
struct hfi_pkt_hdr hdr;
u32 client_data;
};
struct hfi_msg_sys_property_info_pkt {
struct hfi_pkt_hdr hdr;
u32 num_properties;
u32 data[1];
};
struct hfi_msg_session_load_resources_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_session_start_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_session_stop_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_session_suspend_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_session_resume_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_session_flush_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
u32 flush_type;
};
struct hfi_msg_session_empty_buffer_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
u32 offset;
u32 filled_len;
u32 input_tag;
u32 packet_buffer;
u32 extradata_buffer;
u32 data[0];
};
struct hfi_msg_session_fbd_compressed_pkt {
struct hfi_session_hdr_pkt shdr;
u32 time_stamp_hi;
u32 time_stamp_lo;
u32 error_type;
u32 flags;
u32 mark_target;
u32 mark_data;
u32 stats;
u32 offset;
u32 alloc_len;
u32 filled_len;
u32 input_tag;
u32 output_tag;
u32 picture_type;
u32 packet_buffer;
u32 extradata_buffer;
u32 data[0];
};
struct hfi_msg_session_fbd_uncompressed_plane0_pkt {
struct hfi_session_hdr_pkt shdr;
u32 stream_id;
u32 view_id;
u32 error_type;
u32 time_stamp_hi;
u32 time_stamp_lo;
u32 flags;
u32 mark_target;
u32 mark_data;
u32 stats;
u32 alloc_len;
u32 filled_len;
u32 offset;
u32 frame_width;
u32 frame_height;
u32 start_x_coord;
u32 start_y_coord;
u32 input_tag;
u32 input_tag2;
u32 output_tag;
u32 picture_type;
u32 packet_buffer;
u32 extradata_buffer;
u32 data[0];
};
struct hfi_msg_session_fbd_uncompressed_plane1_pkt {
u32 flags;
u32 alloc_len;
u32 filled_len;
u32 offset;
u32 packet_buffer2;
u32 data[0];
};
struct hfi_msg_session_fbd_uncompressed_plane2_pkt {
u32 flags;
u32 alloc_len;
u32 filled_len;
u32 offset;
u32 packet_buffer3;
u32 data[0];
};
struct hfi_msg_session_parse_sequence_header_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
u32 num_properties;
u32 data[1];
};
struct hfi_msg_session_property_info_pkt {
struct hfi_session_hdr_pkt shdr;
u32 num_properties;
u32 data[1];
};
struct hfi_msg_session_release_resources_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
};
struct hfi_msg_session_release_buffers_done_pkt {
struct hfi_session_hdr_pkt shdr;
u32 error_type;
u32 num_buffers;
u32 buffer_info[1];
};
struct hfi_msg_sys_debug_pkt {
struct hfi_pkt_hdr hdr;
u32 msg_type;
u32 msg_size;
u32 time_stamp_hi;
u32 time_stamp_lo;
u8 msg_data[1];
};
struct hfi_msg_sys_coverage_pkt {
struct hfi_pkt_hdr hdr;
u32 msg_size;
u32 time_stamp_hi;
u32 time_stamp_lo;
u8 msg_data[1];
};
struct venus_core;
struct hfi_pkt_hdr;
void hfi_process_watchdog_timeout(struct venus_core *core);
u32 hfi_process_msg_packet(struct venus_core *core, struct hfi_pkt_hdr *hdr);
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment