197fb5e8dSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 209c2845eSStanimir Varbanov /* 309c2845eSStanimir Varbanov * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. 409c2845eSStanimir Varbanov * Copyright (C) 2017 Linaro Ltd. 509c2845eSStanimir Varbanov */ 609c2845eSStanimir Varbanov #ifndef __VENUS_HFI_HELPER_H__ 709c2845eSStanimir Varbanov #define __VENUS_HFI_HELPER_H__ 809c2845eSStanimir Varbanov 909c2845eSStanimir Varbanov #define HFI_DOMAIN_BASE_COMMON 0 1009c2845eSStanimir Varbanov 1109c2845eSStanimir Varbanov #define HFI_DOMAIN_BASE_VDEC 0x1000000 1209c2845eSStanimir Varbanov #define HFI_DOMAIN_BASE_VENC 0x2000000 1309c2845eSStanimir Varbanov #define HFI_DOMAIN_BASE_VPE 0x3000000 1409c2845eSStanimir Varbanov 1509c2845eSStanimir Varbanov #define HFI_VIDEO_ARCH_OX 0x1 1609c2845eSStanimir Varbanov 1709c2845eSStanimir Varbanov #define HFI_ARCH_COMMON_OFFSET 0 1809c2845eSStanimir Varbanov #define HFI_ARCH_OX_OFFSET 0x200000 1909c2845eSStanimir Varbanov 2009c2845eSStanimir Varbanov #define HFI_OX_BASE 0x1000000 2109c2845eSStanimir Varbanov 2209c2845eSStanimir Varbanov #define HFI_CMD_START_OFFSET 0x10000 2309c2845eSStanimir Varbanov #define HFI_MSG_START_OFFSET 0x20000 2409c2845eSStanimir Varbanov 2509c2845eSStanimir Varbanov #define HFI_ERR_NONE 0x0 2609c2845eSStanimir Varbanov #define HFI_ERR_SYS_FATAL 0x1 2709c2845eSStanimir Varbanov #define HFI_ERR_SYS_INVALID_PARAMETER 0x2 2809c2845eSStanimir Varbanov #define HFI_ERR_SYS_VERSION_MISMATCH 0x3 2909c2845eSStanimir Varbanov #define HFI_ERR_SYS_INSUFFICIENT_RESOURCES 0x4 3009c2845eSStanimir Varbanov #define HFI_ERR_SYS_MAX_SESSIONS_REACHED 0x5 3109c2845eSStanimir Varbanov #define HFI_ERR_SYS_UNSUPPORTED_CODEC 0x6 3209c2845eSStanimir Varbanov #define HFI_ERR_SYS_SESSION_IN_USE 0x7 3309c2845eSStanimir Varbanov #define HFI_ERR_SYS_SESSION_ID_OUT_OF_RANGE 0x8 3409c2845eSStanimir Varbanov #define HFI_ERR_SYS_UNSUPPORTED_DOMAIN 0x9 3509c2845eSStanimir Varbanov 3609c2845eSStanimir Varbanov #define HFI_ERR_SESSION_FATAL 0x1001 3709c2845eSStanimir Varbanov #define HFI_ERR_SESSION_INVALID_PARAMETER 0x1002 3809c2845eSStanimir Varbanov #define HFI_ERR_SESSION_BAD_POINTER 0x1003 3909c2845eSStanimir Varbanov #define HFI_ERR_SESSION_INVALID_SESSION_ID 0x1004 4009c2845eSStanimir Varbanov #define HFI_ERR_SESSION_INVALID_STREAM_ID 0x1005 4109c2845eSStanimir Varbanov #define HFI_ERR_SESSION_INCORRECT_STATE_OPERATION 0x1006 4209c2845eSStanimir Varbanov #define HFI_ERR_SESSION_UNSUPPORTED_PROPERTY 0x1007 4309c2845eSStanimir Varbanov #define HFI_ERR_SESSION_UNSUPPORTED_SETTING 0x1008 4409c2845eSStanimir Varbanov #define HFI_ERR_SESSION_INSUFFICIENT_RESOURCES 0x1009 4509c2845eSStanimir Varbanov #define HFI_ERR_SESSION_STREAM_CORRUPT_OUTPUT_STALLED 0x100a 4609c2845eSStanimir Varbanov #define HFI_ERR_SESSION_STREAM_CORRUPT 0x100b 4709c2845eSStanimir Varbanov #define HFI_ERR_SESSION_ENC_OVERFLOW 0x100c 4809c2845eSStanimir Varbanov #define HFI_ERR_SESSION_UNSUPPORTED_STREAM 0x100d 4909c2845eSStanimir Varbanov #define HFI_ERR_SESSION_CMDSIZE 0x100e 5009c2845eSStanimir Varbanov #define HFI_ERR_SESSION_UNSUPPORT_CMD 0x100f 5109c2845eSStanimir Varbanov #define HFI_ERR_SESSION_UNSUPPORT_BUFFERTYPE 0x1010 5209c2845eSStanimir Varbanov #define HFI_ERR_SESSION_BUFFERCOUNT_TOOSMALL 0x1011 5309c2845eSStanimir Varbanov #define HFI_ERR_SESSION_INVALID_SCALE_FACTOR 0x1012 5409c2845eSStanimir Varbanov #define HFI_ERR_SESSION_UPSCALE_NOT_SUPPORTED 0x1013 5509c2845eSStanimir Varbanov 5609c2845eSStanimir Varbanov #define HFI_EVENT_SYS_ERROR 0x1 5709c2845eSStanimir Varbanov #define HFI_EVENT_SESSION_ERROR 0x2 5809c2845eSStanimir Varbanov 5909c2845eSStanimir Varbanov #define HFI_EVENT_DATA_SEQUENCE_CHANGED_SUFFICIENT_BUF_RESOURCES 0x1000001 6009c2845eSStanimir Varbanov #define HFI_EVENT_DATA_SEQUENCE_CHANGED_INSUFFICIENT_BUF_RESOURCES 0x1000002 6109c2845eSStanimir Varbanov #define HFI_EVENT_SESSION_SEQUENCE_CHANGED 0x1000003 6209c2845eSStanimir Varbanov #define HFI_EVENT_SESSION_PROPERTY_CHANGED 0x1000004 6309c2845eSStanimir Varbanov #define HFI_EVENT_SESSION_LTRUSE_FAILED 0x1000005 6409c2845eSStanimir Varbanov #define HFI_EVENT_RELEASE_BUFFER_REFERENCE 0x1000006 6509c2845eSStanimir Varbanov 6609c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_EOS 0x00000001 6709c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_STARTTIME 0x00000002 6809c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_DECODEONLY 0x00000004 6909c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_DATACORRUPT 0x00000008 7009c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_ENDOFFRAME 0x00000010 7109c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_SYNCFRAME 0x00000020 7209c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_EXTRADATA 0x00000040 7309c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_CODECCONFIG 0x00000080 7409c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_TIMESTAMPINVALID 0x00000100 7509c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_READONLY 0x00000200 7609c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_ENDOFSUBFRAME 0x00000400 7709c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_EOSEQ 0x00200000 7809c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_MBAFF 0x08000000 7909c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_VPE_YUV_601_709_CSC_CLAMP 0x10000000 8009c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_DROP_FRAME 0x20000000 8109c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_TEI 0x40000000 8209c2845eSStanimir Varbanov #define HFI_BUFFERFLAG_DISCONTINUITY 0x80000000 8309c2845eSStanimir Varbanov 8409c2845eSStanimir Varbanov #define HFI_ERR_SESSION_EMPTY_BUFFER_DONE_OUTPUT_PENDING 0x1001001 8509c2845eSStanimir Varbanov #define HFI_ERR_SESSION_SAME_STATE_OPERATION 0x1001002 8609c2845eSStanimir Varbanov #define HFI_ERR_SESSION_SYNC_FRAME_NOT_DETECTED 0x1001003 8709c2845eSStanimir Varbanov #define HFI_ERR_SESSION_START_CODE_NOT_FOUND 0x1001004 8809c2845eSStanimir Varbanov 8909c2845eSStanimir Varbanov #define HFI_FLUSH_INPUT 0x1000001 9009c2845eSStanimir Varbanov #define HFI_FLUSH_OUTPUT 0x1000002 9109c2845eSStanimir Varbanov #define HFI_FLUSH_OUTPUT2 0x1000003 9209c2845eSStanimir Varbanov #define HFI_FLUSH_ALL 0x1000004 9309c2845eSStanimir Varbanov 9409c2845eSStanimir Varbanov #define HFI_EXTRADATA_NONE 0x00000000 9509c2845eSStanimir Varbanov #define HFI_EXTRADATA_MB_QUANTIZATION 0x00000001 9609c2845eSStanimir Varbanov #define HFI_EXTRADATA_INTERLACE_VIDEO 0x00000002 9709c2845eSStanimir Varbanov #define HFI_EXTRADATA_VC1_FRAMEDISP 0x00000003 9809c2845eSStanimir Varbanov #define HFI_EXTRADATA_VC1_SEQDISP 0x00000004 9909c2845eSStanimir Varbanov #define HFI_EXTRADATA_TIMESTAMP 0x00000005 10009c2845eSStanimir Varbanov #define HFI_EXTRADATA_S3D_FRAME_PACKING 0x00000006 10109c2845eSStanimir Varbanov #define HFI_EXTRADATA_FRAME_RATE 0x00000007 10209c2845eSStanimir Varbanov #define HFI_EXTRADATA_PANSCAN_WINDOW 0x00000008 10309c2845eSStanimir Varbanov #define HFI_EXTRADATA_RECOVERY_POINT_SEI 0x00000009 10409c2845eSStanimir Varbanov #define HFI_EXTRADATA_MPEG2_SEQDISP 0x0000000d 10509c2845eSStanimir Varbanov #define HFI_EXTRADATA_STREAM_USERDATA 0x0000000e 10609c2845eSStanimir Varbanov #define HFI_EXTRADATA_FRAME_QP 0x0000000f 10709c2845eSStanimir Varbanov #define HFI_EXTRADATA_FRAME_BITS_INFO 0x00000010 10809c2845eSStanimir Varbanov #define HFI_EXTRADATA_MULTISLICE_INFO 0x7f100000 10909c2845eSStanimir Varbanov #define HFI_EXTRADATA_NUM_CONCEALED_MB 0x7f100001 11009c2845eSStanimir Varbanov #define HFI_EXTRADATA_INDEX 0x7f100002 11109c2845eSStanimir Varbanov #define HFI_EXTRADATA_METADATA_LTR 0x7f100004 11209c2845eSStanimir Varbanov #define HFI_EXTRADATA_METADATA_FILLER 0x7fe00002 11309c2845eSStanimir Varbanov 11409c2845eSStanimir Varbanov #define HFI_INDEX_EXTRADATA_INPUT_CROP 0x0700000e 115f04997bdSStanimir Varbanov #define HFI_INDEX_EXTRADATA_OUTPUT_CROP 0x0700000f 11609c2845eSStanimir Varbanov #define HFI_INDEX_EXTRADATA_DIGITAL_ZOOM 0x07000010 11709c2845eSStanimir Varbanov #define HFI_INDEX_EXTRADATA_ASPECT_RATIO 0x7f100003 11809c2845eSStanimir Varbanov 11909c2845eSStanimir Varbanov #define HFI_INTERLACE_FRAME_PROGRESSIVE 0x01 12009c2845eSStanimir Varbanov #define HFI_INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST 0x02 12109c2845eSStanimir Varbanov #define HFI_INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST 0x04 12209c2845eSStanimir Varbanov #define HFI_INTERLACE_FRAME_TOPFIELDFIRST 0x08 12309c2845eSStanimir Varbanov #define HFI_INTERLACE_FRAME_BOTTOMFIELDFIRST 0x10 12409c2845eSStanimir Varbanov 12509c2845eSStanimir Varbanov /* 12609c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_OX_START 12709c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000 12809c2845eSStanimir Varbanov */ 12909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL 0x201001 13009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO 0x201002 13109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_INTERLACE_FORMAT_SUPPORTED 0x201003 13209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_CHROMA_SITE 0x201004 13309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_EXTRA_DATA_HEADER_CONFIG 0x201005 13409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_INDEX_EXTRADATA 0x201006 13509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_DIVX_FORMAT 0x201007 13609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE 0x201008 13709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_S3D_FRAME_PACKING_EXTRADATA 0x201009 13809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_ERR_DETECTION_CODE_EXTRADATA 0x20100a 13909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE_SUPPORTED 0x20100b 14009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL 0x20100c 14109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_BUFFER_DISPLAY_HOLD_COUNT_ACTUAL 0x20100d 14209c2845eSStanimir Varbanov 14309c2845eSStanimir Varbanov /* 14409c2845eSStanimir Varbanov * HFI_PROPERTY_CONFIG_OX_START 14509c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x2000 14609c2845eSStanimir Varbanov */ 14709c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS 0x202001 14809c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_REALTIME 0x202002 14909c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_PRIORITY 0x202003 15009c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_BATCH_INFO 0x202004 15109c2845eSStanimir Varbanov 15209c2845eSStanimir Varbanov /* 15309c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_VDEC_OX_START \ 15409c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x3000 15509c2845eSStanimir Varbanov */ 15609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER 0x1203001 15709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_DISPLAY_PICTURE_BUFFER_COUNT 0x1203002 15809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_MULTI_VIEW_SELECT 0x1203003 15909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE 0x1203004 16009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_OUTPUT_ORDER 0x1203005 16109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_MB_QUANTIZATION 0x1203006 16209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_NUM_CONCEALED_MB 0x1203007 16309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_H264_ENTROPY_SWITCHING 0x1203008 16409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO 0x1203009 16509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_FRAME_RATE_EXTRADATA 0x120300a 16609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_PANSCAN_WNDW_EXTRADATA 0x120300b 16709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_RECOVERY_POINT_SEI_EXTRADATA 0x120300c 16809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE 0x120300d 16909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_FRAME_ASSEMBLY 0x120300e 17009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_VC1_FRAMEDISP_EXTRADATA 0x1203011 17109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_VC1_SEQDISP_EXTRADATA 0x1203012 17209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_TIMESTAMP_EXTRADATA 0x1203013 17309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_INTERLACE_VIDEO_EXTRADATA 0x1203014 17409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_AVC_SESSION_SELECT 0x1203015 17509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_MPEG2_SEQDISP_EXTRADATA 0x1203016 17609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_STREAM_USERDATA_EXTRADATA 0x1203017 17709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_FRAME_QP_EXTRADATA 0x1203018 17809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_FRAME_BITS_INFO_EXTRADATA 0x1203019 17909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_SCS_THRESHOLD 0x120301a 18009c2845eSStanimir Varbanov 18109c2845eSStanimir Varbanov /* 18209c2845eSStanimir Varbanov * HFI_PROPERTY_CONFIG_VDEC_OX_START 18309c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x0000 18409c2845eSStanimir Varbanov */ 18509c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER 0x1200001 18609c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING 0x1200002 18709c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP 0x1200003 18809c2845eSStanimir Varbanov 18909c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VDEC_ENTROPY 0x1204004 19009c2845eSStanimir Varbanov 19109c2845eSStanimir Varbanov /* 19209c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_VENC_OX_START 19309c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x5000 19409c2845eSStanimir Varbanov */ 19509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO 0x2205001 19609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_IDR_S3D_FRAME_PACKING_NAL 0x2205002 19709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_LTR_INFO 0x2205003 19809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MBI_DUMPING 0x2205005 19909c2845eSStanimir Varbanov 20009c2845eSStanimir Varbanov /* 20109c2845eSStanimir Varbanov * HFI_PROPERTY_CONFIG_VENC_OX_START 20209c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000 20309c2845eSStanimir Varbanov */ 20409c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_FRAME_QP 0x2206001 20509c2845eSStanimir Varbanov 20609c2845eSStanimir Varbanov /* 20709c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_VPE_OX_START 20809c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x7000 20909c2845eSStanimir Varbanov */ 21009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VPE_COLOR_SPACE_CONVERSION 0x3207001 21109c2845eSStanimir Varbanov 21209c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VPE_OX_START \ 21309c2845eSStanimir Varbanov (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x8000) 21409c2845eSStanimir Varbanov 21509c2845eSStanimir Varbanov #define HFI_CHROMA_SITE_0 0x1000001 21609c2845eSStanimir Varbanov #define HFI_CHROMA_SITE_1 0x1000002 21709c2845eSStanimir Varbanov #define HFI_CHROMA_SITE_2 0x1000003 21809c2845eSStanimir Varbanov #define HFI_CHROMA_SITE_3 0x1000004 21909c2845eSStanimir Varbanov #define HFI_CHROMA_SITE_4 0x1000005 22009c2845eSStanimir Varbanov #define HFI_CHROMA_SITE_5 0x1000006 22109c2845eSStanimir Varbanov 22209c2845eSStanimir Varbanov #define HFI_PRIORITY_LOW 10 22309c2845eSStanimir Varbanov #define HFI_PRIOIRTY_MEDIUM 20 22409c2845eSStanimir Varbanov #define HFI_PRIORITY_HIGH 30 22509c2845eSStanimir Varbanov 22609c2845eSStanimir Varbanov #define HFI_OUTPUT_ORDER_DISPLAY 0x1000001 22709c2845eSStanimir Varbanov #define HFI_OUTPUT_ORDER_DECODE 0x1000002 22809c2845eSStanimir Varbanov 22909c2845eSStanimir Varbanov #define HFI_RATE_CONTROL_OFF 0x1000001 23009c2845eSStanimir Varbanov #define HFI_RATE_CONTROL_VBR_VFR 0x1000002 23109c2845eSStanimir Varbanov #define HFI_RATE_CONTROL_VBR_CFR 0x1000003 23209c2845eSStanimir Varbanov #define HFI_RATE_CONTROL_CBR_VFR 0x1000004 23309c2845eSStanimir Varbanov #define HFI_RATE_CONTROL_CBR_CFR 0x1000005 23469ff4b2cSStanimir Varbanov #define HFI_RATE_CONTROL_CQ 0x1000008 23509c2845eSStanimir Varbanov 23609c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_H264 0x00000002 23709c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_H263 0x00000004 23809c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_MPEG1 0x00000008 23909c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_MPEG2 0x00000010 24009c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_MPEG4 0x00000020 24109c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_DIVX_311 0x00000040 24209c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_DIVX 0x00000080 24309c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_VC1 0x00000100 24409c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_SPARK 0x00000200 24509c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_VP8 0x00001000 24609c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_HEVC 0x00002000 24709c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_VP9 0x00004000 24809c2845eSStanimir Varbanov #define HFI_VIDEO_CODEC_HEVC_HYBRID 0x80000000 24909c2845eSStanimir Varbanov 25009c2845eSStanimir Varbanov #define HFI_H264_PROFILE_BASELINE 0x00000001 25109c2845eSStanimir Varbanov #define HFI_H264_PROFILE_MAIN 0x00000002 25209c2845eSStanimir Varbanov #define HFI_H264_PROFILE_HIGH 0x00000004 25309c2845eSStanimir Varbanov #define HFI_H264_PROFILE_STEREO_HIGH 0x00000008 25409c2845eSStanimir Varbanov #define HFI_H264_PROFILE_MULTIVIEW_HIGH 0x00000010 25509c2845eSStanimir Varbanov #define HFI_H264_PROFILE_CONSTRAINED_BASE 0x00000020 25609c2845eSStanimir Varbanov #define HFI_H264_PROFILE_CONSTRAINED_HIGH 0x00000040 25709c2845eSStanimir Varbanov 25809c2845eSStanimir Varbanov #define HFI_H264_LEVEL_1 0x00000001 25909c2845eSStanimir Varbanov #define HFI_H264_LEVEL_1b 0x00000002 26009c2845eSStanimir Varbanov #define HFI_H264_LEVEL_11 0x00000004 26109c2845eSStanimir Varbanov #define HFI_H264_LEVEL_12 0x00000008 26209c2845eSStanimir Varbanov #define HFI_H264_LEVEL_13 0x00000010 26309c2845eSStanimir Varbanov #define HFI_H264_LEVEL_2 0x00000020 26409c2845eSStanimir Varbanov #define HFI_H264_LEVEL_21 0x00000040 26509c2845eSStanimir Varbanov #define HFI_H264_LEVEL_22 0x00000080 26609c2845eSStanimir Varbanov #define HFI_H264_LEVEL_3 0x00000100 26709c2845eSStanimir Varbanov #define HFI_H264_LEVEL_31 0x00000200 26809c2845eSStanimir Varbanov #define HFI_H264_LEVEL_32 0x00000400 26909c2845eSStanimir Varbanov #define HFI_H264_LEVEL_4 0x00000800 27009c2845eSStanimir Varbanov #define HFI_H264_LEVEL_41 0x00001000 27109c2845eSStanimir Varbanov #define HFI_H264_LEVEL_42 0x00002000 27209c2845eSStanimir Varbanov #define HFI_H264_LEVEL_5 0x00004000 27309c2845eSStanimir Varbanov #define HFI_H264_LEVEL_51 0x00008000 27409c2845eSStanimir Varbanov #define HFI_H264_LEVEL_52 0x00010000 27509c2845eSStanimir Varbanov 27609c2845eSStanimir Varbanov #define HFI_H263_PROFILE_BASELINE 0x00000001 27709c2845eSStanimir Varbanov 27809c2845eSStanimir Varbanov #define HFI_H263_LEVEL_10 0x00000001 27909c2845eSStanimir Varbanov #define HFI_H263_LEVEL_20 0x00000002 28009c2845eSStanimir Varbanov #define HFI_H263_LEVEL_30 0x00000004 28109c2845eSStanimir Varbanov #define HFI_H263_LEVEL_40 0x00000008 28209c2845eSStanimir Varbanov #define HFI_H263_LEVEL_45 0x00000010 28309c2845eSStanimir Varbanov #define HFI_H263_LEVEL_50 0x00000020 28409c2845eSStanimir Varbanov #define HFI_H263_LEVEL_60 0x00000040 28509c2845eSStanimir Varbanov #define HFI_H263_LEVEL_70 0x00000080 28609c2845eSStanimir Varbanov 28709c2845eSStanimir Varbanov #define HFI_MPEG2_PROFILE_SIMPLE 0x00000001 28809c2845eSStanimir Varbanov #define HFI_MPEG2_PROFILE_MAIN 0x00000002 28909c2845eSStanimir Varbanov #define HFI_MPEG2_PROFILE_422 0x00000004 29009c2845eSStanimir Varbanov #define HFI_MPEG2_PROFILE_SNR 0x00000008 29109c2845eSStanimir Varbanov #define HFI_MPEG2_PROFILE_SPATIAL 0x00000010 29209c2845eSStanimir Varbanov #define HFI_MPEG2_PROFILE_HIGH 0x00000020 29309c2845eSStanimir Varbanov 29409c2845eSStanimir Varbanov #define HFI_MPEG2_LEVEL_LL 0x00000001 29509c2845eSStanimir Varbanov #define HFI_MPEG2_LEVEL_ML 0x00000002 29609c2845eSStanimir Varbanov #define HFI_MPEG2_LEVEL_H14 0x00000004 29709c2845eSStanimir Varbanov #define HFI_MPEG2_LEVEL_HL 0x00000008 29809c2845eSStanimir Varbanov 29909c2845eSStanimir Varbanov #define HFI_MPEG4_PROFILE_SIMPLE 0x00000001 30009c2845eSStanimir Varbanov #define HFI_MPEG4_PROFILE_ADVANCEDSIMPLE 0x00000002 30109c2845eSStanimir Varbanov 30209c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_0 0x00000001 30309c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_0b 0x00000002 30409c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_1 0x00000004 30509c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_2 0x00000008 30609c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_3 0x00000010 30709c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_4 0x00000020 30809c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_4a 0x00000040 30909c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_5 0x00000080 31009c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_6 0x00000100 31109c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_7 0x00000200 31209c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_8 0x00000400 31309c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_9 0x00000800 31409c2845eSStanimir Varbanov #define HFI_MPEG4_LEVEL_3b 0x00001000 31509c2845eSStanimir Varbanov 31609c2845eSStanimir Varbanov #define HFI_VC1_PROFILE_SIMPLE 0x00000001 31709c2845eSStanimir Varbanov #define HFI_VC1_PROFILE_MAIN 0x00000002 31809c2845eSStanimir Varbanov #define HFI_VC1_PROFILE_ADVANCED 0x00000004 31909c2845eSStanimir Varbanov 32009c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_LOW 0x00000001 32109c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_MEDIUM 0x00000002 32209c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_HIGH 0x00000004 32309c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_0 0x00000008 32409c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_1 0x00000010 32509c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_2 0x00000020 32609c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_3 0x00000040 32709c2845eSStanimir Varbanov #define HFI_VC1_LEVEL_4 0x00000080 32809c2845eSStanimir Varbanov 32909c2845eSStanimir Varbanov #define HFI_VPX_PROFILE_SIMPLE 0x00000001 33009c2845eSStanimir Varbanov #define HFI_VPX_PROFILE_ADVANCED 0x00000002 33109c2845eSStanimir Varbanov #define HFI_VPX_PROFILE_VERSION_0 0x00000004 33209c2845eSStanimir Varbanov #define HFI_VPX_PROFILE_VERSION_1 0x00000008 33309c2845eSStanimir Varbanov #define HFI_VPX_PROFILE_VERSION_2 0x00000010 33409c2845eSStanimir Varbanov #define HFI_VPX_PROFILE_VERSION_3 0x00000020 33509c2845eSStanimir Varbanov 33609c2845eSStanimir Varbanov #define HFI_DIVX_FORMAT_4 0x1 33709c2845eSStanimir Varbanov #define HFI_DIVX_FORMAT_5 0x2 33809c2845eSStanimir Varbanov #define HFI_DIVX_FORMAT_6 0x3 33909c2845eSStanimir Varbanov 34009c2845eSStanimir Varbanov #define HFI_DIVX_PROFILE_QMOBILE 0x00000001 34109c2845eSStanimir Varbanov #define HFI_DIVX_PROFILE_MOBILE 0x00000002 34209c2845eSStanimir Varbanov #define HFI_DIVX_PROFILE_MT 0x00000004 34309c2845eSStanimir Varbanov #define HFI_DIVX_PROFILE_HT 0x00000008 34409c2845eSStanimir Varbanov #define HFI_DIVX_PROFILE_HD 0x00000010 34509c2845eSStanimir Varbanov 34609c2845eSStanimir Varbanov #define HFI_HEVC_PROFILE_MAIN 0x00000001 34709c2845eSStanimir Varbanov #define HFI_HEVC_PROFILE_MAIN10 0x00000002 34809c2845eSStanimir Varbanov #define HFI_HEVC_PROFILE_MAIN_STILL_PIC 0x00000004 34909c2845eSStanimir Varbanov 35009c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_1 0x00000001 35109c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_2 0x00000002 35209c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_21 0x00000004 35309c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_3 0x00000008 35409c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_31 0x00000010 35509c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_4 0x00000020 35609c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_41 0x00000040 35709c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_5 0x00000080 35809c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_51 0x00000100 35909c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_52 0x00000200 36009c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_6 0x00000400 36109c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_61 0x00000800 36209c2845eSStanimir Varbanov #define HFI_HEVC_LEVEL_62 0x00001000 36309c2845eSStanimir Varbanov 36409c2845eSStanimir Varbanov #define HFI_HEVC_TIER_MAIN 0x1 36509c2845eSStanimir Varbanov #define HFI_HEVC_TIER_HIGH0 0x2 36609c2845eSStanimir Varbanov 36709c2845eSStanimir Varbanov #define HFI_BUFFER_INPUT 0x1 36809c2845eSStanimir Varbanov #define HFI_BUFFER_OUTPUT 0x2 36909c2845eSStanimir Varbanov #define HFI_BUFFER_OUTPUT2 0x3 37009c2845eSStanimir Varbanov #define HFI_BUFFER_INTERNAL_PERSIST 0x4 37109c2845eSStanimir Varbanov #define HFI_BUFFER_INTERNAL_PERSIST_1 0x5 372f04997bdSStanimir Varbanov #define HFI_BUFFER_INTERNAL_SCRATCH(ver) \ 373f04997bdSStanimir Varbanov (((ver) == HFI_VERSION_4XX) ? 0x6 : 0x1000001) 374f04997bdSStanimir Varbanov #define HFI_BUFFER_INTERNAL_SCRATCH_1(ver) \ 375f04997bdSStanimir Varbanov (((ver) == HFI_VERSION_4XX) ? 0x7 : 0x1000005) 376f04997bdSStanimir Varbanov #define HFI_BUFFER_INTERNAL_SCRATCH_2(ver) \ 377f04997bdSStanimir Varbanov (((ver) == HFI_VERSION_4XX) ? 0x8 : 0x1000006) 378f04997bdSStanimir Varbanov #define HFI_BUFFER_EXTRADATA_INPUT(ver) \ 379f04997bdSStanimir Varbanov (((ver) == HFI_VERSION_4XX) ? 0xc : 0x1000002) 380f04997bdSStanimir Varbanov #define HFI_BUFFER_EXTRADATA_OUTPUT(ver) \ 381f04997bdSStanimir Varbanov (((ver) == HFI_VERSION_4XX) ? 0xa : 0x1000003) 382f04997bdSStanimir Varbanov #define HFI_BUFFER_EXTRADATA_OUTPUT2(ver) \ 383f04997bdSStanimir Varbanov (((ver) == HFI_VERSION_4XX) ? 0xb : 0x1000004) 38409c2845eSStanimir Varbanov #define HFI_BUFFER_TYPE_MAX 11 38509c2845eSStanimir Varbanov 38609c2845eSStanimir Varbanov #define HFI_BUFFER_MODE_STATIC 0x1000001 38709c2845eSStanimir Varbanov #define HFI_BUFFER_MODE_RING 0x1000002 38809c2845eSStanimir Varbanov #define HFI_BUFFER_MODE_DYNAMIC 0x1000003 38909c2845eSStanimir Varbanov 39009c2845eSStanimir Varbanov #define HFI_VENC_PERFMODE_MAX_QUALITY 0x1 39109c2845eSStanimir Varbanov #define HFI_VENC_PERFMODE_POWER_SAVE 0x2 39209c2845eSStanimir Varbanov 39309c2845eSStanimir Varbanov /* 39409c2845eSStanimir Varbanov * HFI_PROPERTY_SYS_COMMON_START 39509c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_COMMON_OFFSET + 0x0000 39609c2845eSStanimir Varbanov */ 39709c2845eSStanimir Varbanov #define HFI_PROPERTY_SYS_DEBUG_CONFIG 0x1 39809c2845eSStanimir Varbanov #define HFI_PROPERTY_SYS_RESOURCE_OCMEM_REQUIREMENT_INFO 0x2 39909c2845eSStanimir Varbanov #define HFI_PROPERTY_SYS_CONFIG_VCODEC_CLKFREQ 0x3 40009c2845eSStanimir Varbanov #define HFI_PROPERTY_SYS_IDLE_INDICATOR 0x4 40109c2845eSStanimir Varbanov #define HFI_PROPERTY_SYS_CODEC_POWER_PLANE_CTRL 0x5 40209c2845eSStanimir Varbanov #define HFI_PROPERTY_SYS_IMAGE_VERSION 0x6 40309c2845eSStanimir Varbanov #define HFI_PROPERTY_SYS_CONFIG_COVERAGE 0x7 40409c2845eSStanimir Varbanov 40509c2845eSStanimir Varbanov /* 40609c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_COMMON_START 40709c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_COMMON_OFFSET + 0x1000 40809c2845eSStanimir Varbanov */ 40909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_FRAME_SIZE 0x1001 41009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO 0x1002 41109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT 0x1003 41209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SUPPORTED 0x1004 41309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT 0x1005 41409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_PROFILE_LEVEL_SUPPORTED 0x1006 41509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_CAPABILITY_SUPPORTED 0x1007 41609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_PROPERTIES_SUPPORTED 0x1008 41709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_CODEC_SUPPORTED 0x1009 41809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_NAL_STREAM_FORMAT_SUPPORTED 0x100a 41909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_NAL_STREAM_FORMAT_SELECT 0x100b 42009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_MULTI_VIEW_FORMAT 0x100c 42109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_MAX_SEQUENCE_HEADER_SIZE 0x100d 42209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_CODEC_MASK_SUPPORTED 0x100e 42309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_MVC_BUFFER_LAYOUT 0x100f 42409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_MAX_SESSIONS_SUPPORTED 0x1010 425f04997bdSStanimir Varbanov #define HFI_PROPERTY_PARAM_WORK_MODE 0x1015 42609c2845eSStanimir Varbanov 42709c2845eSStanimir Varbanov /* 42809c2845eSStanimir Varbanov * HFI_PROPERTY_CONFIG_COMMON_START 42909c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_COMMON + HFI_ARCH_COMMON_OFFSET + 0x2000 43009c2845eSStanimir Varbanov */ 43109c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_FRAME_RATE 0x2001 432f04997bdSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE 0x2002 43309c2845eSStanimir Varbanov 43409c2845eSStanimir Varbanov /* 43509c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_VDEC_COMMON_START 43609c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_COMMON_OFFSET + 0x3000 43709c2845eSStanimir Varbanov */ 43809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM 0x1003001 43909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_CONCEAL_COLOR 0x1003002 44009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_NONCP_OUTPUT2 0x1003003 441f04997bdSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_PIXEL_BITDEPTH 0x1003007 442f04997bdSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_PIC_STRUCT 0x1003009 443f04997bdSStanimir Varbanov #define HFI_PROPERTY_PARAM_VDEC_COLOUR_SPACE 0x100300a 44409c2845eSStanimir Varbanov 44509c2845eSStanimir Varbanov /* 44609c2845eSStanimir Varbanov * HFI_PROPERTY_CONFIG_VDEC_COMMON_START 44709c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VDEC + HFI_ARCH_COMMON_OFFSET + 0x4000 44809c2845eSStanimir Varbanov */ 44909c2845eSStanimir Varbanov 45009c2845eSStanimir Varbanov /* 45109c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_VENC_COMMON_START 45209c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VENC + HFI_ARCH_COMMON_OFFSET + 0x5000 45309c2845eSStanimir Varbanov */ 45409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_SLICE_DELIVERY_MODE 0x2005001 45509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_ENTROPY_CONTROL 0x2005002 45609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_DEBLOCK_CONTROL 0x2005003 45709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_RATE_CONTROL 0x2005004 45809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_PICORDER_CNT_TYPE 0x2005005 45909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_SESSION_QP 0x2005006 46009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MPEG4_AC_PREDICTION 0x2005007 46109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_SESSION_QP_RANGE 0x2005008 46209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MPEG4_TIME_RESOLUTION 0x2005009 46309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MPEG4_SHORT_HEADER 0x200500a 46409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MPEG4_HEADER_EXTENSION 0x200500b 46509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_OPEN_GOP 0x200500c 46609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_INTRA_REFRESH 0x200500d 46709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_CONTROL 0x200500e 46809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_VBV_HRD_BUF_SIZE 0x200500f 46909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_QUALITY_VS_SPEED 0x2005010 47009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_ADVANCED 0x2005012 47109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_SPS_ID 0x2005014 47209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_PPS_ID 0x2005015 47309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_GENERATE_AUDNAL 0x2005016 47409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_ASPECT_RATIO 0x2005017 47509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_NUMREF 0x2005018 47609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MULTIREF_P 0x2005019 47709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_NAL_SVC_EXT 0x200501b 47809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_LTRMODE 0x200501c 47909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_VIDEO_FULL_RANGE 0x200501d 48009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_VUI_TIMING_INFO 0x200501e 48109c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_VC1_PERF_CFG 0x200501f 48209c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_MAX_NUM_B_FRAMES 0x2005020 48309c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_H264_VUI_BITSTREAM_RESTRC 0x2005021 48409c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_PRESERVE_TEXT_QUALITY 0x2005023 48509c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_HIER_P_MAX_NUM_ENH_LAYER 0x2005026 48609c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_DISABLE_RC_TIMESTAMP 0x2005027 48709c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_INITIAL_QP 0x2005028 48809c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_VPX_ERROR_RESILIENCE_MODE 0x2005029 48909c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_HIER_B_MAX_NUM_ENH_LAYER 0x200502c 49009c2845eSStanimir Varbanov #define HFI_PROPERTY_PARAM_VENC_HIER_P_HYBRID_MODE 0x200502f 49109c2845eSStanimir Varbanov 49209c2845eSStanimir Varbanov /* 49309c2845eSStanimir Varbanov * HFI_PROPERTY_CONFIG_VENC_COMMON_START 49409c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VENC + HFI_ARCH_COMMON_OFFSET + 0x6000 49509c2845eSStanimir Varbanov */ 49609c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE 0x2006001 49709c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_IDR_PERIOD 0x2006002 49809c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_INTRA_PERIOD 0x2006003 49909c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_REQUEST_SYNC_FRAME 0x2006004 50009c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_SLICE_SIZE 0x2006005 50109c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_MAX_BITRATE 0x2006007 50209c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_SYNC_FRAME_SEQUENCE_HEADER 0x2006008 50309c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_MARKLTRFRAME 0x2006009 50409c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_USELTRFRAME 0x200600a 50509c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_HIER_P_ENH_LAYER 0x200600b 50609c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_LTRPERIOD 0x200600c 50709c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VENC_PERF_MODE 0x200600e 50869ff4b2cSStanimir Varbanov #define HFI_PROPERTY_CONFIG_HEIC_FRAME_QUALITY 0x2006014 50909c2845eSStanimir Varbanov 51009c2845eSStanimir Varbanov /* 51109c2845eSStanimir Varbanov * HFI_PROPERTY_PARAM_VPE_COMMON_START 51209c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VPE + HFI_ARCH_COMMON_OFFSET + 0x7000 51309c2845eSStanimir Varbanov */ 51409c2845eSStanimir Varbanov 51509c2845eSStanimir Varbanov /* 51609c2845eSStanimir Varbanov * HFI_PROPERTY_CONFIG_VPE_COMMON_START 51709c2845eSStanimir Varbanov * HFI_DOMAIN_BASE_VPE + HFI_ARCH_COMMON_OFFSET + 0x8000 51809c2845eSStanimir Varbanov */ 51909c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VPE_DEINTERLACE 0x3008001 52009c2845eSStanimir Varbanov #define HFI_PROPERTY_CONFIG_VPE_OPERATIONS 0x3008002 52109c2845eSStanimir Varbanov 52209c2845eSStanimir Varbanov enum hfi_version { 52309c2845eSStanimir Varbanov HFI_VERSION_1XX, 52409c2845eSStanimir Varbanov HFI_VERSION_3XX, 52569ff4b2cSStanimir Varbanov HFI_VERSION_4XX, 52669ff4b2cSStanimir Varbanov HFI_VERSION_6XX, 52709c2845eSStanimir Varbanov }; 52809c2845eSStanimir Varbanov 52909c2845eSStanimir Varbanov struct hfi_buffer_info { 53009c2845eSStanimir Varbanov u32 buffer_addr; 53109c2845eSStanimir Varbanov u32 extradata_addr; 53209c2845eSStanimir Varbanov }; 53309c2845eSStanimir Varbanov 53409c2845eSStanimir Varbanov struct hfi_bitrate { 53509c2845eSStanimir Varbanov u32 bitrate; 53609c2845eSStanimir Varbanov u32 layer_id; 53709c2845eSStanimir Varbanov }; 53809c2845eSStanimir Varbanov 53909c2845eSStanimir Varbanov #define HFI_CAPABILITY_FRAME_WIDTH 0x01 54009c2845eSStanimir Varbanov #define HFI_CAPABILITY_FRAME_HEIGHT 0x02 54109c2845eSStanimir Varbanov #define HFI_CAPABILITY_MBS_PER_FRAME 0x03 54209c2845eSStanimir Varbanov #define HFI_CAPABILITY_MBS_PER_SECOND 0x04 54309c2845eSStanimir Varbanov #define HFI_CAPABILITY_FRAMERATE 0x05 54409c2845eSStanimir Varbanov #define HFI_CAPABILITY_SCALE_X 0x06 54509c2845eSStanimir Varbanov #define HFI_CAPABILITY_SCALE_Y 0x07 54609c2845eSStanimir Varbanov #define HFI_CAPABILITY_BITRATE 0x08 54709c2845eSStanimir Varbanov #define HFI_CAPABILITY_BFRAME 0x09 54809c2845eSStanimir Varbanov #define HFI_CAPABILITY_PEAKBITRATE 0x0a 54909c2845eSStanimir Varbanov #define HFI_CAPABILITY_HIER_P_NUM_ENH_LAYERS 0x10 55009c2845eSStanimir Varbanov #define HFI_CAPABILITY_ENC_LTR_COUNT 0x11 55109c2845eSStanimir Varbanov #define HFI_CAPABILITY_CP_OUTPUT2_THRESH 0x12 55209c2845eSStanimir Varbanov #define HFI_CAPABILITY_HIER_B_NUM_ENH_LAYERS 0x13 55309c2845eSStanimir Varbanov #define HFI_CAPABILITY_LCU_SIZE 0x14 55409c2845eSStanimir Varbanov #define HFI_CAPABILITY_HIER_P_HYBRID_NUM_ENH_LAYERS 0x15 55509c2845eSStanimir Varbanov #define HFI_CAPABILITY_MBS_PER_SECOND_POWERSAVE 0x16 5564ebf9693SAniket Masule #define HFI_CAPABILITY_MAX_VIDEOCORES 0x2b 55709c2845eSStanimir Varbanov 55809c2845eSStanimir Varbanov struct hfi_capability { 55909c2845eSStanimir Varbanov u32 capability_type; 56009c2845eSStanimir Varbanov u32 min; 56109c2845eSStanimir Varbanov u32 max; 56209c2845eSStanimir Varbanov u32 step_size; 56309c2845eSStanimir Varbanov }; 56409c2845eSStanimir Varbanov 56509c2845eSStanimir Varbanov struct hfi_capabilities { 56609c2845eSStanimir Varbanov u32 num_capabilities; 567a200c721SStanimir Varbanov struct hfi_capability data[]; 56809c2845eSStanimir Varbanov }; 56909c2845eSStanimir Varbanov 57009c2845eSStanimir Varbanov #define HFI_DEBUG_MSG_LOW 0x01 57109c2845eSStanimir Varbanov #define HFI_DEBUG_MSG_MEDIUM 0x02 57209c2845eSStanimir Varbanov #define HFI_DEBUG_MSG_HIGH 0x04 57309c2845eSStanimir Varbanov #define HFI_DEBUG_MSG_ERROR 0x08 57409c2845eSStanimir Varbanov #define HFI_DEBUG_MSG_FATAL 0x10 57509c2845eSStanimir Varbanov #define HFI_DEBUG_MSG_PERF 0x20 57609c2845eSStanimir Varbanov 57709c2845eSStanimir Varbanov #define HFI_DEBUG_MODE_QUEUE 0x01 57809c2845eSStanimir Varbanov #define HFI_DEBUG_MODE_QDSS 0x02 57909c2845eSStanimir Varbanov 58009c2845eSStanimir Varbanov struct hfi_debug_config { 58109c2845eSStanimir Varbanov u32 config; 58209c2845eSStanimir Varbanov u32 mode; 58309c2845eSStanimir Varbanov }; 58409c2845eSStanimir Varbanov 58509c2845eSStanimir Varbanov struct hfi_enable { 58609c2845eSStanimir Varbanov u32 enable; 58709c2845eSStanimir Varbanov }; 58809c2845eSStanimir Varbanov 58909c2845eSStanimir Varbanov #define HFI_H264_DB_MODE_DISABLE 0x1 59009c2845eSStanimir Varbanov #define HFI_H264_DB_MODE_SKIP_SLICE_BOUNDARY 0x2 59109c2845eSStanimir Varbanov #define HFI_H264_DB_MODE_ALL_BOUNDARY 0x3 59209c2845eSStanimir Varbanov 59309c2845eSStanimir Varbanov struct hfi_h264_db_control { 59409c2845eSStanimir Varbanov u32 mode; 595f7d12feaSLoic Poulain s32 slice_alpha_offset; 596f7d12feaSLoic Poulain s32 slice_beta_offset; 59709c2845eSStanimir Varbanov }; 59809c2845eSStanimir Varbanov 59909c2845eSStanimir Varbanov #define HFI_H264_ENTROPY_CAVLC 0x1 60009c2845eSStanimir Varbanov #define HFI_H264_ENTROPY_CABAC 0x2 60109c2845eSStanimir Varbanov 60209c2845eSStanimir Varbanov #define HFI_H264_CABAC_MODEL_0 0x1 60309c2845eSStanimir Varbanov #define HFI_H264_CABAC_MODEL_1 0x2 60409c2845eSStanimir Varbanov #define HFI_H264_CABAC_MODEL_2 0x3 60509c2845eSStanimir Varbanov 60609c2845eSStanimir Varbanov struct hfi_h264_entropy_control { 60709c2845eSStanimir Varbanov u32 entropy_mode; 60809c2845eSStanimir Varbanov u32 cabac_model; 60909c2845eSStanimir Varbanov }; 61009c2845eSStanimir Varbanov 61109c2845eSStanimir Varbanov struct hfi_framerate { 61209c2845eSStanimir Varbanov u32 buffer_type; 61309c2845eSStanimir Varbanov u32 framerate; 61409c2845eSStanimir Varbanov }; 61509c2845eSStanimir Varbanov 61609c2845eSStanimir Varbanov #define HFI_INTRA_REFRESH_NONE 0x1 61709c2845eSStanimir Varbanov #define HFI_INTRA_REFRESH_CYCLIC 0x2 61809c2845eSStanimir Varbanov #define HFI_INTRA_REFRESH_ADAPTIVE 0x3 61909c2845eSStanimir Varbanov #define HFI_INTRA_REFRESH_CYCLIC_ADAPTIVE 0x4 62009c2845eSStanimir Varbanov #define HFI_INTRA_REFRESH_RANDOM 0x5 62109c2845eSStanimir Varbanov 62209c2845eSStanimir Varbanov struct hfi_intra_refresh { 62309c2845eSStanimir Varbanov u32 mode; 62409c2845eSStanimir Varbanov u32 air_mbs; 62509c2845eSStanimir Varbanov u32 air_ref; 62609c2845eSStanimir Varbanov u32 cir_mbs; 62709c2845eSStanimir Varbanov }; 62809c2845eSStanimir Varbanov 62909c2845eSStanimir Varbanov struct hfi_intra_refresh_3x { 63009c2845eSStanimir Varbanov u32 mode; 63109c2845eSStanimir Varbanov u32 mbs; 63209c2845eSStanimir Varbanov }; 63309c2845eSStanimir Varbanov 63409c2845eSStanimir Varbanov struct hfi_idr_period { 63509c2845eSStanimir Varbanov u32 idr_period; 63609c2845eSStanimir Varbanov }; 63709c2845eSStanimir Varbanov 63809c2845eSStanimir Varbanov struct hfi_operations_type { 63909c2845eSStanimir Varbanov u32 rotation; 64009c2845eSStanimir Varbanov u32 flip; 64109c2845eSStanimir Varbanov }; 64209c2845eSStanimir Varbanov 64309c2845eSStanimir Varbanov struct hfi_max_num_b_frames { 64409c2845eSStanimir Varbanov u32 max_num_b_frames; 64509c2845eSStanimir Varbanov }; 64609c2845eSStanimir Varbanov 64709c2845eSStanimir Varbanov struct hfi_vc1e_perf_cfg_type { 64809c2845eSStanimir Varbanov u32 search_range_x_subsampled[3]; 64909c2845eSStanimir Varbanov u32 search_range_y_subsampled[3]; 65009c2845eSStanimir Varbanov }; 65109c2845eSStanimir Varbanov 65209c2845eSStanimir Varbanov struct hfi_conceal_color { 65309c2845eSStanimir Varbanov u32 conceal_color; 65409c2845eSStanimir Varbanov }; 65509c2845eSStanimir Varbanov 65609c2845eSStanimir Varbanov struct hfi_intra_period { 65709c2845eSStanimir Varbanov u32 pframes; 65809c2845eSStanimir Varbanov u32 bframes; 65909c2845eSStanimir Varbanov }; 66009c2845eSStanimir Varbanov 66109c2845eSStanimir Varbanov struct hfi_mpeg4_header_extension { 66209c2845eSStanimir Varbanov u32 header_extension; 66309c2845eSStanimir Varbanov }; 66409c2845eSStanimir Varbanov 66509c2845eSStanimir Varbanov struct hfi_mpeg4_time_resolution { 66609c2845eSStanimir Varbanov u32 time_increment_resolution; 66709c2845eSStanimir Varbanov }; 66809c2845eSStanimir Varbanov 66909c2845eSStanimir Varbanov struct hfi_multi_stream { 67009c2845eSStanimir Varbanov u32 buffer_type; 67109c2845eSStanimir Varbanov u32 enable; 67209c2845eSStanimir Varbanov u32 width; 67309c2845eSStanimir Varbanov u32 height; 67409c2845eSStanimir Varbanov }; 67509c2845eSStanimir Varbanov 67609c2845eSStanimir Varbanov struct hfi_multi_stream_3x { 67709c2845eSStanimir Varbanov u32 buffer_type; 67809c2845eSStanimir Varbanov u32 enable; 67909c2845eSStanimir Varbanov }; 68009c2845eSStanimir Varbanov 68109c2845eSStanimir Varbanov struct hfi_multi_view_format { 68209c2845eSStanimir Varbanov u32 views; 68309c2845eSStanimir Varbanov u32 view_order[1]; 68409c2845eSStanimir Varbanov }; 68509c2845eSStanimir Varbanov 68609c2845eSStanimir Varbanov #define HFI_MULTI_SLICE_OFF 0x1 68709c2845eSStanimir Varbanov #define HFI_MULTI_SLICE_BY_MB_COUNT 0x2 68809c2845eSStanimir Varbanov #define HFI_MULTI_SLICE_BY_BYTE_COUNT 0x3 68909c2845eSStanimir Varbanov #define HFI_MULTI_SLICE_GOB 0x4 69009c2845eSStanimir Varbanov 69109c2845eSStanimir Varbanov struct hfi_multi_slice_control { 69209c2845eSStanimir Varbanov u32 multi_slice; 69309c2845eSStanimir Varbanov u32 slice_size; 69409c2845eSStanimir Varbanov }; 69509c2845eSStanimir Varbanov 69609c2845eSStanimir Varbanov #define HFI_NAL_FORMAT_STARTCODES 0x01 69709c2845eSStanimir Varbanov #define HFI_NAL_FORMAT_ONE_NAL_PER_BUFFER 0x02 69809c2845eSStanimir Varbanov #define HFI_NAL_FORMAT_ONE_BYTE_LENGTH 0x04 69909c2845eSStanimir Varbanov #define HFI_NAL_FORMAT_TWO_BYTE_LENGTH 0x08 70009c2845eSStanimir Varbanov #define HFI_NAL_FORMAT_FOUR_BYTE_LENGTH 0x10 70109c2845eSStanimir Varbanov 70209c2845eSStanimir Varbanov struct hfi_nal_stream_format { 70309c2845eSStanimir Varbanov u32 format; 70409c2845eSStanimir Varbanov }; 70509c2845eSStanimir Varbanov 70609c2845eSStanimir Varbanov struct hfi_nal_stream_format_select { 70709c2845eSStanimir Varbanov u32 format; 70809c2845eSStanimir Varbanov }; 70909c2845eSStanimir Varbanov 71009c2845eSStanimir Varbanov #define HFI_PICTURE_TYPE_I 0x01 71109c2845eSStanimir Varbanov #define HFI_PICTURE_TYPE_P 0x02 71209c2845eSStanimir Varbanov #define HFI_PICTURE_TYPE_B 0x04 71309c2845eSStanimir Varbanov #define HFI_PICTURE_TYPE_IDR 0x08 71409c2845eSStanimir Varbanov 71509c2845eSStanimir Varbanov struct hfi_profile_level { 71609c2845eSStanimir Varbanov u32 profile; 71709c2845eSStanimir Varbanov u32 level; 71809c2845eSStanimir Varbanov }; 71909c2845eSStanimir Varbanov 72009c2845eSStanimir Varbanov #define HFI_MAX_PROFILE_COUNT 16 72109c2845eSStanimir Varbanov 72209c2845eSStanimir Varbanov struct hfi_profile_level_supported { 72309c2845eSStanimir Varbanov u32 profile_count; 724a200c721SStanimir Varbanov struct hfi_profile_level profile_level[]; 72509c2845eSStanimir Varbanov }; 72609c2845eSStanimir Varbanov 72709c2845eSStanimir Varbanov struct hfi_quality_vs_speed { 72809c2845eSStanimir Varbanov u32 quality_vs_speed; 72909c2845eSStanimir Varbanov }; 73009c2845eSStanimir Varbanov 73169ff4b2cSStanimir Varbanov struct hfi_heic_frame_quality { 73269ff4b2cSStanimir Varbanov u32 frame_quality; 73369ff4b2cSStanimir Varbanov u32 reserved[3]; 73469ff4b2cSStanimir Varbanov }; 73569ff4b2cSStanimir Varbanov 73609c2845eSStanimir Varbanov struct hfi_quantization { 73709c2845eSStanimir Varbanov u32 qp_i; 73809c2845eSStanimir Varbanov u32 qp_p; 73909c2845eSStanimir Varbanov u32 qp_b; 74009c2845eSStanimir Varbanov u32 layer_id; 74109c2845eSStanimir Varbanov }; 74209c2845eSStanimir Varbanov 74309c2845eSStanimir Varbanov struct hfi_initial_quantization { 74409c2845eSStanimir Varbanov u32 qp_i; 74509c2845eSStanimir Varbanov u32 qp_p; 74609c2845eSStanimir Varbanov u32 qp_b; 74709c2845eSStanimir Varbanov u32 init_qp_enable; 74809c2845eSStanimir Varbanov }; 74909c2845eSStanimir Varbanov 75009c2845eSStanimir Varbanov struct hfi_quantization_range { 75109c2845eSStanimir Varbanov u32 min_qp; 75209c2845eSStanimir Varbanov u32 max_qp; 75309c2845eSStanimir Varbanov u32 layer_id; 75409c2845eSStanimir Varbanov }; 75509c2845eSStanimir Varbanov 75609c2845eSStanimir Varbanov #define HFI_LTR_MODE_DISABLE 0x0 75709c2845eSStanimir Varbanov #define HFI_LTR_MODE_MANUAL 0x1 75809c2845eSStanimir Varbanov #define HFI_LTR_MODE_PERIODIC 0x2 75909c2845eSStanimir Varbanov 76009c2845eSStanimir Varbanov struct hfi_ltr_mode { 76109c2845eSStanimir Varbanov u32 ltr_mode; 76209c2845eSStanimir Varbanov u32 ltr_count; 76309c2845eSStanimir Varbanov u32 trust_mode; 76409c2845eSStanimir Varbanov }; 76509c2845eSStanimir Varbanov 76609c2845eSStanimir Varbanov struct hfi_ltr_use { 76709c2845eSStanimir Varbanov u32 ref_ltr; 76809c2845eSStanimir Varbanov u32 use_constrnt; 76909c2845eSStanimir Varbanov u32 frames; 77009c2845eSStanimir Varbanov }; 77109c2845eSStanimir Varbanov 77209c2845eSStanimir Varbanov struct hfi_ltr_mark { 77309c2845eSStanimir Varbanov u32 mark_frame; 77409c2845eSStanimir Varbanov }; 77509c2845eSStanimir Varbanov 77609c2845eSStanimir Varbanov struct hfi_framesize { 77709c2845eSStanimir Varbanov u32 buffer_type; 77809c2845eSStanimir Varbanov u32 width; 77909c2845eSStanimir Varbanov u32 height; 78009c2845eSStanimir Varbanov }; 78109c2845eSStanimir Varbanov 782f04997bdSStanimir Varbanov #define VIDC_CORE_ID_DEFAULT 0 783f04997bdSStanimir Varbanov #define VIDC_CORE_ID_1 1 784f04997bdSStanimir Varbanov #define VIDC_CORE_ID_2 2 785f04997bdSStanimir Varbanov #define VIDC_CORE_ID_3 3 786f04997bdSStanimir Varbanov 787f04997bdSStanimir Varbanov struct hfi_videocores_usage_type { 788f04997bdSStanimir Varbanov u32 video_core_enable_mask; 789f04997bdSStanimir Varbanov }; 790f04997bdSStanimir Varbanov 791f04997bdSStanimir Varbanov #define VIDC_WORK_MODE_1 1 792f04997bdSStanimir Varbanov #define VIDC_WORK_MODE_2 2 793f04997bdSStanimir Varbanov 794f04997bdSStanimir Varbanov struct hfi_video_work_mode { 795f04997bdSStanimir Varbanov u32 video_work_mode; 796f04997bdSStanimir Varbanov }; 797f04997bdSStanimir Varbanov 79809c2845eSStanimir Varbanov struct hfi_h264_vui_timing_info { 79909c2845eSStanimir Varbanov u32 enable; 80009c2845eSStanimir Varbanov u32 fixed_framerate; 80109c2845eSStanimir Varbanov u32 time_scale; 80209c2845eSStanimir Varbanov }; 80309c2845eSStanimir Varbanov 804ab1eda44SAniket Masule #define VIDC_BITDEPTH_8 0x00000 805ab1eda44SAniket Masule #define VIDC_BITDEPTH_10 0x20002 806ab1eda44SAniket Masule 8079eb2146eSStanimir Varbanov struct hfi_bit_depth { 8089eb2146eSStanimir Varbanov u32 buffer_type; 8099eb2146eSStanimir Varbanov u32 bit_depth; 8109eb2146eSStanimir Varbanov }; 8119eb2146eSStanimir Varbanov 8129eb2146eSStanimir Varbanov struct hfi_picture_type { 8139eb2146eSStanimir Varbanov u32 is_sync_frame; 8149eb2146eSStanimir Varbanov u32 picture_type; 8159eb2146eSStanimir Varbanov }; 8169eb2146eSStanimir Varbanov 8179eb2146eSStanimir Varbanov struct hfi_pic_struct { 8189eb2146eSStanimir Varbanov u32 progressive_only; 8199eb2146eSStanimir Varbanov }; 8209eb2146eSStanimir Varbanov 8219eb2146eSStanimir Varbanov struct hfi_colour_space { 8229eb2146eSStanimir Varbanov u32 colour_space; 8239eb2146eSStanimir Varbanov }; 8249eb2146eSStanimir Varbanov 8259eb2146eSStanimir Varbanov struct hfi_extradata_input_crop { 8269eb2146eSStanimir Varbanov u32 size; 8279eb2146eSStanimir Varbanov u32 version; 8289eb2146eSStanimir Varbanov u32 port_index; 8299eb2146eSStanimir Varbanov u32 left; 8309eb2146eSStanimir Varbanov u32 top; 8319eb2146eSStanimir Varbanov u32 width; 8329eb2146eSStanimir Varbanov u32 height; 8339eb2146eSStanimir Varbanov }; 8349eb2146eSStanimir Varbanov 83509c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_MONOCHROME 0x01 83609c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_NV12 0x02 83709c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_NV21 0x03 83809c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_NV12_4x4TILE 0x04 83909c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_NV21_4x4TILE 0x05 84009c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_YUYV 0x06 84109c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_YVYU 0x07 84209c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_UYVY 0x08 84309c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_VYUY 0x09 84409c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_RGB565 0x0a 84509c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_BGR565 0x0b 84609c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_RGB888 0x0c 84709c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_BGR888 0x0d 84809c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_YUV444 0x0e 84909c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_RGBA8888 0x10 85009c2845eSStanimir Varbanov 85109c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_UBWC_BASE 0x8000 85209c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_10_BIT_BASE 0x4000 85309c2845eSStanimir Varbanov 85409c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_YUV420_TP10 0x4002 855ab1eda44SAniket Masule #define HFI_COLOR_FORMAT_P010 0x4003 85609c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_NV12_UBWC 0x8002 85709c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_YUV420_TP10_UBWC 0xc002 858ab1eda44SAniket Masule #define HFI_COLOR_FORMAT_P010_UBWC 0xc003 85909c2845eSStanimir Varbanov #define HFI_COLOR_FORMAT_RGBA8888_UBWC 0x8010 86009c2845eSStanimir Varbanov 86109c2845eSStanimir Varbanov struct hfi_uncompressed_format_select { 86209c2845eSStanimir Varbanov u32 buffer_type; 86309c2845eSStanimir Varbanov u32 format; 86409c2845eSStanimir Varbanov }; 86509c2845eSStanimir Varbanov 8661a73374aSStanimir Varbanov struct hfi_uncompressed_plane_constraints { 8671a73374aSStanimir Varbanov u32 stride_multiples; 8681a73374aSStanimir Varbanov u32 max_stride; 8691a73374aSStanimir Varbanov u32 min_plane_buffer_height_multiple; 8701a73374aSStanimir Varbanov u32 buffer_alignment; 8711a73374aSStanimir Varbanov }; 8721a73374aSStanimir Varbanov 8731a73374aSStanimir Varbanov struct hfi_uncompressed_plane_info { 8741a73374aSStanimir Varbanov u32 format; 8751a73374aSStanimir Varbanov u32 num_planes; 8761a73374aSStanimir Varbanov struct hfi_uncompressed_plane_constraints plane_constraints[1]; 8771a73374aSStanimir Varbanov }; 8781a73374aSStanimir Varbanov 87909c2845eSStanimir Varbanov struct hfi_uncompressed_format_supported { 88009c2845eSStanimir Varbanov u32 buffer_type; 88109c2845eSStanimir Varbanov u32 format_entries; 8821a73374aSStanimir Varbanov struct hfi_uncompressed_plane_info plane_info[1]; 88309c2845eSStanimir Varbanov }; 88409c2845eSStanimir Varbanov 88509c2845eSStanimir Varbanov struct hfi_uncompressed_plane_actual { 88609c2845eSStanimir Varbanov int actual_stride; 88709c2845eSStanimir Varbanov u32 actual_plane_buffer_height; 88809c2845eSStanimir Varbanov }; 88909c2845eSStanimir Varbanov 89009c2845eSStanimir Varbanov struct hfi_uncompressed_plane_actual_info { 89109c2845eSStanimir Varbanov u32 buffer_type; 89209c2845eSStanimir Varbanov u32 num_planes; 89309c2845eSStanimir Varbanov struct hfi_uncompressed_plane_actual plane_format[1]; 89409c2845eSStanimir Varbanov }; 89509c2845eSStanimir Varbanov 89609c2845eSStanimir Varbanov struct hfi_uncompressed_plane_actual_constraints_info { 89709c2845eSStanimir Varbanov u32 buffer_type; 89809c2845eSStanimir Varbanov u32 num_planes; 89909c2845eSStanimir Varbanov struct hfi_uncompressed_plane_constraints plane_format[1]; 90009c2845eSStanimir Varbanov }; 90109c2845eSStanimir Varbanov 90209c2845eSStanimir Varbanov struct hfi_codec_supported { 90309c2845eSStanimir Varbanov u32 dec_codecs; 90409c2845eSStanimir Varbanov u32 enc_codecs; 90509c2845eSStanimir Varbanov }; 90609c2845eSStanimir Varbanov 90709c2845eSStanimir Varbanov struct hfi_properties_supported { 90809c2845eSStanimir Varbanov u32 num_properties; 90909c2845eSStanimir Varbanov u32 properties[1]; 91009c2845eSStanimir Varbanov }; 91109c2845eSStanimir Varbanov 91209c2845eSStanimir Varbanov struct hfi_max_sessions_supported { 91309c2845eSStanimir Varbanov u32 max_sessions; 91409c2845eSStanimir Varbanov }; 91509c2845eSStanimir Varbanov 91609c2845eSStanimir Varbanov #define HFI_MAX_MATRIX_COEFFS 9 91709c2845eSStanimir Varbanov #define HFI_MAX_BIAS_COEFFS 3 91809c2845eSStanimir Varbanov #define HFI_MAX_LIMIT_COEFFS 6 91909c2845eSStanimir Varbanov 92009c2845eSStanimir Varbanov struct hfi_vpe_color_space_conversion { 92109c2845eSStanimir Varbanov u32 csc_matrix[HFI_MAX_MATRIX_COEFFS]; 92209c2845eSStanimir Varbanov u32 csc_bias[HFI_MAX_BIAS_COEFFS]; 92309c2845eSStanimir Varbanov u32 csc_limit[HFI_MAX_LIMIT_COEFFS]; 92409c2845eSStanimir Varbanov }; 92509c2845eSStanimir Varbanov 92609c2845eSStanimir Varbanov #define HFI_ROTATE_NONE 0x1 92709c2845eSStanimir Varbanov #define HFI_ROTATE_90 0x2 92809c2845eSStanimir Varbanov #define HFI_ROTATE_180 0x3 92909c2845eSStanimir Varbanov #define HFI_ROTATE_270 0x4 93009c2845eSStanimir Varbanov 93109c2845eSStanimir Varbanov #define HFI_FLIP_NONE 0x1 93209c2845eSStanimir Varbanov #define HFI_FLIP_HORIZONTAL 0x2 93309c2845eSStanimir Varbanov #define HFI_FLIP_VERTICAL 0x3 93409c2845eSStanimir Varbanov 93509c2845eSStanimir Varbanov struct hfi_operations { 93609c2845eSStanimir Varbanov u32 rotate; 93709c2845eSStanimir Varbanov u32 flip; 93809c2845eSStanimir Varbanov }; 93909c2845eSStanimir Varbanov 94009c2845eSStanimir Varbanov #define HFI_RESOURCE_OCMEM 0x1 94109c2845eSStanimir Varbanov 94209c2845eSStanimir Varbanov struct hfi_resource_ocmem { 94309c2845eSStanimir Varbanov u32 size; 94409c2845eSStanimir Varbanov u32 mem; 94509c2845eSStanimir Varbanov }; 94609c2845eSStanimir Varbanov 94709c2845eSStanimir Varbanov struct hfi_resource_ocmem_requirement { 94809c2845eSStanimir Varbanov u32 session_domain; 94909c2845eSStanimir Varbanov u32 width; 95009c2845eSStanimir Varbanov u32 height; 95109c2845eSStanimir Varbanov u32 size; 95209c2845eSStanimir Varbanov }; 95309c2845eSStanimir Varbanov 95409c2845eSStanimir Varbanov struct hfi_resource_ocmem_requirement_info { 95509c2845eSStanimir Varbanov u32 num_entries; 95609c2845eSStanimir Varbanov struct hfi_resource_ocmem_requirement requirements[1]; 95709c2845eSStanimir Varbanov }; 95809c2845eSStanimir Varbanov 95909c2845eSStanimir Varbanov struct hfi_property_sys_image_version_info_type { 96009c2845eSStanimir Varbanov u32 string_size; 96109c2845eSStanimir Varbanov u8 str_image_version[1]; 96209c2845eSStanimir Varbanov }; 96309c2845eSStanimir Varbanov 96409c2845eSStanimir Varbanov struct hfi_codec_mask_supported { 96509c2845eSStanimir Varbanov u32 codecs; 96609c2845eSStanimir Varbanov u32 video_domains; 96709c2845eSStanimir Varbanov }; 96809c2845eSStanimir Varbanov 96909c2845eSStanimir Varbanov struct hfi_seq_header_info { 97009c2845eSStanimir Varbanov u32 max_hader_len; 97109c2845eSStanimir Varbanov }; 97209c2845eSStanimir Varbanov 97309c2845eSStanimir Varbanov struct hfi_aspect_ratio { 97409c2845eSStanimir Varbanov u32 aspect_width; 97509c2845eSStanimir Varbanov u32 aspect_height; 97609c2845eSStanimir Varbanov }; 97709c2845eSStanimir Varbanov 97809c2845eSStanimir Varbanov #define HFI_MVC_BUFFER_LAYOUT_TOP_BOTTOM 0 97909c2845eSStanimir Varbanov #define HFI_MVC_BUFFER_LAYOUT_SIDEBYSIDE 1 98009c2845eSStanimir Varbanov #define HFI_MVC_BUFFER_LAYOUT_SEQ 2 98109c2845eSStanimir Varbanov 98209c2845eSStanimir Varbanov struct hfi_mvc_buffer_layout_descp_type { 98309c2845eSStanimir Varbanov u32 layout_type; 98409c2845eSStanimir Varbanov u32 bright_view_first; 98509c2845eSStanimir Varbanov u32 ngap; 98609c2845eSStanimir Varbanov }; 98709c2845eSStanimir Varbanov 98809c2845eSStanimir Varbanov struct hfi_scs_threshold { 98909c2845eSStanimir Varbanov u32 threshold_value; 99009c2845eSStanimir Varbanov }; 99109c2845eSStanimir Varbanov 99209c2845eSStanimir Varbanov #define HFI_TEST_SSR_SW_ERR_FATAL 0x1 99309c2845eSStanimir Varbanov #define HFI_TEST_SSR_SW_DIV_BY_ZERO 0x2 99409c2845eSStanimir Varbanov #define HFI_TEST_SSR_HW_WDOG_IRQ 0x3 99509c2845eSStanimir Varbanov 99609c2845eSStanimir Varbanov struct hfi_buffer_alloc_mode { 99709c2845eSStanimir Varbanov u32 type; 99809c2845eSStanimir Varbanov u32 mode; 99909c2845eSStanimir Varbanov }; 100009c2845eSStanimir Varbanov 100109c2845eSStanimir Varbanov struct hfi_index_extradata_config { 100209c2845eSStanimir Varbanov u32 enable; 100309c2845eSStanimir Varbanov u32 index_extra_data_id; 100409c2845eSStanimir Varbanov }; 100509c2845eSStanimir Varbanov 100609c2845eSStanimir Varbanov struct hfi_extradata_header { 100709c2845eSStanimir Varbanov u32 size; 100809c2845eSStanimir Varbanov u32 version; 100909c2845eSStanimir Varbanov u32 port_index; 101009c2845eSStanimir Varbanov u32 type; 101109c2845eSStanimir Varbanov u32 data_size; 101209c2845eSStanimir Varbanov u8 data[1]; 101309c2845eSStanimir Varbanov }; 101409c2845eSStanimir Varbanov 101509c2845eSStanimir Varbanov struct hfi_batch_info { 101609c2845eSStanimir Varbanov u32 input_batch_count; 101709c2845eSStanimir Varbanov u32 output_batch_count; 101809c2845eSStanimir Varbanov }; 101909c2845eSStanimir Varbanov 102009c2845eSStanimir Varbanov struct hfi_buffer_count_actual { 102109c2845eSStanimir Varbanov u32 type; 102209c2845eSStanimir Varbanov u32 count_actual; 102309c2845eSStanimir Varbanov }; 102409c2845eSStanimir Varbanov 1025f04997bdSStanimir Varbanov struct hfi_buffer_count_actual_4xx { 1026f04997bdSStanimir Varbanov u32 type; 1027f04997bdSStanimir Varbanov u32 count_actual; 1028f04997bdSStanimir Varbanov u32 count_min_host; 1029f04997bdSStanimir Varbanov }; 1030f04997bdSStanimir Varbanov 103109c2845eSStanimir Varbanov struct hfi_buffer_size_actual { 103209c2845eSStanimir Varbanov u32 type; 103309c2845eSStanimir Varbanov u32 size; 103409c2845eSStanimir Varbanov }; 103509c2845eSStanimir Varbanov 103609c2845eSStanimir Varbanov struct hfi_buffer_display_hold_count_actual { 103709c2845eSStanimir Varbanov u32 type; 103809c2845eSStanimir Varbanov u32 hold_count; 103909c2845eSStanimir Varbanov }; 104009c2845eSStanimir Varbanov 1041f04997bdSStanimir Varbanov /* HFI 4XX reorder the fields, use these macros */ 1042f04997bdSStanimir Varbanov #define HFI_BUFREQ_HOLD_COUNT(bufreq, ver) \ 1043f04997bdSStanimir Varbanov ((ver) == HFI_VERSION_4XX ? 0 : (bufreq)->hold_count) 1044f04997bdSStanimir Varbanov #define HFI_BUFREQ_COUNT_MIN(bufreq, ver) \ 1045f04997bdSStanimir Varbanov ((ver) == HFI_VERSION_4XX ? (bufreq)->hold_count : (bufreq)->count_min) 1046f04997bdSStanimir Varbanov #define HFI_BUFREQ_COUNT_MIN_HOST(bufreq, ver) \ 1047f04997bdSStanimir Varbanov ((ver) == HFI_VERSION_4XX ? (bufreq)->count_min : 0) 1048f04997bdSStanimir Varbanov 104909c2845eSStanimir Varbanov struct hfi_buffer_requirements { 105009c2845eSStanimir Varbanov u32 type; 105109c2845eSStanimir Varbanov u32 size; 105209c2845eSStanimir Varbanov u32 region_size; 105309c2845eSStanimir Varbanov u32 hold_count; 105409c2845eSStanimir Varbanov u32 count_min; 105509c2845eSStanimir Varbanov u32 count_actual; 105609c2845eSStanimir Varbanov u32 contiguous; 105709c2845eSStanimir Varbanov u32 alignment; 105809c2845eSStanimir Varbanov }; 105909c2845eSStanimir Varbanov 106009c2845eSStanimir Varbanov struct hfi_data_payload { 106109c2845eSStanimir Varbanov u32 size; 106209c2845eSStanimir Varbanov u8 data[1]; 106309c2845eSStanimir Varbanov }; 106409c2845eSStanimir Varbanov 106509c2845eSStanimir Varbanov struct hfi_enable_picture { 106609c2845eSStanimir Varbanov u32 picture_type; 106709c2845eSStanimir Varbanov }; 106809c2845eSStanimir Varbanov 106909c2845eSStanimir Varbanov struct hfi_display_picture_buffer_count { 107009c2845eSStanimir Varbanov int enable; 107109c2845eSStanimir Varbanov u32 count; 107209c2845eSStanimir Varbanov }; 107309c2845eSStanimir Varbanov 107409c2845eSStanimir Varbanov struct hfi_extra_data_header_config { 107509c2845eSStanimir Varbanov u32 type; 107609c2845eSStanimir Varbanov u32 buffer_type; 107709c2845eSStanimir Varbanov u32 version; 107809c2845eSStanimir Varbanov u32 port_index; 107909c2845eSStanimir Varbanov u32 client_extra_data_id; 108009c2845eSStanimir Varbanov }; 108109c2845eSStanimir Varbanov 108209c2845eSStanimir Varbanov struct hfi_interlace_format_supported { 108309c2845eSStanimir Varbanov u32 buffer_type; 108409c2845eSStanimir Varbanov u32 format; 108509c2845eSStanimir Varbanov }; 108609c2845eSStanimir Varbanov 108709c2845eSStanimir Varbanov struct hfi_buffer_alloc_mode_supported { 108809c2845eSStanimir Varbanov u32 buffer_type; 108909c2845eSStanimir Varbanov u32 num_entries; 109009c2845eSStanimir Varbanov u32 data[1]; 109109c2845eSStanimir Varbanov }; 109209c2845eSStanimir Varbanov 109309c2845eSStanimir Varbanov struct hfi_mb_error_map { 109409c2845eSStanimir Varbanov u32 error_map_size; 109509c2845eSStanimir Varbanov u8 error_map[1]; 109609c2845eSStanimir Varbanov }; 109709c2845eSStanimir Varbanov 109809c2845eSStanimir Varbanov struct hfi_metadata_pass_through { 109909c2845eSStanimir Varbanov int enable; 110009c2845eSStanimir Varbanov u32 size; 110109c2845eSStanimir Varbanov }; 110209c2845eSStanimir Varbanov 110309c2845eSStanimir Varbanov struct hfi_multi_view_select { 110409c2845eSStanimir Varbanov u32 view_index; 110509c2845eSStanimir Varbanov }; 110609c2845eSStanimir Varbanov 110709c2845eSStanimir Varbanov struct hfi_hybrid_hierp { 110809c2845eSStanimir Varbanov u32 layers; 110909c2845eSStanimir Varbanov }; 111009c2845eSStanimir Varbanov 111109c2845eSStanimir Varbanov struct hfi_pkt_hdr { 111209c2845eSStanimir Varbanov u32 size; 111309c2845eSStanimir Varbanov u32 pkt_type; 111409c2845eSStanimir Varbanov }; 111509c2845eSStanimir Varbanov 111609c2845eSStanimir Varbanov struct hfi_session_hdr_pkt { 111709c2845eSStanimir Varbanov struct hfi_pkt_hdr hdr; 111809c2845eSStanimir Varbanov u32 session_id; 111909c2845eSStanimir Varbanov }; 112009c2845eSStanimir Varbanov 112109c2845eSStanimir Varbanov struct hfi_session_pkt { 112209c2845eSStanimir Varbanov struct hfi_session_hdr_pkt shdr; 112309c2845eSStanimir Varbanov }; 112409c2845eSStanimir Varbanov 112509c2845eSStanimir Varbanov #endif 1126