1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4  */
5 
6 #ifndef __IRIS_HFI_GEN2_DEFINES_H__
7 #define __IRIS_HFI_GEN2_DEFINES_H__
8 
9 #include <linux/types.h>
10 
11 #define HFI_VIDEO_ARCH_LX			0x1
12 
13 #define HFI_CMD_BEGIN				0x01000000
14 #define HFI_CMD_INIT				0x01000001
15 #define HFI_CMD_POWER_COLLAPSE			0x01000002
16 #define HFI_CMD_OPEN				0x01000003
17 #define HFI_CMD_CLOSE				0x01000004
18 #define HFI_CMD_START				0x01000005
19 #define HFI_CMD_STOP				0x01000006
20 #define HFI_CMD_DRAIN				0x01000007
21 #define HFI_CMD_RESUME				0x01000008
22 #define HFI_CMD_BUFFER				0x01000009
23 #define HFI_CMD_SUBSCRIBE_MODE			0x0100000B
24 #define HFI_CMD_SETTINGS_CHANGE			0x0100000C
25 #define HFI_CMD_PAUSE				0x01000011
26 #define HFI_CMD_END				0x01FFFFFF
27 
28 #define HFI_BITMASK_BITSTREAM_WIDTH		0xffff0000
29 #define HFI_BITMASK_BITSTREAM_HEIGHT		0x0000ffff
30 #define HFI_BITMASK_FRAME_MBS_ONLY_FLAG		0x00000001
31 
32 #define HFI_PROP_BEGIN				0x03000000
33 #define HFI_PROP_IMAGE_VERSION			0x03000001
34 #define HFI_PROP_INTRA_FRAME_POWER_COLLAPSE	0x03000002
35 #define HFI_PROP_UBWC_MAX_CHANNELS		0x03000003
36 #define HFI_PROP_UBWC_MAL_LENGTH		0x03000004
37 #define HFI_PROP_UBWC_HBB			0x03000005
38 #define HFI_PROP_UBWC_BANK_SWZL_LEVEL1		0x03000006
39 #define HFI_PROP_UBWC_BANK_SWZL_LEVEL2		0x03000007
40 #define HFI_PROP_UBWC_BANK_SWZL_LEVEL3		0x03000008
41 #define HFI_PROP_UBWC_BANK_SPREADING		0x03000009
42 #define HFI_PROP_CODEC				0x03000100
43 #define HFI_PROP_COLOR_FORMAT			0x03000101
44 #define HFI_PROP_BITSTREAM_RESOLUTION		0x03000103
45 #define HFI_PROP_LINEAR_STRIDE_SCANLINE		0x03000104
46 #define HFI_PROP_CROP_OFFSETS			0x03000105
47 #define HFI_PROP_PROFILE			0x03000107
48 #define HFI_PROP_LEVEL				0x03000108
49 #define HFI_PROP_STAGE				0x0300010a
50 #define HFI_PROP_PIPE				0x0300010b
51 #define HFI_PROP_LUMA_CHROMA_BIT_DEPTH		0x0300010f
52 #define HFI_PROP_CODED_FRAMES			0x03000120
53 #define HFI_PROP_CABAC_SESSION			0x03000121
54 #define HFI_PROP_BUFFER_HOST_MAX_COUNT		0x03000123
55 #define HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT	0x03000124
56 #define HFI_PROP_PIC_ORDER_CNT_TYPE		0x03000128
57 #define HFI_PROP_QUALITY_MODE			0x03000148
58 #define HFI_PROP_SIGNAL_COLOR_INFO		0x03000155
59 #define HFI_PROP_PICTURE_TYPE			0x03000162
60 #define HFI_PROP_DEC_DEFAULT_HEADER		0x03000168
61 #define HFI_PROP_DEC_START_FROM_RAP_FRAME	0x03000169
62 #define HFI_PROP_NO_OUTPUT			0x0300016a
63 #define HFI_PROP_COMV_BUFFER_COUNT		0x03000193
64 #define HFI_PROP_END				0x03FFFFFF
65 
66 #define HFI_SESSION_ERROR_BEGIN			0x04000000
67 #define HFI_ERROR_UNKNOWN_SESSION		0x04000001
68 #define HFI_ERROR_MAX_SESSIONS			0x04000002
69 #define HFI_ERROR_FATAL				0x04000003
70 #define HFI_ERROR_INVALID_STATE			0x04000004
71 #define HFI_ERROR_INSUFFICIENT_RESOURCES	0x04000005
72 #define HFI_ERROR_BUFFER_NOT_SET		0x04000006
73 #define HFI_ERROR_STREAM_UNSUPPORTED		0x04000008
74 #define HFI_SESSION_ERROR_END			0x04FFFFFF
75 
76 #define HFI_SYSTEM_ERROR_BEGIN			0x05000000
77 #define HFI_SYS_ERROR_WD_TIMEOUT		0x05000001
78 #define HFI_SYSTEM_ERROR_END			0x05FFFFFF
79 
80 #define HFI_INFORMATION_BEGIN			0x06000000
81 #define HFI_INFO_UNSUPPORTED			0x06000001
82 #define HFI_INFO_DATA_CORRUPT			0x06000002
83 #define HFI_INFO_BUFFER_OVERFLOW		0x06000004
84 #define HFI_INFO_HFI_FLAG_DRAIN_LAST		0x06000006
85 #define HFI_INFO_HFI_FLAG_PSC_LAST		0x06000007
86 #define HFI_INFORMATION_END			0x06FFFFFF
87 
88 enum hfi_property_mode_type {
89 	HFI_MODE_PORT_SETTINGS_CHANGE		= 0x00000001,
90 	HFI_MODE_PROPERTY			= 0x00000002,
91 };
92 
93 enum hfi_color_format {
94 	HFI_COLOR_FMT_OPAQUE			= 0,
95 	HFI_COLOR_FMT_NV12			= 1,
96 	HFI_COLOR_FMT_NV12_UBWC			= 2,
97 	HFI_COLOR_FMT_P010			= 3,
98 	HFI_COLOR_FMT_TP10_UBWC			= 4,
99 	HFI_COLOR_FMT_RGBA8888			= 5,
100 	HFI_COLOR_FMT_RGBA8888_UBWC		= 6,
101 	HFI_COLOR_FMT_NV21			= 7,
102 };
103 
104 enum hfi_codec_type {
105 	HFI_CODEC_DECODE_AVC			= 1,
106 	HFI_CODEC_ENCODE_AVC			= 2,
107 };
108 
109 enum hfi_picture_type {
110 	HFI_PICTURE_IDR				= 0x00000001,
111 	HFI_PICTURE_P				= 0x00000002,
112 	HFI_PICTURE_B				= 0x00000004,
113 	HFI_PICTURE_I				= 0x00000008,
114 	HFI_PICTURE_CRA				= 0x00000010,
115 	HFI_PICTURE_BLA				= 0x00000020,
116 };
117 
118 enum hfi_buffer_type {
119 	HFI_BUFFER_BITSTREAM			= 0x00000001,
120 	HFI_BUFFER_RAW				= 0x00000002,
121 	HFI_BUFFER_METADATA			= 0x00000003,
122 	HFI_BUFFER_SUBCACHE			= 0x00000004,
123 	HFI_BUFFER_PARTIAL_DATA			= 0x00000005,
124 	HFI_BUFFER_DPB				= 0x00000006,
125 	HFI_BUFFER_BIN				= 0x00000007,
126 	HFI_BUFFER_LINE				= 0x00000008,
127 	HFI_BUFFER_ARP				= 0x00000009,
128 	HFI_BUFFER_COMV				= 0x0000000A,
129 	HFI_BUFFER_NON_COMV			= 0x0000000B,
130 	HFI_BUFFER_PERSIST			= 0x0000000C,
131 	HFI_BUFFER_VPSS				= 0x0000000D,
132 };
133 
134 enum hfi_buffer_host_flags {
135 	HFI_BUF_HOST_FLAG_RELEASE		= 0x00000001,
136 	HFI_BUF_HOST_FLAG_READONLY		= 0x00000010,
137 	HFI_BUF_HOST_FLAG_CODEC_CONFIG		= 0x00000100,
138 	HFI_BUF_HOST_FLAGS_CB_NON_SECURE	= 0x00000200,
139 };
140 
141 enum hfi_buffer_firmware_flags {
142 	HFI_BUF_FW_FLAG_RELEASE_DONE		= 0x00000001,
143 	HFI_BUF_FW_FLAG_READONLY		= 0x00000010,
144 	HFI_BUF_FW_FLAG_LAST			= 0x10000000,
145 	HFI_BUF_FW_FLAG_PSC_LAST		= 0x20000000,
146 };
147 
148 enum hfi_packet_firmware_flags {
149 	HFI_FW_FLAGS_SUCCESS			= 0x00000001,
150 	HFI_FW_FLAGS_INFORMATION		= 0x00000002,
151 	HFI_FW_FLAGS_SESSION_ERROR		= 0x00000004,
152 	HFI_FW_FLAGS_SYSTEM_ERROR		= 0x00000008,
153 };
154 
155 struct hfi_debug_header {
156 	u32 size;
157 	u32 debug_level;
158 	u32 reserved[2];
159 };
160 
161 #endif
162