Contributors: 4
Author Tokens Token Proportion Commits Commit Proportion
Dikshita Agarwal 510 70.64% 19 73.08%
Vedang Nagar 124 17.17% 2 7.69%
Wangao Wang 52 7.20% 3 11.54%
Deepa Guthyappa Madivalara 36 4.99% 2 7.69%
Total 722 26


/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#ifndef __IRIS_HFI_GEN2_DEFINES_H__
#define __IRIS_HFI_GEN2_DEFINES_H__

#include <linux/types.h>

#define HFI_VIDEO_ARCH_LX			0x1

#define HFI_CMD_BEGIN				0x01000000
#define HFI_CMD_INIT				0x01000001
#define HFI_CMD_POWER_COLLAPSE			0x01000002
#define HFI_CMD_OPEN				0x01000003
#define HFI_CMD_CLOSE				0x01000004
#define HFI_CMD_START				0x01000005
#define HFI_CMD_STOP				0x01000006
#define HFI_CMD_DRAIN				0x01000007
#define HFI_CMD_RESUME				0x01000008
#define HFI_CMD_BUFFER				0x01000009
#define HFI_CMD_SUBSCRIBE_MODE			0x0100000B
#define HFI_CMD_SETTINGS_CHANGE			0x0100000C
#define HFI_CMD_PAUSE				0x01000011
#define HFI_CMD_END				0x01FFFFFF

#define HFI_BITMASK_BITSTREAM_WIDTH		0xffff0000
#define HFI_BITMASK_BITSTREAM_HEIGHT		0x0000ffff
#define HFI_BITMASK_FRAME_MBS_ONLY_FLAG		0x00000001

#define HFI_PROP_BEGIN				0x03000000
#define HFI_PROP_IMAGE_VERSION			0x03000001
#define HFI_PROP_INTRA_FRAME_POWER_COLLAPSE	0x03000002
#define HFI_PROP_UBWC_MAX_CHANNELS		0x03000003
#define HFI_PROP_UBWC_MAL_LENGTH		0x03000004
#define HFI_PROP_UBWC_HBB			0x03000005
#define HFI_PROP_UBWC_BANK_SWZL_LEVEL1		0x03000006
#define HFI_PROP_UBWC_BANK_SWZL_LEVEL2		0x03000007
#define HFI_PROP_UBWC_BANK_SWZL_LEVEL3		0x03000008
#define HFI_PROP_UBWC_BANK_SPREADING		0x03000009
#define HFI_PROP_CODEC				0x03000100
#define HFI_PROP_COLOR_FORMAT			0x03000101
#define HFI_PROP_BITSTREAM_RESOLUTION		0x03000103
#define HFI_PROP_LINEAR_STRIDE_SCANLINE		0x03000104
#define HFI_PROP_CROP_OFFSETS			0x03000105
#define HFI_PROP_PROFILE			0x03000107
#define HFI_PROP_LEVEL				0x03000108
#define HFI_PROP_TIER				0x03000109
#define HFI_PROP_STAGE				0x0300010a
#define HFI_PROP_PIPE				0x0300010b
#define HFI_PROP_FRAME_RATE			0x0300010c
#define HFI_PROP_LUMA_CHROMA_BIT_DEPTH		0x0300010f
#define HFI_PROP_CODED_FRAMES			0x03000120
#define HFI_PROP_CABAC_SESSION			0x03000121
#define HFI_PROP_BUFFER_HOST_MAX_COUNT		0x03000123
#define HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT	0x03000124
#define HFI_PROP_PIC_ORDER_CNT_TYPE		0x03000128

enum hfi_rate_control {
	HFI_RC_VBR_CFR		= 0x00000000,
	HFI_RC_CBR_CFR		= 0x00000001,
	HFI_RC_CQ		= 0x00000002,
	HFI_RC_OFF		= 0x00000003,
	HFI_RC_CBR_VFR		= 0x00000004,
	HFI_RC_LOSSLESS		= 0x00000005,
};

#define HFI_PROP_RATE_CONTROL			0x0300012a
#define HFI_PROP_QP_PACKED			0x0300012e
#define HFI_PROP_MIN_QP_PACKED			0x0300012f
#define HFI_PROP_MAX_QP_PACKED			0x03000130
#define HFI_PROP_IR_RANDOM_PERIOD		0x03000131
#define HFI_PROP_TOTAL_BITRATE			0x0300013b
#define HFI_PROP_MAX_GOP_FRAMES			0x03000146
#define HFI_PROP_MAX_B_FRAMES			0x03000147
#define HFI_PROP_QUALITY_MODE			0x03000148

enum hfi_seq_header_mode {
	HFI_SEQ_HEADER_SEPERATE_FRAME		= 0x00000001,
	HFI_SEQ_HEADER_JOINED_WITH_1ST_FRAME	= 0x00000002,
	HFI_SEQ_HEADER_PREFIX_WITH_SYNC_FRAME	= 0x00000004,
	HFI_SEQ_HEADER_METADATA			= 0x00000008,
};

#define HFI_PROP_SEQ_HEADER_MODE		0x03000149

enum hfi_rotation {
	HFI_ROTATION_NONE = 0x00000000,
	HFI_ROTATION_90   = 0x00000001,
	HFI_ROTATION_180  = 0x00000002,
	HFI_ROTATION_270  = 0x00000003,
};

#define HFI_PROP_ROTATION			0x0300014b

enum hfi_flip {
	HFI_DISABLE_FLIP    = 0x00000000,
	HFI_HORIZONTAL_FLIP = 0x00000001,
	HFI_VERTICAL_FLIP   = 0x00000002,
};

#define HFI_PROP_FLIP				0x0300014c
#define HFI_PROP_SIGNAL_COLOR_INFO		0x03000155
#define HFI_PROP_PICTURE_TYPE			0x03000162
#define HFI_PROP_DEC_DEFAULT_HEADER		0x03000168
#define HFI_PROP_DEC_START_FROM_RAP_FRAME	0x03000169
#define HFI_PROP_NO_OUTPUT			0x0300016a
#define HFI_PROP_BUFFER_MARK			0x0300016c
#define HFI_PROP_WORST_COMPRESSION_RATIO	0x03000174
#define HFI_PROP_WORST_COMPLEXITY_FACTOR	0x03000175
#define HFI_PROP_RAW_RESOLUTION		0x03000178
#define HFI_PROP_TOTAL_PEAK_BITRATE		0x0300017C
#define HFI_PROP_AV1_FILM_GRAIN_PRESENT	0x03000180
#define HFI_PROP_AV1_SUPER_BLOCK_ENABLED	0x03000181
#define HFI_PROP_AV1_OP_POINT			0x03000182
#define HFI_PROP_IR_CYCLIC_PERIOD		0x0300017E
#define HFI_PROP_OPB_ENABLE			0x03000184
#define HFI_PROP_AV1_TILE_ROWS_COLUMNS		0x03000187
#define HFI_PROP_AV1_DRAP_CONFIG		0x03000189
#define HFI_PROP_COMV_BUFFER_COUNT		0x03000193
#define HFI_PROP_AV1_UNIFORM_TILE_SPACING	0x03000197
#define HFI_PROP_END				0x03FFFFFF

#define HFI_SESSION_ERROR_BEGIN			0x04000000
#define HFI_ERROR_UNKNOWN_SESSION		0x04000001
#define HFI_ERROR_MAX_SESSIONS			0x04000002
#define HFI_ERROR_FATAL				0x04000003
#define HFI_ERROR_INVALID_STATE			0x04000004
#define HFI_ERROR_INSUFFICIENT_RESOURCES	0x04000005
#define HFI_ERROR_BUFFER_NOT_SET		0x04000006
#define HFI_ERROR_STREAM_UNSUPPORTED		0x04000008
#define HFI_SESSION_ERROR_END			0x04FFFFFF

#define HFI_SYSTEM_ERROR_BEGIN			0x05000000
#define HFI_SYS_ERROR_WD_TIMEOUT		0x05000001
#define HFI_SYSTEM_ERROR_END			0x05FFFFFF

#define HFI_INFORMATION_BEGIN			0x06000000
#define HFI_INFO_UNSUPPORTED			0x06000001
#define HFI_INFO_DATA_CORRUPT			0x06000002
#define HFI_INFO_BUFFER_OVERFLOW		0x06000004
#define HFI_INFO_HFI_FLAG_DRAIN_LAST		0x06000006
#define HFI_INFO_HFI_FLAG_PSC_LAST		0x06000007
#define HFI_INFORMATION_END			0x06FFFFFF

enum hfi_property_mode_type {
	HFI_MODE_PORT_SETTINGS_CHANGE		= 0x00000001,
	HFI_MODE_PROPERTY			= 0x00000002,
};

enum hfi_color_format {
	HFI_COLOR_FMT_OPAQUE			= 0,
	HFI_COLOR_FMT_NV12			= 1,
	HFI_COLOR_FMT_NV12_UBWC			= 2,
	HFI_COLOR_FMT_P010			= 3,
	HFI_COLOR_FMT_TP10_UBWC			= 4,
	HFI_COLOR_FMT_RGBA8888			= 5,
	HFI_COLOR_FMT_RGBA8888_UBWC		= 6,
	HFI_COLOR_FMT_NV21			= 7,
};

enum hfi_codec_type {
	HFI_CODEC_DECODE_AVC			= 1,
	HFI_CODEC_ENCODE_AVC			= 2,
	HFI_CODEC_DECODE_HEVC			= 3,
	HFI_CODEC_ENCODE_HEVC			= 4,
	HFI_CODEC_DECODE_VP9			= 5,
	HFI_CODEC_DECODE_AV1			= 7,
};

enum hfi_picture_type {
	HFI_GEN2_PICTURE_IDR		= 0x00000001,
	HFI_GEN2_PICTURE_P			= 0x00000002,
	HFI_GEN2_PICTURE_B			= 0x00000004,
	HFI_GEN2_PICTURE_I			= 0x00000008,
	HFI_GEN2_PICTURE_CRA		= 0x00000010,
	HFI_GEN2_PICTURE_BLA		= 0x00000020,
	HFI_GEN2_PICTURE_NOSHOW     = 0x00000040,
};

enum hfi_buffer_type {
	HFI_BUFFER_BITSTREAM			= 0x00000001,
	HFI_BUFFER_RAW				= 0x00000002,
	HFI_BUFFER_METADATA			= 0x00000003,
	HFI_BUFFER_SUBCACHE			= 0x00000004,
	HFI_BUFFER_PARTIAL_DATA			= 0x00000005,
	HFI_BUFFER_DPB				= 0x00000006,
	HFI_BUFFER_BIN				= 0x00000007,
	HFI_BUFFER_LINE				= 0x00000008,
	HFI_BUFFER_ARP				= 0x00000009,
	HFI_BUFFER_COMV				= 0x0000000A,
	HFI_BUFFER_NON_COMV			= 0x0000000B,
	HFI_BUFFER_PERSIST			= 0x0000000C,
	HFI_BUFFER_VPSS				= 0x0000000D,
};

enum hfi_buffer_host_flags {
	HFI_BUF_HOST_FLAG_RELEASE		= 0x00000001,
	HFI_BUF_HOST_FLAG_READONLY		= 0x00000010,
	HFI_BUF_HOST_FLAG_CODEC_CONFIG		= 0x00000100,
	HFI_BUF_HOST_FLAGS_CB_NON_SECURE	= 0x00000200,
};

enum hfi_buffer_firmware_flags {
	HFI_BUF_FW_FLAG_RELEASE_DONE		= 0x00000001,
	HFI_BUF_FW_FLAG_READONLY		= 0x00000010,
	HFI_BUF_FW_FLAG_LAST			= 0x10000000,
	HFI_BUF_FW_FLAG_PSC_LAST		= 0x20000000,
};

enum hfi_packet_firmware_flags {
	HFI_FW_FLAGS_SUCCESS			= 0x00000001,
	HFI_FW_FLAGS_INFORMATION		= 0x00000002,
	HFI_FW_FLAGS_SESSION_ERROR		= 0x00000004,
	HFI_FW_FLAGS_SYSTEM_ERROR		= 0x00000008,
};

struct hfi_debug_header {
	u32 size;
	u32 debug_level;
	u32 reserved[2];
};

#endif