Linux Audio

Check our new training course

Yocto / OpenEmbedded training

Feb 10-13, 2025
Register
Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/* (C) COPYRIGHT 2014-2018 ARM Limited. All rights reserved. */
  3/* Copyright 2019 Linaro, Ltd., Rob Herring <robh@kernel.org> */
  4#ifndef __PANFROST_FEATURES_H__
  5#define __PANFROST_FEATURES_H__
  6
  7#include <linux/bitops.h>
  8
  9#include "panfrost_device.h"
 10
 11enum panfrost_hw_feature {
 12	HW_FEATURE_JOBCHAIN_DISAMBIGUATION,
 13	HW_FEATURE_PWRON_DURING_PWROFF_TRANS,
 14	HW_FEATURE_XAFFINITY,
 15	HW_FEATURE_OUT_OF_ORDER_EXEC,
 16	HW_FEATURE_MRT,
 17	HW_FEATURE_BRNDOUT_CC,
 18	HW_FEATURE_INTERPIPE_REG_ALIASING,
 19	HW_FEATURE_LD_ST_TILEBUFFER,
 20	HW_FEATURE_MSAA_16X,
 21	HW_FEATURE_32_BIT_UNIFORM_ADDRESS,
 22	HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL,
 23	HW_FEATURE_OPTIMIZED_COVERAGE_MASK,
 24	HW_FEATURE_T7XX_PAIRING_RULES,
 25	HW_FEATURE_LD_ST_LEA_TEX,
 26	HW_FEATURE_LINEAR_FILTER_FLOAT,
 27	HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4,
 28	HW_FEATURE_IMAGES_IN_FRAGMENT_SHADERS,
 29	HW_FEATURE_TEST4_DATUM_MODE,
 30	HW_FEATURE_NEXT_INSTRUCTION_TYPE,
 31	HW_FEATURE_BRNDOUT_KILL,
 32	HW_FEATURE_WARPING,
 33	HW_FEATURE_V4,
 34	HW_FEATURE_FLUSH_REDUCTION,
 35	HW_FEATURE_PROTECTED_MODE,
 36	HW_FEATURE_COHERENCY_REG,
 37	HW_FEATURE_PROTECTED_DEBUG_MODE,
 38	HW_FEATURE_AARCH64_MMU,
 39	HW_FEATURE_TLS_HASHING,
 40	HW_FEATURE_THREAD_GROUP_SPLIT,
 41	HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG,
 42};
 43
 44#define hw_features_t600 (\
 45	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 46	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 47	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 48	BIT_ULL(HW_FEATURE_V4))
 49
 50#define hw_features_t620 (\
 51	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 52	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 53	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 54	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 55	BIT_ULL(HW_FEATURE_V4))
 56
 57#define hw_features_t720 (\
 58	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 59	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 60	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
 61	BIT_ULL(HW_FEATURE_OPTIMIZED_COVERAGE_MASK) | \
 62	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 63	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
 64	BIT_ULL(HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4) | \
 65	BIT_ULL(HW_FEATURE_WARPING) | \
 66	BIT_ULL(HW_FEATURE_V4))
 67
 68
 69#define hw_features_t760 (\
 70	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 71	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 72	BIT_ULL(HW_FEATURE_XAFFINITY) | \
 73	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 74	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 75	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 76	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 77	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 78	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 79	BIT_ULL(HW_FEATURE_MRT) | \
 80	BIT_ULL(HW_FEATURE_MSAA_16X) | \
 81	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
 82	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
 83	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
 84	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
 85
 86// T860
 87#define hw_features_t860 (\
 88	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
 89	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
 90	BIT_ULL(HW_FEATURE_XAFFINITY) | \
 91	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
 92	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
 93	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
 94	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
 95	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
 96	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
 97	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
 98	BIT_ULL(HW_FEATURE_MRT) | \
 99	BIT_ULL(HW_FEATURE_MSAA_16X) | \
100	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
101	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
102	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
103	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
104	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
105
106#define hw_features_t880 hw_features_t860
107
108#define hw_features_t830 (\
109	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
110	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
111	BIT_ULL(HW_FEATURE_XAFFINITY) | \
112	BIT_ULL(HW_FEATURE_WARPING) | \
113	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
114	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
115	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
116	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
117	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
118	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
119	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
120	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
121	BIT_ULL(HW_FEATURE_MRT) | \
122	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
123	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
124	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
125	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
126	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
127
128#define hw_features_t820 (\
129	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
130	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
131	BIT_ULL(HW_FEATURE_XAFFINITY) | \
132	BIT_ULL(HW_FEATURE_WARPING) | \
133	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
134	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
135	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
136	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
137	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
138	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
139	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
140	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
141	BIT_ULL(HW_FEATURE_MRT) | \
142	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
143	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
144	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
145	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
146	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
147
148#define hw_features_g71 (\
149	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
150	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
151	BIT_ULL(HW_FEATURE_XAFFINITY) | \
152	BIT_ULL(HW_FEATURE_WARPING) | \
153	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
154	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
155	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
156	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
157	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
158	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
159	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
160	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
161	BIT_ULL(HW_FEATURE_MRT) | \
162	BIT_ULL(HW_FEATURE_MSAA_16X) | \
163	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
164	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
165	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
166	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
167	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
168	BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
169	BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
170	BIT_ULL(HW_FEATURE_COHERENCY_REG))
171
172#define hw_features_g72 (\
173	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
174	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
175	BIT_ULL(HW_FEATURE_XAFFINITY) | \
176	BIT_ULL(HW_FEATURE_WARPING) | \
177	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
178	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
179	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
180	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
181	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
182	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
183	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
184	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
185	BIT_ULL(HW_FEATURE_MRT) | \
186	BIT_ULL(HW_FEATURE_MSAA_16X) | \
187	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
188	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
189	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
190	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
191	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
192	BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
193	BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
194	BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
195	BIT_ULL(HW_FEATURE_COHERENCY_REG))
196
197#define hw_features_g51 (\
198	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
199	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
200	BIT_ULL(HW_FEATURE_XAFFINITY) | \
201	BIT_ULL(HW_FEATURE_WARPING) | \
202	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
203	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
204	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
205	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
206	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
207	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
208	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
209	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
210	BIT_ULL(HW_FEATURE_MRT) | \
211	BIT_ULL(HW_FEATURE_MSAA_16X) | \
212	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
213	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
214	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
215	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
216	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
217	BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
218	BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
219	BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
220	BIT_ULL(HW_FEATURE_COHERENCY_REG))
221
222#define hw_features_g52 (\
223	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
224	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
225	BIT_ULL(HW_FEATURE_XAFFINITY) | \
226	BIT_ULL(HW_FEATURE_WARPING) | \
227	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
228	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
229	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
230	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
231	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
232	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
233	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
234	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
235	BIT_ULL(HW_FEATURE_MRT) | \
236	BIT_ULL(HW_FEATURE_MSAA_16X) | \
237	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
238	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
239	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
240	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
241	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
242	BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
243	BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
244	BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
245	BIT_ULL(HW_FEATURE_COHERENCY_REG))
246
247#define hw_features_g76 (\
248	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
249	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
250	BIT_ULL(HW_FEATURE_XAFFINITY) | \
251	BIT_ULL(HW_FEATURE_WARPING) | \
252	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
253	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
254	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
255	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
256	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
257	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
258	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
259	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
260	BIT_ULL(HW_FEATURE_MRT) | \
261	BIT_ULL(HW_FEATURE_MSAA_16X) | \
262	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
263	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
264	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
265	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
266	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
267	BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
268	BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
269	BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
270	BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
271	BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
272	BIT_ULL(HW_FEATURE_TLS_HASHING) | \
273	BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
274
275#define hw_features_g31 (\
276	BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
277	BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
278	BIT_ULL(HW_FEATURE_XAFFINITY) | \
279	BIT_ULL(HW_FEATURE_WARPING) | \
280	BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \
281	BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \
282	BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \
283	BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \
284	BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \
285	BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \
286	BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \
287	BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \
288	BIT_ULL(HW_FEATURE_MRT) | \
289	BIT_ULL(HW_FEATURE_MSAA_16X) | \
290	BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \
291	BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \
292	BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \
293	BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \
294	BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
295	BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
296	BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
297	BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
298	BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
299	BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
300	BIT_ULL(HW_FEATURE_TLS_HASHING) | \
301	BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
302
303static inline bool panfrost_has_hw_feature(struct panfrost_device *pfdev,
304					   enum panfrost_hw_feature feat)
305{
306	return test_bit(feat, pfdev->features.hw_features);
307}
308
309#endif