brintos

brintos / linux-shallow public Read only

0
0
Text · 7.5 KiB · a83125b Raw
297 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_CMDS_H__7#define __VENUS_HFI_CMDS_H__8 9#include "hfi.h"10 11/* commands */12#define HFI_CMD_SYS_INIT			0x1000113#define HFI_CMD_SYS_PC_PREP			0x1000214#define HFI_CMD_SYS_SET_RESOURCE		0x1000315#define HFI_CMD_SYS_RELEASE_RESOURCE		0x1000416#define HFI_CMD_SYS_SET_PROPERTY		0x1000517#define HFI_CMD_SYS_GET_PROPERTY		0x1000618#define HFI_CMD_SYS_SESSION_INIT		0x1000719#define HFI_CMD_SYS_SESSION_END			0x1000820#define HFI_CMD_SYS_SET_BUFFERS			0x1000921#define HFI_CMD_SYS_TEST_SSR			0x1010122 23#define HFI_CMD_SESSION_SET_PROPERTY		0x1100124#define HFI_CMD_SESSION_SET_BUFFERS		0x1100225#define HFI_CMD_SESSION_GET_SEQUENCE_HEADER	0x1100326 27#define HFI_CMD_SYS_SESSION_ABORT		0x21000128#define HFI_CMD_SYS_PING			0x21000229 30#define HFI_CMD_SESSION_LOAD_RESOURCES		0x21100131#define HFI_CMD_SESSION_START			0x21100232#define HFI_CMD_SESSION_STOP			0x21100333#define HFI_CMD_SESSION_EMPTY_BUFFER		0x21100434#define HFI_CMD_SESSION_FILL_BUFFER		0x21100535#define HFI_CMD_SESSION_SUSPEND			0x21100636#define HFI_CMD_SESSION_RESUME			0x21100737#define HFI_CMD_SESSION_FLUSH			0x21100838#define HFI_CMD_SESSION_GET_PROPERTY		0x21100939#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER	0x21100a40#define HFI_CMD_SESSION_RELEASE_BUFFERS		0x21100b41#define HFI_CMD_SESSION_RELEASE_RESOURCES	0x21100c42#define HFI_CMD_SESSION_CONTINUE		0x21100d43#define HFI_CMD_SESSION_SYNC			0x21100e44 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[];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;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[];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[];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;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;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;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;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;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;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[] __counted_by(num_buffers);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[] __counted_by(buf_size);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);259void pkt_sys_ubwc_config(struct hfi_sys_set_property_pkt *pkt, const struct hfi_ubwc_config *hfi);260int pkt_sys_set_resource(struct hfi_sys_set_resource_pkt *pkt, u32 id, u32 size,261			 u32 addr, void *cookie);262int pkt_sys_unset_resource(struct hfi_sys_release_resource_pkt *pkt, u32 id,263			   u32 size, void *cookie);264void pkt_sys_debug_config(struct hfi_sys_set_property_pkt *pkt, u32 mode,265			  u32 config);266void pkt_sys_coverage_config(struct hfi_sys_set_property_pkt *pkt, u32 mode);267void pkt_sys_ping(struct hfi_sys_ping_pkt *pkt, u32 cookie);268void pkt_sys_image_version(struct hfi_sys_get_property_pkt *pkt);269int pkt_sys_ssr_cmd(struct hfi_sys_test_ssr_pkt *pkt, u32 trigger_type);270int pkt_session_init(struct hfi_session_init_pkt *pkt, void *cookie,271		     u32 session_type, u32 codec);272void pkt_session_cmd(struct hfi_session_pkt *pkt, u32 pkt_type, void *cookie);273int pkt_session_set_buffers(struct hfi_session_set_buffers_pkt *pkt,274			    void *cookie, struct hfi_buffer_desc *bd);275int pkt_session_unset_buffers(struct hfi_session_release_buffer_pkt *pkt,276			      void *cookie, struct hfi_buffer_desc *bd);277int pkt_session_etb_decoder(struct hfi_session_empty_buffer_compressed_pkt *pkt,278			    void *cookie, struct hfi_frame_data *input_frame);279int pkt_session_etb_encoder(280		struct hfi_session_empty_buffer_uncompressed_plane0_pkt *pkt,281		void *cookie, struct hfi_frame_data *input_frame);282int pkt_session_ftb(struct hfi_session_fill_buffer_pkt *pkt,283		    void *cookie, struct hfi_frame_data *output_frame);284int pkt_session_parse_seq_header(285		struct hfi_session_parse_sequence_header_pkt *pkt,286		void *cookie, u32 seq_hdr, u32 seq_hdr_len);287int pkt_session_get_seq_hdr(struct hfi_session_get_sequence_header_pkt *pkt,288			    void *cookie, u32 seq_hdr, u32 seq_hdr_len);289int pkt_session_flush(struct hfi_session_flush_pkt *pkt, void *cookie,290		      u32 flush_mode);291int pkt_session_get_property(struct hfi_session_get_property_pkt *pkt,292			     void *cookie, u32 ptype);293int pkt_session_set_property(struct hfi_session_set_property_pkt *pkt,294			     void *cookie, u32 ptype, void *pdata);295 296#endif297