1303 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_HELPER_H__7#define __VENUS_HFI_HELPER_H__8 9#define HFI_DOMAIN_BASE_COMMON 010 11#define HFI_DOMAIN_BASE_VDEC 0x100000012#define HFI_DOMAIN_BASE_VENC 0x200000013#define HFI_DOMAIN_BASE_VPE 0x300000014 15#define HFI_VIDEO_ARCH_OX 0x116 17#define HFI_ARCH_COMMON_OFFSET 018#define HFI_ARCH_OX_OFFSET 0x20000019 20#define HFI_OX_BASE 0x100000021 22#define HFI_CMD_START_OFFSET 0x1000023#define HFI_MSG_START_OFFSET 0x2000024 25#define HFI_ERR_NONE 0x026#define HFI_ERR_SYS_FATAL 0x127#define HFI_ERR_SYS_INVALID_PARAMETER 0x228#define HFI_ERR_SYS_VERSION_MISMATCH 0x329#define HFI_ERR_SYS_INSUFFICIENT_RESOURCES 0x430#define HFI_ERR_SYS_MAX_SESSIONS_REACHED 0x531#define HFI_ERR_SYS_UNSUPPORTED_CODEC 0x632#define HFI_ERR_SYS_SESSION_IN_USE 0x733#define HFI_ERR_SYS_SESSION_ID_OUT_OF_RANGE 0x834#define HFI_ERR_SYS_UNSUPPORTED_DOMAIN 0x935 36#define HFI_ERR_SESSION_FATAL 0x100137#define HFI_ERR_SESSION_INVALID_PARAMETER 0x100238#define HFI_ERR_SESSION_BAD_POINTER 0x100339#define HFI_ERR_SESSION_INVALID_SESSION_ID 0x100440#define HFI_ERR_SESSION_INVALID_STREAM_ID 0x100541#define HFI_ERR_SESSION_INCORRECT_STATE_OPERATION 0x100642#define HFI_ERR_SESSION_UNSUPPORTED_PROPERTY 0x100743#define HFI_ERR_SESSION_UNSUPPORTED_SETTING 0x100844#define HFI_ERR_SESSION_INSUFFICIENT_RESOURCES 0x100945#define HFI_ERR_SESSION_STREAM_CORRUPT_OUTPUT_STALLED 0x100a46#define HFI_ERR_SESSION_STREAM_CORRUPT 0x100b47#define HFI_ERR_SESSION_ENC_OVERFLOW 0x100c48#define HFI_ERR_SESSION_UNSUPPORTED_STREAM 0x100d49#define HFI_ERR_SESSION_CMDSIZE 0x100e50#define HFI_ERR_SESSION_UNSUPPORT_CMD 0x100f51#define HFI_ERR_SESSION_UNSUPPORT_BUFFERTYPE 0x101052#define HFI_ERR_SESSION_BUFFERCOUNT_TOOSMALL 0x101153#define HFI_ERR_SESSION_INVALID_SCALE_FACTOR 0x101254#define HFI_ERR_SESSION_UPSCALE_NOT_SUPPORTED 0x101355 56#define HFI_EVENT_SYS_ERROR 0x157#define HFI_EVENT_SESSION_ERROR 0x258 59#define HFI_EVENT_DATA_SEQUENCE_CHANGED_SUFFICIENT_BUF_RESOURCES 0x100000160#define HFI_EVENT_DATA_SEQUENCE_CHANGED_INSUFFICIENT_BUF_RESOURCES 0x100000261#define HFI_EVENT_SESSION_SEQUENCE_CHANGED 0x100000362#define HFI_EVENT_SESSION_PROPERTY_CHANGED 0x100000463#define HFI_EVENT_SESSION_LTRUSE_FAILED 0x100000564#define HFI_EVENT_RELEASE_BUFFER_REFERENCE 0x100000665 66#define HFI_BUFFERFLAG_EOS 0x0000000167#define HFI_BUFFERFLAG_STARTTIME 0x0000000268#define HFI_BUFFERFLAG_DECODEONLY 0x0000000469#define HFI_BUFFERFLAG_DATACORRUPT 0x0000000870#define HFI_BUFFERFLAG_ENDOFFRAME 0x0000001071#define HFI_BUFFERFLAG_SYNCFRAME 0x0000002072#define HFI_BUFFERFLAG_EXTRADATA 0x0000004073#define HFI_BUFFERFLAG_CODECCONFIG 0x0000008074#define HFI_BUFFERFLAG_TIMESTAMPINVALID 0x0000010075#define HFI_BUFFERFLAG_READONLY 0x0000020076#define HFI_BUFFERFLAG_ENDOFSUBFRAME 0x0000040077#define HFI_BUFFERFLAG_EOSEQ 0x0020000078#define HFI_BUFFERFLAG_MBAFF 0x0800000079#define HFI_BUFFERFLAG_VPE_YUV_601_709_CSC_CLAMP 0x1000000080#define HFI_BUFFERFLAG_DROP_FRAME 0x2000000081#define HFI_BUFFERFLAG_TEI 0x4000000082#define HFI_BUFFERFLAG_DISCONTINUITY 0x8000000083 84#define HFI_ERR_SESSION_EMPTY_BUFFER_DONE_OUTPUT_PENDING 0x100100185#define HFI_ERR_SESSION_SAME_STATE_OPERATION 0x100100286#define HFI_ERR_SESSION_SYNC_FRAME_NOT_DETECTED 0x100100387#define HFI_ERR_SESSION_START_CODE_NOT_FOUND 0x100100488 89#define HFI_FLUSH_INPUT 0x100000190#define HFI_FLUSH_OUTPUT 0x100000291#define HFI_FLUSH_OUTPUT2 0x100000392#define HFI_FLUSH_ALL 0x100000493 94#define HFI_EXTRADATA_NONE 0x0000000095#define HFI_EXTRADATA_MB_QUANTIZATION 0x0000000196#define HFI_EXTRADATA_INTERLACE_VIDEO 0x0000000297#define HFI_EXTRADATA_VC1_FRAMEDISP 0x0000000398#define HFI_EXTRADATA_VC1_SEQDISP 0x0000000499#define HFI_EXTRADATA_TIMESTAMP 0x00000005100#define HFI_EXTRADATA_S3D_FRAME_PACKING 0x00000006101#define HFI_EXTRADATA_FRAME_RATE 0x00000007102#define HFI_EXTRADATA_PANSCAN_WINDOW 0x00000008103#define HFI_EXTRADATA_RECOVERY_POINT_SEI 0x00000009104#define HFI_EXTRADATA_MPEG2_SEQDISP 0x0000000d105#define HFI_EXTRADATA_STREAM_USERDATA 0x0000000e106#define HFI_EXTRADATA_FRAME_QP 0x0000000f107#define HFI_EXTRADATA_FRAME_BITS_INFO 0x00000010108#define HFI_EXTRADATA_MULTISLICE_INFO 0x7f100000109#define HFI_EXTRADATA_NUM_CONCEALED_MB 0x7f100001110#define HFI_EXTRADATA_INDEX 0x7f100002111#define HFI_EXTRADATA_METADATA_LTR 0x7f100004112#define HFI_EXTRADATA_METADATA_FILLER 0x7fe00002113 114#define HFI_INDEX_EXTRADATA_INPUT_CROP 0x0700000e115#define HFI_INDEX_EXTRADATA_OUTPUT_CROP 0x0700000f116#define HFI_INDEX_EXTRADATA_DIGITAL_ZOOM 0x07000010117#define HFI_INDEX_EXTRADATA_ASPECT_RATIO 0x7f100003118 119#define HFI_INTERLACE_FRAME_PROGRESSIVE 0x01120#define HFI_INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST 0x02121#define HFI_INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST 0x04122#define HFI_INTERLACE_FRAME_TOPFIELDFIRST 0x08123#define HFI_INTERLACE_FRAME_BOTTOMFIELDFIRST 0x10124 125/*126 * HFI_PROPERTY_PARAM_OX_START127 * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000128 */129#define HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL 0x201001130#define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO 0x201002131#define HFI_PROPERTY_PARAM_INTERLACE_FORMAT_SUPPORTED 0x201003132#define HFI_PROPERTY_PARAM_CHROMA_SITE 0x201004133#define HFI_PROPERTY_PARAM_EXTRA_DATA_HEADER_CONFIG 0x201005134#define HFI_PROPERTY_PARAM_INDEX_EXTRADATA 0x201006135#define HFI_PROPERTY_PARAM_DIVX_FORMAT 0x201007136#define HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE 0x201008137#define HFI_PROPERTY_PARAM_S3D_FRAME_PACKING_EXTRADATA 0x201009138#define HFI_PROPERTY_PARAM_ERR_DETECTION_CODE_EXTRADATA 0x20100a139#define HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE_SUPPORTED 0x20100b140#define HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL 0x20100c141#define HFI_PROPERTY_PARAM_BUFFER_DISPLAY_HOLD_COUNT_ACTUAL 0x20100d142 143/*144 * HFI_PROPERTY_CONFIG_OX_START145 * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x2000146 */147#define HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS 0x202001148#define HFI_PROPERTY_CONFIG_REALTIME 0x202002149#define HFI_PROPERTY_CONFIG_PRIORITY 0x202003150#define HFI_PROPERTY_CONFIG_BATCH_INFO 0x202004151 152/*153 * HFI_PROPERTY_PARAM_VDEC_OX_START \154 * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x3000155 */156#define HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER 0x1203001157#define HFI_PROPERTY_PARAM_VDEC_DISPLAY_PICTURE_BUFFER_COUNT 0x1203002158#define HFI_PROPERTY_PARAM_VDEC_MULTI_VIEW_SELECT 0x1203003159#define HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE 0x1203004160#define HFI_PROPERTY_PARAM_VDEC_OUTPUT_ORDER 0x1203005161#define HFI_PROPERTY_PARAM_VDEC_MB_QUANTIZATION 0x1203006162#define HFI_PROPERTY_PARAM_VDEC_NUM_CONCEALED_MB 0x1203007163#define HFI_PROPERTY_PARAM_VDEC_H264_ENTROPY_SWITCHING 0x1203008164#define HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO 0x1203009165#define HFI_PROPERTY_PARAM_VDEC_FRAME_RATE_EXTRADATA 0x120300a166#define HFI_PROPERTY_PARAM_VDEC_PANSCAN_WNDW_EXTRADATA 0x120300b167#define HFI_PROPERTY_PARAM_VDEC_RECOVERY_POINT_SEI_EXTRADATA 0x120300c168#define HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE 0x120300d169#define HFI_PROPERTY_PARAM_VDEC_FRAME_ASSEMBLY 0x120300e170#define HFI_PROPERTY_PARAM_VDEC_DPB_COUNTS 0x120300e171#define HFI_PROPERTY_PARAM_VDEC_VC1_FRAMEDISP_EXTRADATA 0x1203011172#define HFI_PROPERTY_PARAM_VDEC_VC1_SEQDISP_EXTRADATA 0x1203012173#define HFI_PROPERTY_PARAM_VDEC_TIMESTAMP_EXTRADATA 0x1203013174#define HFI_PROPERTY_PARAM_VDEC_INTERLACE_VIDEO_EXTRADATA 0x1203014175#define HFI_PROPERTY_PARAM_VDEC_AVC_SESSION_SELECT 0x1203015176#define HFI_PROPERTY_PARAM_VDEC_MPEG2_SEQDISP_EXTRADATA 0x1203016177#define HFI_PROPERTY_PARAM_VDEC_STREAM_USERDATA_EXTRADATA 0x1203017178#define HFI_PROPERTY_PARAM_VDEC_FRAME_QP_EXTRADATA 0x1203018179#define HFI_PROPERTY_PARAM_VDEC_FRAME_BITS_INFO_EXTRADATA 0x1203019180#define HFI_PROPERTY_PARAM_VDEC_SCS_THRESHOLD 0x120301a181 182/*183 * HFI_PROPERTY_CONFIG_VDEC_OX_START184 * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x0000185 */186#define HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER 0x1200001187#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING 0x1200002188#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP 0x1200003189 190#define HFI_PROPERTY_CONFIG_VDEC_ENTROPY 0x1204004191 192/*193 * HFI_PROPERTY_PARAM_VENC_OX_START194 * HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x5000195 */196#define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO 0x2205001197#define HFI_PROPERTY_PARAM_VENC_H264_IDR_S3D_FRAME_PACKING_NAL 0x2205002198#define HFI_PROPERTY_PARAM_VENC_LTR_INFO 0x2205003199#define HFI_PROPERTY_PARAM_VENC_MBI_DUMPING 0x2205005200 201/*202 * HFI_PROPERTY_CONFIG_VENC_OX_START203 * HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000204 */205#define HFI_PROPERTY_CONFIG_VENC_FRAME_QP 0x2206001206 207/*208 * HFI_PROPERTY_PARAM_VPE_OX_START209 * HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x7000210 */211#define HFI_PROPERTY_PARAM_VPE_COLOR_SPACE_CONVERSION 0x3207001212 213#define HFI_PROPERTY_CONFIG_VPE_OX_START \214 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x8000)215 216#define HFI_CHROMA_SITE_0 0x1000001217#define HFI_CHROMA_SITE_1 0x1000002218#define HFI_CHROMA_SITE_2 0x1000003219#define HFI_CHROMA_SITE_3 0x1000004220#define HFI_CHROMA_SITE_4 0x1000005221#define HFI_CHROMA_SITE_5 0x1000006222 223#define HFI_PRIORITY_LOW 10224#define HFI_PRIOIRTY_MEDIUM 20225#define HFI_PRIORITY_HIGH 30226 227#define HFI_OUTPUT_ORDER_DISPLAY 0x1000001228#define HFI_OUTPUT_ORDER_DECODE 0x1000002229 230#define HFI_RATE_CONTROL_OFF 0x1000001231#define HFI_RATE_CONTROL_VBR_VFR 0x1000002232#define HFI_RATE_CONTROL_VBR_CFR 0x1000003233#define HFI_RATE_CONTROL_CBR_VFR 0x1000004234#define HFI_RATE_CONTROL_CBR_CFR 0x1000005235#define HFI_RATE_CONTROL_CQ 0x1000008236 237#define HFI_VIDEO_CODEC_H264 0x00000002238#define HFI_VIDEO_CODEC_H263 0x00000004239#define HFI_VIDEO_CODEC_MPEG1 0x00000008240#define HFI_VIDEO_CODEC_MPEG2 0x00000010241#define HFI_VIDEO_CODEC_MPEG4 0x00000020242#define HFI_VIDEO_CODEC_DIVX_311 0x00000040243#define HFI_VIDEO_CODEC_DIVX 0x00000080244#define HFI_VIDEO_CODEC_VC1 0x00000100245#define HFI_VIDEO_CODEC_SPARK 0x00000200246#define HFI_VIDEO_CODEC_VP8 0x00001000247#define HFI_VIDEO_CODEC_HEVC 0x00002000248#define HFI_VIDEO_CODEC_VP9 0x00004000249#define HFI_VIDEO_CODEC_HEVC_HYBRID 0x80000000250 251#define HFI_H264_PROFILE_BASELINE 0x00000001252#define HFI_H264_PROFILE_MAIN 0x00000002253#define HFI_H264_PROFILE_HIGH 0x00000004254#define HFI_H264_PROFILE_STEREO_HIGH 0x00000008255#define HFI_H264_PROFILE_MULTIVIEW_HIGH 0x00000010256#define HFI_H264_PROFILE_CONSTRAINED_BASE 0x00000020257#define HFI_H264_PROFILE_CONSTRAINED_HIGH 0x00000040258 259#define HFI_H264_LEVEL_1 0x00000001260#define HFI_H264_LEVEL_1b 0x00000002261#define HFI_H264_LEVEL_11 0x00000004262#define HFI_H264_LEVEL_12 0x00000008263#define HFI_H264_LEVEL_13 0x00000010264#define HFI_H264_LEVEL_2 0x00000020265#define HFI_H264_LEVEL_21 0x00000040266#define HFI_H264_LEVEL_22 0x00000080267#define HFI_H264_LEVEL_3 0x00000100268#define HFI_H264_LEVEL_31 0x00000200269#define HFI_H264_LEVEL_32 0x00000400270#define HFI_H264_LEVEL_4 0x00000800271#define HFI_H264_LEVEL_41 0x00001000272#define HFI_H264_LEVEL_42 0x00002000273#define HFI_H264_LEVEL_5 0x00004000274#define HFI_H264_LEVEL_51 0x00008000275#define HFI_H264_LEVEL_52 0x00010000276 277#define HFI_H263_PROFILE_BASELINE 0x00000001278 279#define HFI_H263_LEVEL_10 0x00000001280#define HFI_H263_LEVEL_20 0x00000002281#define HFI_H263_LEVEL_30 0x00000004282#define HFI_H263_LEVEL_40 0x00000008283#define HFI_H263_LEVEL_45 0x00000010284#define HFI_H263_LEVEL_50 0x00000020285#define HFI_H263_LEVEL_60 0x00000040286#define HFI_H263_LEVEL_70 0x00000080287 288#define HFI_MPEG2_PROFILE_SIMPLE 0x00000001289#define HFI_MPEG2_PROFILE_MAIN 0x00000002290#define HFI_MPEG2_PROFILE_422 0x00000004291#define HFI_MPEG2_PROFILE_SNR 0x00000008292#define HFI_MPEG2_PROFILE_SPATIAL 0x00000010293#define HFI_MPEG2_PROFILE_HIGH 0x00000020294 295#define HFI_MPEG2_LEVEL_LL 0x00000001296#define HFI_MPEG2_LEVEL_ML 0x00000002297#define HFI_MPEG2_LEVEL_H14 0x00000004298#define HFI_MPEG2_LEVEL_HL 0x00000008299 300#define HFI_MPEG4_PROFILE_SIMPLE 0x00000001301#define HFI_MPEG4_PROFILE_ADVANCEDSIMPLE 0x00000002302 303#define HFI_MPEG4_LEVEL_0 0x00000001304#define HFI_MPEG4_LEVEL_0b 0x00000002305#define HFI_MPEG4_LEVEL_1 0x00000004306#define HFI_MPEG4_LEVEL_2 0x00000008307#define HFI_MPEG4_LEVEL_3 0x00000010308#define HFI_MPEG4_LEVEL_4 0x00000020309#define HFI_MPEG4_LEVEL_4a 0x00000040310#define HFI_MPEG4_LEVEL_5 0x00000080311#define HFI_MPEG4_LEVEL_6 0x00000100312#define HFI_MPEG4_LEVEL_7 0x00000200313#define HFI_MPEG4_LEVEL_8 0x00000400314#define HFI_MPEG4_LEVEL_9 0x00000800315#define HFI_MPEG4_LEVEL_3b 0x00001000316 317#define HFI_VC1_PROFILE_SIMPLE 0x00000001318#define HFI_VC1_PROFILE_MAIN 0x00000002319#define HFI_VC1_PROFILE_ADVANCED 0x00000004320 321#define HFI_VC1_LEVEL_LOW 0x00000001322#define HFI_VC1_LEVEL_MEDIUM 0x00000002323#define HFI_VC1_LEVEL_HIGH 0x00000004324#define HFI_VC1_LEVEL_0 0x00000008325#define HFI_VC1_LEVEL_1 0x00000010326#define HFI_VC1_LEVEL_2 0x00000020327#define HFI_VC1_LEVEL_3 0x00000040328#define HFI_VC1_LEVEL_4 0x00000080329 330#define HFI_VPX_PROFILE_SIMPLE 0x00000001331#define HFI_VPX_PROFILE_ADVANCED 0x00000002332#define HFI_VPX_PROFILE_VERSION_0 0x00000004333#define HFI_VPX_PROFILE_VERSION_1 0x00000008334#define HFI_VPX_PROFILE_VERSION_2 0x00000010335#define HFI_VPX_PROFILE_VERSION_3 0x00000020336 337#define HFI_DIVX_FORMAT_4 0x1338#define HFI_DIVX_FORMAT_5 0x2339#define HFI_DIVX_FORMAT_6 0x3340 341#define HFI_DIVX_PROFILE_QMOBILE 0x00000001342#define HFI_DIVX_PROFILE_MOBILE 0x00000002343#define HFI_DIVX_PROFILE_MT 0x00000004344#define HFI_DIVX_PROFILE_HT 0x00000008345#define HFI_DIVX_PROFILE_HD 0x00000010346 347#define HFI_HEVC_PROFILE_MAIN 0x00000001348#define HFI_HEVC_PROFILE_MAIN10 0x00000002349#define HFI_HEVC_PROFILE_MAIN_STILL_PIC 0x00000004350 351#define HFI_HEVC_LEVEL_1 0x00000001352#define HFI_HEVC_LEVEL_2 0x00000002353#define HFI_HEVC_LEVEL_21 0x00000004354#define HFI_HEVC_LEVEL_3 0x00000008355#define HFI_HEVC_LEVEL_31 0x00000010356#define HFI_HEVC_LEVEL_4 0x00000020357#define HFI_HEVC_LEVEL_41 0x00000040358#define HFI_HEVC_LEVEL_5 0x00000080359#define HFI_HEVC_LEVEL_51 0x00000100360#define HFI_HEVC_LEVEL_52 0x00000200361#define HFI_HEVC_LEVEL_6 0x00000400362#define HFI_HEVC_LEVEL_61 0x00000800363#define HFI_HEVC_LEVEL_62 0x00001000364 365#define HFI_HEVC_TIER_MAIN 0x1366#define HFI_HEVC_TIER_HIGH0 0x2367 368#define HFI_VPX_PROFILE_MAIN 0x00000001369 370#define HFI_VPX_LEVEL_VERSION_0 0x00000001371#define HFI_VPX_LEVEL_VERSION_1 0x00000002372#define HFI_VPX_LEVEL_VERSION_2 0x00000004373#define HFI_VPX_LEVEL_VERSION_3 0x00000008374 375/* VP9 Profile 0, 8-bit */376#define HFI_VP9_PROFILE_P0 0x00000001377/* VP9 Profile 2, 10-bit */378#define HFI_VP9_PROFILE_P2_10B 0x00000004379 380#define HFI_VP9_LEVEL_1 0x00000001381#define HFI_VP9_LEVEL_11 0x00000002382#define HFI_VP9_LEVEL_2 0x00000004383#define HFI_VP9_LEVEL_21 0x00000008384#define HFI_VP9_LEVEL_3 0x00000010385#define HFI_VP9_LEVEL_31 0x00000020386#define HFI_VP9_LEVEL_4 0x00000040387#define HFI_VP9_LEVEL_41 0x00000080388#define HFI_VP9_LEVEL_5 0x00000100389#define HFI_VP9_LEVEL_51 0x00000200390#define HFI_VP9_LEVEL_6 0x00000400391#define HFI_VP9_LEVEL_61 0x00000800392 393#define HFI_BUFFER_INPUT 0x1394#define HFI_BUFFER_OUTPUT 0x2395#define HFI_BUFFER_OUTPUT2 0x3396#define HFI_BUFFER_INTERNAL_PERSIST 0x4397#define HFI_BUFFER_INTERNAL_PERSIST_1 0x5398#define HFI_BUFFER_INTERNAL_SCRATCH(ver) \399 (((ver) == HFI_VERSION_4XX || \400 (ver) == HFI_VERSION_6XX) ? 0x6 : 0x1000001)401#define HFI_BUFFER_INTERNAL_SCRATCH_1(ver) \402 (((ver) == HFI_VERSION_4XX || \403 (ver) == HFI_VERSION_6XX) ? 0x7 : 0x1000005)404#define HFI_BUFFER_INTERNAL_SCRATCH_2(ver) \405 (((ver) == HFI_VERSION_4XX || \406 (ver) == HFI_VERSION_6XX) ? 0x8 : 0x1000006)407#define HFI_BUFFER_EXTRADATA_INPUT(ver) \408 (((ver) == HFI_VERSION_4XX) ? 0xc : 0x1000002)409#define HFI_BUFFER_EXTRADATA_OUTPUT(ver) \410 (((ver) == HFI_VERSION_4XX) ? 0xa : 0x1000003)411#define HFI_BUFFER_EXTRADATA_OUTPUT2(ver) \412 (((ver) == HFI_VERSION_4XX) ? 0xb : 0x1000004)413#define HFI_BUFFER_TYPE_MAX 11414 415#define HFI_BUFFER_MODE_STATIC 0x1000001416#define HFI_BUFFER_MODE_RING 0x1000002417#define HFI_BUFFER_MODE_DYNAMIC 0x1000003418 419/*420 * HFI_PROPERTY_SYS_COMMON_START421 * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_COMMON_OFFSET + 0x0000422 */423#define HFI_PROPERTY_SYS_DEBUG_CONFIG 0x1424#define HFI_PROPERTY_SYS_RESOURCE_OCMEM_REQUIREMENT_INFO 0x2425#define HFI_PROPERTY_SYS_CONFIG_VCODEC_CLKFREQ 0x3426#define HFI_PROPERTY_SYS_IDLE_INDICATOR 0x4427#define HFI_PROPERTY_SYS_CODEC_POWER_PLANE_CTRL 0x5428#define HFI_PROPERTY_SYS_IMAGE_VERSION 0x6429#define HFI_PROPERTY_SYS_CONFIG_COVERAGE 0x7430#define HFI_PROPERTY_SYS_UBWC_CONFIG 0x8431 432/*433 * HFI_PROPERTY_PARAM_COMMON_START434 * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_COMMON_OFFSET + 0x1000435 */436#define HFI_PROPERTY_PARAM_FRAME_SIZE 0x1001437#define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO 0x1002438#define HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT 0x1003439#define HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SUPPORTED 0x1004440#define HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT 0x1005441#define HFI_PROPERTY_PARAM_PROFILE_LEVEL_SUPPORTED 0x1006442#define HFI_PROPERTY_PARAM_CAPABILITY_SUPPORTED 0x1007443#define HFI_PROPERTY_PARAM_PROPERTIES_SUPPORTED 0x1008444#define HFI_PROPERTY_PARAM_CODEC_SUPPORTED 0x1009445#define HFI_PROPERTY_PARAM_NAL_STREAM_FORMAT_SUPPORTED 0x100a446#define HFI_PROPERTY_PARAM_NAL_STREAM_FORMAT_SELECT 0x100b447#define HFI_PROPERTY_PARAM_MULTI_VIEW_FORMAT 0x100c448#define HFI_PROPERTY_PARAM_MAX_SEQUENCE_HEADER_SIZE 0x100d449#define HFI_PROPERTY_PARAM_CODEC_MASK_SUPPORTED 0x100e450#define HFI_PROPERTY_PARAM_MVC_BUFFER_LAYOUT 0x100f451#define HFI_PROPERTY_PARAM_MAX_SESSIONS_SUPPORTED 0x1010452#define HFI_PROPERTY_PARAM_WORK_MODE 0x1015453#define HFI_PROPERTY_PARAM_WORK_ROUTE 0x1017454 455/*456 * HFI_PROPERTY_CONFIG_COMMON_START457 * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_COMMON_OFFSET + 0x2000458 */459#define HFI_PROPERTY_CONFIG_FRAME_RATE 0x2001460#define HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE 0x2002461 462/*463 * HFI_PROPERTY_PARAM_VDEC_COMMON_START464 * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_COMMON_OFFSET + 0x3000465 */466#define HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM 0x1003001467#define HFI_PROPERTY_PARAM_VDEC_CONCEAL_COLOR 0x1003002468#define HFI_PROPERTY_PARAM_VDEC_NONCP_OUTPUT2 0x1003003469#define HFI_PROPERTY_PARAM_VDEC_PIXEL_BITDEPTH 0x1003007470#define HFI_PROPERTY_PARAM_VDEC_PIC_STRUCT 0x1003009471#define HFI_PROPERTY_PARAM_VDEC_COLOUR_SPACE 0x100300a472#define HFI_PROPERTY_PARAM_VDEC_ENABLE_SUFFICIENT_SEQCHANGE_EVENT \473 0x100300b474 475/*476 * HFI_PROPERTY_CONFIG_VDEC_COMMON_START477 * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_COMMON_OFFSET + 0x4000478 */479 480/*481 * HFI_PROPERTY_PARAM_VENC_COMMON_START482 * HFI_DOMAIN_BASE_VENC + HFI_ARCH_COMMON_OFFSET + 0x5000483 */484#define HFI_PROPERTY_PARAM_VENC_SLICE_DELIVERY_MODE 0x2005001485#define HFI_PROPERTY_PARAM_VENC_H264_ENTROPY_CONTROL 0x2005002486#define HFI_PROPERTY_PARAM_VENC_H264_DEBLOCK_CONTROL 0x2005003487#define HFI_PROPERTY_PARAM_VENC_RATE_CONTROL 0x2005004488#define HFI_PROPERTY_PARAM_VENC_H264_PICORDER_CNT_TYPE 0x2005005489#define HFI_PROPERTY_PARAM_VENC_SESSION_QP 0x2005006490#define HFI_PROPERTY_PARAM_VENC_MPEG4_AC_PREDICTION 0x2005007491#define HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE 0x2005008492/*493 * Note: HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE_V2 is494 * specific to HFI_VERSION_6XX and HFI_VERSION_4XX only495 */496#define HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE_V2 0x2005009497#define HFI_PROPERTY_PARAM_VENC_MPEG4_TIME_RESOLUTION 0x2005009498#define HFI_PROPERTY_PARAM_VENC_MPEG4_SHORT_HEADER 0x200500a499#define HFI_PROPERTY_PARAM_VENC_MPEG4_HEADER_EXTENSION 0x200500b500#define HFI_PROPERTY_PARAM_VENC_OPEN_GOP 0x200500c501#define HFI_PROPERTY_PARAM_VENC_INTRA_REFRESH 0x200500d502#define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_CONTROL 0x200500e503#define HFI_PROPERTY_PARAM_VENC_VBV_HRD_BUF_SIZE 0x200500f504#define HFI_PROPERTY_PARAM_VENC_QUALITY_VS_SPEED 0x2005010505#define HFI_PROPERTY_PARAM_VENC_ADVANCED 0x2005012506#define HFI_PROPERTY_PARAM_VENC_H264_SPS_ID 0x2005014507#define HFI_PROPERTY_PARAM_VENC_H264_PPS_ID 0x2005015508#define HFI_PROPERTY_PARAM_VENC_H264_GENERATE_AUDNAL 0x2005016509#define HFI_PROPERTY_PARAM_VENC_ASPECT_RATIO 0x2005017510#define HFI_PROPERTY_PARAM_VENC_NUMREF 0x2005018511#define HFI_PROPERTY_PARAM_VENC_MULTIREF_P 0x2005019512#define HFI_PROPERTY_PARAM_VENC_H264_NAL_SVC_EXT 0x200501b513#define HFI_PROPERTY_PARAM_VENC_LTRMODE 0x200501c514#define HFI_PROPERTY_PARAM_VENC_VIDEO_FULL_RANGE 0x200501d515#define HFI_PROPERTY_PARAM_VENC_H264_VUI_TIMING_INFO 0x200501e516#define HFI_PROPERTY_PARAM_VENC_VC1_PERF_CFG 0x200501f517#define HFI_PROPERTY_PARAM_VENC_MAX_NUM_B_FRAMES 0x2005020518#define HFI_PROPERTY_PARAM_VENC_H264_VUI_BITSTREAM_RESTRC 0x2005021519#define HFI_PROPERTY_PARAM_VENC_PRESERVE_TEXT_QUALITY 0x2005023520#define HFI_PROPERTY_PARAM_VENC_H264_TRANSFORM_8X8 0x2005025521#define HFI_PROPERTY_PARAM_VENC_HIER_P_MAX_NUM_ENH_LAYER 0x2005026522#define HFI_PROPERTY_PARAM_VENC_DISABLE_RC_TIMESTAMP 0x2005027523#define HFI_PROPERTY_PARAM_VENC_INITIAL_QP 0x2005028524#define HFI_PROPERTY_PARAM_VENC_VPX_ERROR_RESILIENCE_MODE 0x2005029525#define HFI_PROPERTY_PARAM_VENC_HIER_B_MAX_NUM_ENH_LAYER 0x200502c526#define HFI_PROPERTY_PARAM_VENC_HIER_P_HYBRID_MODE 0x200502f527#define HFI_PROPERTY_PARAM_VENC_HDR10_PQ_SEI 0x2005036528 529/*530 * HFI_PROPERTY_CONFIG_VENC_COMMON_START531 * HFI_DOMAIN_BASE_VENC + HFI_ARCH_COMMON_OFFSET + 0x6000532 */533#define HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE 0x2006001534#define HFI_PROPERTY_CONFIG_VENC_IDR_PERIOD 0x2006002535#define HFI_PROPERTY_CONFIG_VENC_INTRA_PERIOD 0x2006003536#define HFI_PROPERTY_CONFIG_VENC_REQUEST_SYNC_FRAME 0x2006004537#define HFI_PROPERTY_CONFIG_VENC_SLICE_SIZE 0x2006005538#define HFI_PROPERTY_CONFIG_VENC_MAX_BITRATE 0x2006007539#define HFI_PROPERTY_CONFIG_VENC_SYNC_FRAME_SEQUENCE_HEADER 0x2006008540#define HFI_PROPERTY_CONFIG_VENC_MARKLTRFRAME 0x2006009541#define HFI_PROPERTY_CONFIG_VENC_USELTRFRAME 0x200600a542#define HFI_PROPERTY_CONFIG_VENC_HIER_P_ENH_LAYER 0x200600b543#define HFI_PROPERTY_CONFIG_VENC_LTRPERIOD 0x200600c544#define HFI_PROPERTY_CONFIG_VENC_PERF_MODE 0x200600e545#define HFI_PROPERTY_CONFIG_HEIC_FRAME_QUALITY 0x2006014546 547/*548 * HFI_PROPERTY_PARAM_VPE_COMMON_START549 * HFI_DOMAIN_BASE_VPE + HFI_ARCH_COMMON_OFFSET + 0x7000550 */551 552/*553 * HFI_PROPERTY_CONFIG_VPE_COMMON_START554 * HFI_DOMAIN_BASE_VPE + HFI_ARCH_COMMON_OFFSET + 0x8000555 */556#define HFI_PROPERTY_CONFIG_VPE_DEINTERLACE 0x3008001557#define HFI_PROPERTY_CONFIG_VPE_OPERATIONS 0x3008002558 559enum hfi_version {560 HFI_VERSION_1XX,561 HFI_VERSION_3XX,562 HFI_VERSION_4XX,563 HFI_VERSION_6XX,564};565 566struct hfi_buffer_info {567 u32 buffer_addr;568 u32 extradata_addr;569};570 571struct hfi_bitrate {572 u32 bitrate;573 u32 layer_id;574};575 576struct hfi_h264_8x8_transform {577 u32 enable_type;578};579 580#define HFI_CAPABILITY_FRAME_WIDTH 0x01581#define HFI_CAPABILITY_FRAME_HEIGHT 0x02582#define HFI_CAPABILITY_MBS_PER_FRAME 0x03583#define HFI_CAPABILITY_MBS_PER_SECOND 0x04584#define HFI_CAPABILITY_FRAMERATE 0x05585#define HFI_CAPABILITY_SCALE_X 0x06586#define HFI_CAPABILITY_SCALE_Y 0x07587#define HFI_CAPABILITY_BITRATE 0x08588#define HFI_CAPABILITY_BFRAME 0x09589#define HFI_CAPABILITY_PEAKBITRATE 0x0a590#define HFI_CAPABILITY_HIER_P_NUM_ENH_LAYERS 0x10591#define HFI_CAPABILITY_ENC_LTR_COUNT 0x11592#define HFI_CAPABILITY_CP_OUTPUT2_THRESH 0x12593#define HFI_CAPABILITY_HIER_B_NUM_ENH_LAYERS 0x13594#define HFI_CAPABILITY_LCU_SIZE 0x14595#define HFI_CAPABILITY_HIER_P_HYBRID_NUM_ENH_LAYERS 0x15596#define HFI_CAPABILITY_MBS_PER_SECOND_POWERSAVE 0x16597#define HFI_CAPABILITY_I_FRAME_QP 0x20598#define HFI_CAPABILITY_P_FRAME_QP 0x21599#define HFI_CAPABILITY_B_FRAME_QP 0x22600#define HFI_CAPABILITY_RATE_CONTROL_MODES 0x23601#define HFI_CAPABILITY_BLUR_WIDTH 0x24602#define HFI_CAPABILITY_BLUR_HEIGHT 0x25603#define HFI_CAPABILITY_SLICE_BYTE 0x27604#define HFI_CAPABILITY_SLICE_MB 0x28605#define HFI_CAPABILITY_MAX_VIDEOCORES 0x2b606#define HFI_CAPABILITY_MAX_WORKMODES 0x2c607#define HFI_CAPABILITY_ROTATION 0x2f608#define HFI_CAPABILITY_COLOR_SPACE_CONVERSION 0x30609 610struct hfi_capability {611 u32 capability_type;612 u32 min;613 u32 max;614 u32 step_size;615};616 617struct hfi_capabilities {618 u32 num_capabilities;619 struct hfi_capability data[];620};621 622#define HFI_DEBUG_MSG_LOW 0x01623#define HFI_DEBUG_MSG_MEDIUM 0x02624#define HFI_DEBUG_MSG_HIGH 0x04625#define HFI_DEBUG_MSG_ERROR 0x08626#define HFI_DEBUG_MSG_FATAL 0x10627#define HFI_DEBUG_MSG_PERF 0x20628 629#define HFI_DEBUG_MODE_QUEUE 0x01630#define HFI_DEBUG_MODE_QDSS 0x02631 632struct hfi_debug_config {633 u32 config;634 u32 mode;635};636 637struct hfi_ubwc_config {638 u32 size;639 u32 packet_type;640 struct {641 u32 max_channel_override : 1;642 u32 mal_length_override : 1;643 u32 hb_override : 1;644 u32 bank_swzl_level_override : 1;645 u32 bank_spreading_override : 1;646 u32 reserved : 27;647 } override_bit_info;648 u32 max_channels;649 u32 mal_length;650 u32 highest_bank_bit;651 u32 bank_swzl_level;652 u32 bank_spreading;653 u32 reserved[2];654};655 656struct hfi_enable {657 u32 enable;658};659 660#define HFI_H264_DB_MODE_DISABLE 0x1661#define HFI_H264_DB_MODE_SKIP_SLICE_BOUNDARY 0x2662#define HFI_H264_DB_MODE_ALL_BOUNDARY 0x3663 664struct hfi_h264_db_control {665 u32 mode;666 s32 slice_alpha_offset;667 s32 slice_beta_offset;668};669 670#define HFI_H264_ENTROPY_CAVLC 0x1671#define HFI_H264_ENTROPY_CABAC 0x2672 673#define HFI_H264_CABAC_MODEL_0 0x1674#define HFI_H264_CABAC_MODEL_1 0x2675#define HFI_H264_CABAC_MODEL_2 0x3676 677struct hfi_h264_entropy_control {678 u32 entropy_mode;679 u32 cabac_model;680};681 682struct hfi_framerate {683 u32 buffer_type;684 u32 framerate;685};686 687#define HFI_INTRA_REFRESH_NONE 0x1688#define HFI_INTRA_REFRESH_CYCLIC 0x2689#define HFI_INTRA_REFRESH_ADAPTIVE 0x3690#define HFI_INTRA_REFRESH_CYCLIC_ADAPTIVE 0x4691#define HFI_INTRA_REFRESH_RANDOM 0x5692 693struct hfi_intra_refresh {694 u32 mode;695 u32 air_mbs;696 u32 air_ref;697 u32 cir_mbs;698};699 700struct hfi_intra_refresh_3x {701 u32 mode;702 u32 mbs;703};704 705struct hfi_idr_period {706 u32 idr_period;707};708 709struct hfi_operations_type {710 u32 rotation;711 u32 flip;712};713 714struct hfi_max_num_b_frames {715 u32 max_num_b_frames;716};717 718struct hfi_vc1e_perf_cfg_type {719 u32 search_range_x_subsampled[3];720 u32 search_range_y_subsampled[3];721};722 723/*724 * 0 - 7bit -> Luma (def: 16)725 * 8 - 15bit -> Chroma (def: 128)726 * format is valid up to v4727 */728struct hfi_conceal_color {729 u32 conceal_color;730};731 732struct hfi_conceal_color_v4 {733 u32 conceal_color_8bit;734 u32 conceal_color_10bit;735};736 737struct hfi_intra_period {738 u32 pframes;739 u32 bframes;740};741 742struct hfi_mpeg4_header_extension {743 u32 header_extension;744};745 746struct hfi_mpeg4_time_resolution {747 u32 time_increment_resolution;748};749 750struct hfi_multi_stream {751 u32 buffer_type;752 u32 enable;753 u32 width;754 u32 height;755};756 757struct hfi_multi_stream_3x {758 u32 buffer_type;759 u32 enable;760};761 762struct hfi_multi_view_format {763 u32 views;764 u32 view_order[];765};766 767#define HFI_MULTI_SLICE_OFF 0x1768#define HFI_MULTI_SLICE_BY_MB_COUNT 0x2769#define HFI_MULTI_SLICE_BY_BYTE_COUNT 0x3770#define HFI_MULTI_SLICE_GOB 0x4771 772struct hfi_multi_slice_control {773 u32 multi_slice;774 u32 slice_size;775};776 777#define HFI_NAL_FORMAT_STARTCODES 0x01778#define HFI_NAL_FORMAT_ONE_NAL_PER_BUFFER 0x02779#define HFI_NAL_FORMAT_ONE_BYTE_LENGTH 0x04780#define HFI_NAL_FORMAT_TWO_BYTE_LENGTH 0x08781#define HFI_NAL_FORMAT_FOUR_BYTE_LENGTH 0x10782 783struct hfi_nal_stream_format {784 u32 format;785};786 787struct hfi_nal_stream_format_select {788 u32 format;789};790 791#define HFI_PICTURE_TYPE_I 0x01792#define HFI_PICTURE_TYPE_P 0x02793#define HFI_PICTURE_TYPE_B 0x04794#define HFI_PICTURE_TYPE_IDR 0x08795 796struct hfi_profile_level {797 u32 profile;798 u32 level;799};800 801#define HFI_MAX_PROFILE_COUNT 16802 803struct hfi_profile_level_supported {804 u32 profile_count;805 struct hfi_profile_level profile_level[];806};807 808struct hfi_quality_vs_speed {809 u32 quality_vs_speed;810};811 812struct hfi_heic_frame_quality {813 u32 frame_quality;814 u32 reserved[3];815};816 817struct hfi_quantization {818 u32 qp_i;819 u32 qp_p;820 u32 qp_b;821 u32 layer_id;822};823 824struct hfi_initial_quantization {825 u32 qp_i;826 u32 qp_p;827 u32 qp_b;828 u32 init_qp_enable;829};830 831struct hfi_quantization_range {832 u32 min_qp;833 u32 max_qp;834 u32 layer_id;835};836 837struct hfi_quantization_v2 {838 u32 qp_packed;839 u32 layer_id;840 u32 enable;841 u32 reserved[3];842};843 844struct hfi_quantization_range_v2 {845 struct hfi_quantization_v2 min_qp;846 struct hfi_quantization_v2 max_qp;847 u32 reserved[4];848};849 850#define HFI_LTR_MODE_DISABLE 0x0851#define HFI_LTR_MODE_MANUAL 0x1852#define HFI_LTR_MODE_PERIODIC 0x2853 854struct hfi_ltr_mode {855 u32 ltr_mode;856 u32 ltr_count;857 u32 trust_mode;858};859 860struct hfi_ltr_use {861 u32 ref_ltr;862 u32 use_constrnt;863 u32 frames;864};865 866struct hfi_ltr_mark {867 u32 mark_frame;868};869 870struct hfi_mastering_display_colour_sei_payload {871 u32 display_primaries_x[3];872 u32 display_primaries_y[3];873 u32 white_point_x;874 u32 white_point_y;875 u32 max_display_mastering_luminance;876 u32 min_display_mastering_luminance;877};878 879struct hfi_content_light_level_sei_payload {880 u32 max_content_light;881 u32 max_pic_average_light;882};883 884struct hfi_hdr10_pq_sei {885 struct hfi_mastering_display_colour_sei_payload mastering;886 struct hfi_content_light_level_sei_payload cll;887};888 889struct hfi_framesize {890 u32 buffer_type;891 u32 width;892 u32 height;893};894 895#define HFI_VENC_PERFMODE_MAX_QUALITY 0x1896#define HFI_VENC_PERFMODE_POWER_SAVE 0x2897 898struct hfi_perf_mode {899 u32 video_perf_mode;900};901 902#define VIDC_CORE_ID_DEFAULT 0903#define VIDC_CORE_ID_1 1904#define VIDC_CORE_ID_2 2905#define VIDC_CORE_ID_3 3906 907struct hfi_videocores_usage_type {908 u32 video_core_enable_mask;909};910 911#define VIDC_WORK_MODE_1 1912#define VIDC_WORK_MODE_2 2913 914struct hfi_video_work_mode {915 u32 video_work_mode;916};917 918struct hfi_video_work_route {919 u32 video_work_route;920};921 922struct hfi_h264_vui_timing_info {923 u32 enable;924 u32 fixed_framerate;925 u32 time_scale;926};927 928#define VIDC_BITDEPTH_8 0x00000929#define VIDC_BITDEPTH_10 0x20002930 931struct hfi_bit_depth {932 u32 buffer_type;933 u32 bit_depth;934};935 936struct hfi_picture_type {937 u32 is_sync_frame;938 u32 picture_type;939};940 941struct hfi_pic_struct {942 u32 progressive_only;943};944 945struct hfi_colour_space {946 u32 colour_space;947};948 949struct hfi_extradata_input_crop {950 u32 size;951 u32 version;952 u32 port_index;953 u32 left;954 u32 top;955 u32 width;956 u32 height;957};958 959struct hfi_dpb_counts {960 u32 max_dpb_count;961 u32 max_ref_frames;962 u32 max_dec_buffering;963 u32 max_reorder_frames;964 u32 fw_min_cnt;965};966 967#define HFI_COLOR_FORMAT_MONOCHROME 0x01968#define HFI_COLOR_FORMAT_NV12 0x02969#define HFI_COLOR_FORMAT_NV21 0x03970#define HFI_COLOR_FORMAT_NV12_4x4TILE 0x04971#define HFI_COLOR_FORMAT_NV21_4x4TILE 0x05972#define HFI_COLOR_FORMAT_YUYV 0x06973#define HFI_COLOR_FORMAT_YVYU 0x07974#define HFI_COLOR_FORMAT_UYVY 0x08975#define HFI_COLOR_FORMAT_VYUY 0x09976#define HFI_COLOR_FORMAT_RGB565 0x0a977#define HFI_COLOR_FORMAT_BGR565 0x0b978#define HFI_COLOR_FORMAT_RGB888 0x0c979#define HFI_COLOR_FORMAT_BGR888 0x0d980#define HFI_COLOR_FORMAT_YUV444 0x0e981#define HFI_COLOR_FORMAT_RGBA8888 0x10982 983#define HFI_COLOR_FORMAT_UBWC_BASE 0x8000984#define HFI_COLOR_FORMAT_10_BIT_BASE 0x4000985 986#define HFI_COLOR_FORMAT_YUV420_TP10 0x4002987#define HFI_COLOR_FORMAT_P010 0x4003988#define HFI_COLOR_FORMAT_NV12_UBWC 0x8002989#define HFI_COLOR_FORMAT_YUV420_TP10_UBWC 0xc002990#define HFI_COLOR_FORMAT_P010_UBWC 0xc003991#define HFI_COLOR_FORMAT_RGBA8888_UBWC 0x8010992 993struct hfi_uncompressed_format_select {994 u32 buffer_type;995 u32 format;996};997 998struct hfi_uncompressed_plane_constraints {999 u32 stride_multiples;1000 u32 max_stride;1001 u32 min_plane_buffer_height_multiple;1002 u32 buffer_alignment;1003};1004 1005struct hfi_uncompressed_plane_info {1006 u32 format;1007 u32 num_planes;1008 struct hfi_uncompressed_plane_constraints plane_constraints;1009};1010 1011struct hfi_uncompressed_format_supported {1012 u32 buffer_type;1013 u32 format_entries;1014 struct hfi_uncompressed_plane_info plane_info;1015};1016 1017struct hfi_uncompressed_plane_actual {1018 int actual_stride;1019 u32 actual_plane_buffer_height;1020};1021 1022struct hfi_uncompressed_plane_actual_info {1023 u32 buffer_type;1024 u32 num_planes;1025 struct hfi_uncompressed_plane_actual plane_format[2];1026};1027 1028struct hfi_uncompressed_plane_actual_constraints_info {1029 u32 buffer_type;1030 u32 num_planes;1031 struct hfi_uncompressed_plane_constraints plane_format[2];1032};1033 1034struct hfi_codec_supported {1035 u32 dec_codecs;1036 u32 enc_codecs;1037};1038 1039struct hfi_properties_supported {1040 u32 num_properties;1041 u32 properties[];1042};1043 1044struct hfi_max_sessions_supported {1045 u32 max_sessions;1046};1047 1048#define HFI_MAX_MATRIX_COEFFS 91049#define HFI_MAX_BIAS_COEFFS 31050#define HFI_MAX_LIMIT_COEFFS 61051 1052struct hfi_vpe_color_space_conversion {1053 u32 csc_matrix[HFI_MAX_MATRIX_COEFFS];1054 u32 csc_bias[HFI_MAX_BIAS_COEFFS];1055 u32 csc_limit[HFI_MAX_LIMIT_COEFFS];1056};1057 1058#define HFI_ROTATE_NONE 0x11059#define HFI_ROTATE_90 0x21060#define HFI_ROTATE_180 0x31061#define HFI_ROTATE_270 0x41062 1063#define HFI_FLIP_NONE 0x11064#define HFI_FLIP_HORIZONTAL 0x21065#define HFI_FLIP_VERTICAL 0x31066 1067struct hfi_operations {1068 u32 rotate;1069 u32 flip;1070};1071 1072#define HFI_RESOURCE_OCMEM 0x11073 1074struct hfi_resource_ocmem {1075 u32 size;1076 u32 mem;1077};1078 1079struct hfi_resource_ocmem_requirement {1080 u32 session_domain;1081 u32 width;1082 u32 height;1083 u32 size;1084};1085 1086struct hfi_resource_ocmem_requirement_info {1087 u32 num_entries;1088 struct hfi_resource_ocmem_requirement requirements[];1089};1090 1091struct hfi_property_sys_image_version_info_type {1092 u32 string_size;1093 u8 str_image_version[];1094};1095 1096struct hfi_codec_mask_supported {1097 u32 codecs;1098 u32 video_domains;1099};1100 1101struct hfi_seq_header_info {1102 u32 max_hader_len;1103};1104 1105struct hfi_aspect_ratio {1106 u32 aspect_width;1107 u32 aspect_height;1108};1109 1110#define HFI_MVC_BUFFER_LAYOUT_TOP_BOTTOM 01111#define HFI_MVC_BUFFER_LAYOUT_SIDEBYSIDE 11112#define HFI_MVC_BUFFER_LAYOUT_SEQ 21113 1114struct hfi_mvc_buffer_layout_descp_type {1115 u32 layout_type;1116 u32 bright_view_first;1117 u32 ngap;1118};1119 1120struct hfi_scs_threshold {1121 u32 threshold_value;1122};1123 1124#define HFI_TEST_SSR_SW_ERR_FATAL 0x11125#define HFI_TEST_SSR_SW_DIV_BY_ZERO 0x21126#define HFI_TEST_SSR_HW_WDOG_IRQ 0x31127 1128struct hfi_buffer_alloc_mode {1129 u32 type;1130 u32 mode;1131};1132 1133struct hfi_index_extradata_config {1134 u32 enable;1135 u32 index_extra_data_id;1136};1137 1138struct hfi_extradata_header {1139 u32 size;1140 u32 version;1141 u32 port_index;1142 u32 type;1143 u32 data_size;1144 u8 data[];1145};1146 1147struct hfi_batch_info {1148 u32 input_batch_count;1149 u32 output_batch_count;1150};1151 1152struct hfi_buffer_count_actual {1153 u32 type;1154 u32 count_actual;1155};1156 1157struct hfi_buffer_count_actual_4xx {1158 u32 type;1159 u32 count_actual;1160 u32 count_min_host;1161};1162 1163struct hfi_buffer_size_actual {1164 u32 type;1165 u32 size;1166};1167 1168struct hfi_buffer_display_hold_count_actual {1169 u32 type;1170 u32 hold_count;1171};1172 1173struct hfi_buffer_requirements {1174 u32 type;1175 u32 size;1176 u32 region_size;1177 u32 hold_count;1178 u32 count_min;1179 u32 count_actual;1180 u32 contiguous;1181 u32 alignment;1182};1183 1184/* On HFI 4XX, some of the struct members have been swapped. */1185static inline u32 hfi_bufreq_get_hold_count(struct hfi_buffer_requirements *req,1186 u32 ver)1187{1188 if (ver == HFI_VERSION_4XX)1189 return 0;1190 1191 return req->hold_count;1192};1193 1194static inline u32 hfi_bufreq_get_count_min(struct hfi_buffer_requirements *req,1195 u32 ver)1196{1197 if (ver == HFI_VERSION_4XX)1198 return req->hold_count;1199 1200 return req->count_min;1201};1202 1203static inline u32 hfi_bufreq_get_count_min_host(struct hfi_buffer_requirements *req,1204 u32 ver)1205{1206 if (ver == HFI_VERSION_4XX)1207 return req->count_min;1208 1209 return 0;1210};1211 1212static inline void hfi_bufreq_set_hold_count(struct hfi_buffer_requirements *req,1213 u32 ver, u32 val)1214{1215 if (ver == HFI_VERSION_4XX)1216 return;1217 1218 req->hold_count = val;1219};1220 1221static inline void hfi_bufreq_set_count_min(struct hfi_buffer_requirements *req,1222 u32 ver, u32 val)1223{1224 if (ver == HFI_VERSION_4XX)1225 req->hold_count = val;1226 1227 req->count_min = val;1228};1229 1230static inline void hfi_bufreq_set_count_min_host(struct hfi_buffer_requirements *req,1231 u32 ver, u32 val)1232{1233 if (ver == HFI_VERSION_4XX)1234 req->count_min = val;1235};1236 1237struct hfi_data_payload {1238 u32 size;1239 u8 data[];1240};1241 1242struct hfi_enable_picture {1243 u32 picture_type;1244};1245 1246struct hfi_display_picture_buffer_count {1247 int enable;1248 u32 count;1249};1250 1251struct hfi_extra_data_header_config {1252 u32 type;1253 u32 buffer_type;1254 u32 version;1255 u32 port_index;1256 u32 client_extra_data_id;1257};1258 1259struct hfi_interlace_format_supported {1260 u32 buffer_type;1261 u32 format;1262};1263 1264struct hfi_buffer_alloc_mode_supported {1265 u32 buffer_type;1266 u32 num_entries;1267 u32 data[];1268};1269 1270struct hfi_mb_error_map {1271 u32 error_map_size;1272 u8 error_map[];1273};1274 1275struct hfi_metadata_pass_through {1276 int enable;1277 u32 size;1278};1279 1280struct hfi_multi_view_select {1281 u32 view_index;1282};1283 1284struct hfi_hybrid_hierp {1285 u32 layers;1286};1287 1288struct hfi_pkt_hdr {1289 u32 size;1290 u32 pkt_type;1291};1292 1293struct hfi_session_hdr_pkt {1294 struct hfi_pkt_hdr hdr;1295 u32 session_id;1296};1297 1298struct hfi_session_pkt {1299 struct hfi_session_hdr_pkt shdr;1300};1301 1302#endif1303