root/drivers/media/platform/qcom/venus/hfi_cmds.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 */
  46 struct hfi_sys_init_pkt {
  47         struct hfi_pkt_hdr hdr;
  48         u32 arch_type;
  49 };
  50 
  51 struct hfi_sys_pc_prep_pkt {
  52         struct hfi_pkt_hdr hdr;
  53 };
  54 
  55 struct 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 
  62 struct hfi_sys_release_resource_pkt {
  63         struct hfi_pkt_hdr hdr;
  64         u32 resource_type;
  65         u32 resource_handle;
  66 };
  67 
  68 struct hfi_sys_set_property_pkt {
  69         struct hfi_pkt_hdr hdr;
  70         u32 num_properties;
  71         u32 data[1];
  72 };
  73 
  74 struct hfi_sys_get_property_pkt {
  75         struct hfi_pkt_hdr hdr;
  76         u32 num_properties;
  77         u32 data[1];
  78 };
  79 
  80 struct 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 
  88 struct hfi_sys_ping_pkt {
  89         struct hfi_pkt_hdr hdr;
  90         u32 client_data;
  91 };
  92 
  93 struct hfi_session_init_pkt {
  94         struct hfi_session_hdr_pkt shdr;
  95         u32 session_domain;
  96         u32 session_codec;
  97 };
  98 
  99 struct hfi_session_end_pkt {
 100         struct hfi_session_hdr_pkt shdr;
 101 };
 102 
 103 struct hfi_session_abort_pkt {
 104         struct hfi_session_hdr_pkt shdr;
 105 };
 106 
 107 struct hfi_session_set_property_pkt {
 108         struct hfi_session_hdr_pkt shdr;
 109         u32 num_properties;
 110         u32 data[0];
 111 };
 112 
 113 struct 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 
 123 struct hfi_session_get_sequence_header_pkt {
 124         struct hfi_session_hdr_pkt shdr;
 125         u32 buffer_len;
 126         u32 packet_buffer;
 127 };
 128 
 129 struct hfi_session_load_resources_pkt {
 130         struct hfi_session_hdr_pkt shdr;
 131 };
 132 
 133 struct hfi_session_start_pkt {
 134         struct hfi_session_hdr_pkt shdr;
 135 };
 136 
 137 struct hfi_session_stop_pkt {
 138         struct hfi_session_hdr_pkt shdr;
 139 };
 140 
 141 struct 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 
 157 struct 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 
 174 struct 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 
 183 struct 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 
 192 struct 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 
 204 struct hfi_session_flush_pkt {
 205         struct hfi_session_hdr_pkt shdr;
 206         u32 flush_type;
 207 };
 208 
 209 struct hfi_session_suspend_pkt {
 210         struct hfi_session_hdr_pkt shdr;
 211 };
 212 
 213 struct hfi_session_resume_pkt {
 214         struct hfi_session_hdr_pkt shdr;
 215 };
 216 
 217 struct hfi_session_get_property_pkt {
 218         struct hfi_session_hdr_pkt shdr;
 219         u32 num_properties;
 220         u32 data[1];
 221 };
 222 
 223 struct 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 
 233 struct hfi_session_release_resources_pkt {
 234         struct hfi_session_hdr_pkt shdr;
 235 };
 236 
 237 struct hfi_session_parse_sequence_header_pkt {
 238         struct hfi_session_hdr_pkt shdr;
 239         u32 header_len;
 240         u32 packet_buffer;
 241 };
 242 
 243 struct hfi_sfr {
 244         u32 buf_size;
 245         u8 data[1];
 246 };
 247 
 248 struct hfi_sys_test_ssr_pkt {
 249         struct hfi_pkt_hdr hdr;
 250         u32 trigger_type;
 251 };
 252 
 253 void pkt_set_version(enum hfi_version version);
 254 
 255 void pkt_sys_init(struct hfi_sys_init_pkt *pkt, u32 arch_type);
 256 void pkt_sys_pc_prep(struct hfi_sys_pc_prep_pkt *pkt);
 257 void pkt_sys_idle_indicator(struct hfi_sys_set_property_pkt *pkt, u32 enable);
 258 void pkt_sys_power_control(struct hfi_sys_set_property_pkt *pkt, u32 enable);
 259 int pkt_sys_set_resource(struct hfi_sys_set_resource_pkt *pkt, u32 id, u32 size,
 260                          u32 addr, void *cookie);
 261 int pkt_sys_unset_resource(struct hfi_sys_release_resource_pkt *pkt, u32 id,
 262                            u32 size, void *cookie);
 263 void pkt_sys_debug_config(struct hfi_sys_set_property_pkt *pkt, u32 mode,
 264                           u32 config);
 265 void pkt_sys_coverage_config(struct hfi_sys_set_property_pkt *pkt, u32 mode);
 266 void pkt_sys_ping(struct hfi_sys_ping_pkt *pkt, u32 cookie);
 267 void pkt_sys_image_version(struct hfi_sys_get_property_pkt *pkt);
 268 int pkt_sys_ssr_cmd(struct hfi_sys_test_ssr_pkt *pkt, u32 trigger_type);
 269 int pkt_session_init(struct hfi_session_init_pkt *pkt, void *cookie,
 270                      u32 session_type, u32 codec);
 271 void pkt_session_cmd(struct hfi_session_pkt *pkt, u32 pkt_type, void *cookie);
 272 int pkt_session_set_buffers(struct hfi_session_set_buffers_pkt *pkt,
 273                             void *cookie, struct hfi_buffer_desc *bd);
 274 int pkt_session_unset_buffers(struct hfi_session_release_buffer_pkt *pkt,
 275                               void *cookie, struct hfi_buffer_desc *bd);
 276 int pkt_session_etb_decoder(struct hfi_session_empty_buffer_compressed_pkt *pkt,
 277                             void *cookie, struct hfi_frame_data *input_frame);
 278 int pkt_session_etb_encoder(
 279                 struct hfi_session_empty_buffer_uncompressed_plane0_pkt *pkt,
 280                 void *cookie, struct hfi_frame_data *input_frame);
 281 int pkt_session_ftb(struct hfi_session_fill_buffer_pkt *pkt,
 282                     void *cookie, struct hfi_frame_data *output_frame);
 283 int pkt_session_parse_seq_header(
 284                 struct hfi_session_parse_sequence_header_pkt *pkt,
 285                 void *cookie, u32 seq_hdr, u32 seq_hdr_len);
 286 int pkt_session_get_seq_hdr(struct hfi_session_get_sequence_header_pkt *pkt,
 287                             void *cookie, u32 seq_hdr, u32 seq_hdr_len);
 288 int pkt_session_flush(struct hfi_session_flush_pkt *pkt, void *cookie,
 289                       u32 flush_mode);
 290 int pkt_session_get_property(struct hfi_session_get_property_pkt *pkt,
 291                              void *cookie, u32 ptype);
 292 int pkt_session_set_property(struct hfi_session_set_property_pkt *pkt,
 293                              void *cookie, u32 ptype, void *pdata);
 294 
 295 #endif

/* [<][>][^][v][top][bottom][index][help] */