Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /* (C) COPYRIGHT 2014-2018 ARM Limited. All rights reserved. */
0003 /* Copyright 2019 Linaro, Ltd., Rob Herring <robh@kernel.org> */
0004 #ifndef __PANFROST_FEATURES_H__
0005 #define __PANFROST_FEATURES_H__
0006 
0007 #include <linux/bitops.h>
0008 
0009 #include "panfrost_device.h"
0010 
0011 enum panfrost_hw_feature {
0012     HW_FEATURE_JOBCHAIN_DISAMBIGUATION,
0013     HW_FEATURE_PWRON_DURING_PWROFF_TRANS,
0014     HW_FEATURE_XAFFINITY,
0015     HW_FEATURE_V4,
0016     HW_FEATURE_FLUSH_REDUCTION,
0017     HW_FEATURE_PROTECTED_MODE,
0018     HW_FEATURE_COHERENCY_REG,
0019     HW_FEATURE_PROTECTED_DEBUG_MODE,
0020     HW_FEATURE_AARCH64_MMU,
0021     HW_FEATURE_TLS_HASHING,
0022     HW_FEATURE_THREAD_GROUP_SPLIT,
0023     HW_FEATURE_IDVS_GROUP_SIZE,
0024     HW_FEATURE_CLEAN_ONLY_SAFE,
0025     HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG,
0026 };
0027 
0028 #define hw_features_t600 (\
0029     BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
0030     BIT_ULL(HW_FEATURE_V4))
0031 
0032 #define hw_features_t620 hw_features_t600
0033 
0034 #define hw_features_t720 hw_features_t600
0035 
0036 #define hw_features_t760 (\
0037     BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
0038     BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
0039     BIT_ULL(HW_FEATURE_XAFFINITY) | \
0040     BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
0041 
0042 #define hw_features_t860 hw_features_t760
0043 
0044 #define hw_features_t880 hw_features_t760
0045 
0046 #define hw_features_t830 hw_features_t760
0047 
0048 #define hw_features_t820 hw_features_t760
0049 
0050 #define hw_features_g71 (\
0051     BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
0052     BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
0053     BIT_ULL(HW_FEATURE_XAFFINITY) | \
0054     BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
0055     BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
0056     BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
0057     BIT_ULL(HW_FEATURE_COHERENCY_REG))
0058 
0059 #define hw_features_g72 (\
0060     BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
0061     BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
0062     BIT_ULL(HW_FEATURE_XAFFINITY) | \
0063     BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
0064     BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
0065     BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
0066     BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
0067     BIT_ULL(HW_FEATURE_COHERENCY_REG))
0068 
0069 #define hw_features_g51 hw_features_g72
0070 
0071 #define hw_features_g52 (\
0072     BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
0073     BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
0074     BIT_ULL(HW_FEATURE_XAFFINITY) | \
0075     BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
0076     BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
0077     BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
0078     BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
0079     BIT_ULL(HW_FEATURE_IDVS_GROUP_SIZE) | \
0080     BIT_ULL(HW_FEATURE_COHERENCY_REG))
0081 
0082 #define hw_features_g76 (\
0083     BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
0084     BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
0085     BIT_ULL(HW_FEATURE_XAFFINITY) | \
0086     BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
0087     BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
0088     BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
0089     BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
0090     BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
0091     BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
0092     BIT_ULL(HW_FEATURE_TLS_HASHING) | \
0093     BIT_ULL(HW_FEATURE_IDVS_GROUP_SIZE) | \
0094     BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
0095 
0096 #define hw_features_g31 (\
0097     BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
0098     BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
0099     BIT_ULL(HW_FEATURE_XAFFINITY) | \
0100     BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
0101     BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
0102     BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
0103     BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
0104     BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
0105     BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
0106     BIT_ULL(HW_FEATURE_TLS_HASHING) | \
0107     BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
0108 
0109 #define hw_features_g57 (\
0110     BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
0111     BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
0112     BIT_ULL(HW_FEATURE_XAFFINITY) | \
0113     BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
0114     BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
0115     BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
0116     BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
0117     BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
0118     BIT_ULL(HW_FEATURE_IDVS_GROUP_SIZE) | \
0119     BIT_ULL(HW_FEATURE_CLEAN_ONLY_SAFE))
0120 
0121 static inline bool panfrost_has_hw_feature(struct panfrost_device *pfdev,
0122                        enum panfrost_hw_feature feat)
0123 {
0124     return test_bit(feat, pfdev->features.hw_features);
0125 }
0126 
0127 #endif