18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* (C) COPYRIGHT 2014-2018 ARM Limited. All rights reserved. */ 38c2ecf20Sopenharmony_ci/* Copyright 2019 Linaro, Ltd., Rob Herring <robh@kernel.org> */ 48c2ecf20Sopenharmony_ci#ifndef __PANFROST_FEATURES_H__ 58c2ecf20Sopenharmony_ci#define __PANFROST_FEATURES_H__ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include <linux/bitops.h> 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include "panfrost_device.h" 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cienum panfrost_hw_feature { 128c2ecf20Sopenharmony_ci HW_FEATURE_JOBCHAIN_DISAMBIGUATION, 138c2ecf20Sopenharmony_ci HW_FEATURE_PWRON_DURING_PWROFF_TRANS, 148c2ecf20Sopenharmony_ci HW_FEATURE_XAFFINITY, 158c2ecf20Sopenharmony_ci HW_FEATURE_OUT_OF_ORDER_EXEC, 168c2ecf20Sopenharmony_ci HW_FEATURE_MRT, 178c2ecf20Sopenharmony_ci HW_FEATURE_BRNDOUT_CC, 188c2ecf20Sopenharmony_ci HW_FEATURE_INTERPIPE_REG_ALIASING, 198c2ecf20Sopenharmony_ci HW_FEATURE_LD_ST_TILEBUFFER, 208c2ecf20Sopenharmony_ci HW_FEATURE_MSAA_16X, 218c2ecf20Sopenharmony_ci HW_FEATURE_32_BIT_UNIFORM_ADDRESS, 228c2ecf20Sopenharmony_ci HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL, 238c2ecf20Sopenharmony_ci HW_FEATURE_OPTIMIZED_COVERAGE_MASK, 248c2ecf20Sopenharmony_ci HW_FEATURE_T7XX_PAIRING_RULES, 258c2ecf20Sopenharmony_ci HW_FEATURE_LD_ST_LEA_TEX, 268c2ecf20Sopenharmony_ci HW_FEATURE_LINEAR_FILTER_FLOAT, 278c2ecf20Sopenharmony_ci HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4, 288c2ecf20Sopenharmony_ci HW_FEATURE_IMAGES_IN_FRAGMENT_SHADERS, 298c2ecf20Sopenharmony_ci HW_FEATURE_TEST4_DATUM_MODE, 308c2ecf20Sopenharmony_ci HW_FEATURE_NEXT_INSTRUCTION_TYPE, 318c2ecf20Sopenharmony_ci HW_FEATURE_BRNDOUT_KILL, 328c2ecf20Sopenharmony_ci HW_FEATURE_WARPING, 338c2ecf20Sopenharmony_ci HW_FEATURE_V4, 348c2ecf20Sopenharmony_ci HW_FEATURE_FLUSH_REDUCTION, 358c2ecf20Sopenharmony_ci HW_FEATURE_PROTECTED_MODE, 368c2ecf20Sopenharmony_ci HW_FEATURE_COHERENCY_REG, 378c2ecf20Sopenharmony_ci HW_FEATURE_PROTECTED_DEBUG_MODE, 388c2ecf20Sopenharmony_ci HW_FEATURE_AARCH64_MMU, 398c2ecf20Sopenharmony_ci HW_FEATURE_TLS_HASHING, 408c2ecf20Sopenharmony_ci HW_FEATURE_THREAD_GROUP_SPLIT, 418c2ecf20Sopenharmony_ci HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG, 428c2ecf20Sopenharmony_ci}; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ci#define hw_features_t600 (\ 458c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 468c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 478c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 488c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_V4)) 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci#define hw_features_t620 (\ 518c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 528c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 538c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 548c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 558c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_V4)) 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci#define hw_features_t720 (\ 588c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 598c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 608c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 618c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OPTIMIZED_COVERAGE_MASK) | \ 628c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 638c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 648c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WORKGROUP_ROUND_MULTIPLE_OF_4) | \ 658c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 668c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_V4)) 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#define hw_features_t760 (\ 708c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 718c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 728c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 738c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 748c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 758c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 768c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 778c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 788c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 798c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 808c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 818c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 828c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 838c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 848c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci// T860 878c2ecf20Sopenharmony_ci#define hw_features_t860 (\ 888c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 898c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 908c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 918c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 928c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 938c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 948c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 958c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 968c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 978c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 988c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 998c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 1008c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 1018c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 1028c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 1038c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 1048c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_ci#define hw_features_t880 hw_features_t860 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci#define hw_features_t830 (\ 1098c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 1108c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 1118c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 1128c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 1138c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 1148c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 1158c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 1168c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 1178c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 1188c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 1198c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 1208c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 1218c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 1228c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 1238c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 1248c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 1258c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 1268c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci#define hw_features_t820 (\ 1298c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 1308c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 1318c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 1328c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 1338c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 1348c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 1358c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 1368c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 1378c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 1388c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 1398c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 1408c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 1418c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 1428c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 1438c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 1448c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 1458c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 1468c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT)) 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_ci#define hw_features_g71 (\ 1498c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 1508c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 1518c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 1528c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 1538c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 1548c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 1558c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 1568c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 1578c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 1588c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 1598c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 1608c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 1618c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 1628c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 1638c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 1648c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 1658c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 1668c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 1678c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 1688c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ 1698c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ 1708c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_COHERENCY_REG)) 1718c2ecf20Sopenharmony_ci 1728c2ecf20Sopenharmony_ci#define hw_features_g72 (\ 1738c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 1748c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 1758c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 1768c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 1778c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 1788c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 1798c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 1808c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 1818c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 1828c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 1838c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 1848c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 1858c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 1868c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 1878c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 1888c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 1898c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 1908c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 1918c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 1928c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ 1938c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ 1948c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \ 1958c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_COHERENCY_REG)) 1968c2ecf20Sopenharmony_ci 1978c2ecf20Sopenharmony_ci#define hw_features_g51 (\ 1988c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 1998c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 2008c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 2018c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 2028c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 2038c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 2048c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 2058c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 2068c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 2078c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 2088c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 2098c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 2108c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 2118c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 2128c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 2138c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 2148c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 2158c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 2168c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 2178c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ 2188c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ 2198c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \ 2208c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_COHERENCY_REG)) 2218c2ecf20Sopenharmony_ci 2228c2ecf20Sopenharmony_ci#define hw_features_g52 (\ 2238c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 2248c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 2258c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 2268c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 2278c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 2288c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 2298c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 2308c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 2318c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 2328c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 2338c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 2348c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 2358c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 2368c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 2378c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 2388c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 2398c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 2408c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 2418c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 2428c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ 2438c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ 2448c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \ 2458c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_COHERENCY_REG)) 2468c2ecf20Sopenharmony_ci 2478c2ecf20Sopenharmony_ci#define hw_features_g76 (\ 2488c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 2498c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 2508c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 2518c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 2528c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 2538c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 2548c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 2558c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 2568c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 2578c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 2588c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 2598c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 2608c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 2618c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 2628c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 2638c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 2648c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 2658c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 2668c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 2678c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ 2688c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ 2698c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \ 2708c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_COHERENCY_REG) | \ 2718c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_AARCH64_MMU) | \ 2728c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TLS_HASHING) | \ 2738c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG)) 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ci#define hw_features_g31 (\ 2768c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \ 2778c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \ 2788c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_XAFFINITY) | \ 2798c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_WARPING) | \ 2808c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_INTERPIPE_REG_ALIASING) | \ 2818c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_32_BIT_UNIFORM_ADDRESS) | \ 2828c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_ATTR_AUTO_TYPE_INFERRAL) | \ 2838c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_CC) | \ 2848c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_BRNDOUT_KILL) | \ 2858c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_LEA_TEX) | \ 2868c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LD_ST_TILEBUFFER) | \ 2878c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_LINEAR_FILTER_FLOAT) | \ 2888c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MRT) | \ 2898c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_MSAA_16X) | \ 2908c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_NEXT_INSTRUCTION_TYPE) | \ 2918c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_OUT_OF_ORDER_EXEC) | \ 2928c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_T7XX_PAIRING_RULES) | \ 2938c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TEST4_DATUM_MODE) | \ 2948c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ 2958c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ 2968c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ 2978c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \ 2988c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_COHERENCY_REG) | \ 2998c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_AARCH64_MMU) | \ 3008c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_TLS_HASHING) | \ 3018c2ecf20Sopenharmony_ci BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG)) 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_cistatic inline bool panfrost_has_hw_feature(struct panfrost_device *pfdev, 3048c2ecf20Sopenharmony_ci enum panfrost_hw_feature feat) 3058c2ecf20Sopenharmony_ci{ 3068c2ecf20Sopenharmony_ci return test_bit(feat, pfdev->features.hw_features); 3078c2ecf20Sopenharmony_ci} 3088c2ecf20Sopenharmony_ci 3098c2ecf20Sopenharmony_ci#endif 310