panfrost_features.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* (C) COPYRIGHT 2014-2018 ARM Limited. All rights reserved. */
  3. /* Copyright 2019 Linaro, Ltd., Rob Herring <[email protected]> */
  4. #ifndef __PANFROST_FEATURES_H__
  5. #define __PANFROST_FEATURES_H__
  6. #include <linux/bitops.h>
  7. #include "panfrost_device.h"
  8. enum panfrost_hw_feature {
  9. HW_FEATURE_JOBCHAIN_DISAMBIGUATION,
  10. HW_FEATURE_PWRON_DURING_PWROFF_TRANS,
  11. HW_FEATURE_XAFFINITY,
  12. HW_FEATURE_V4,
  13. HW_FEATURE_FLUSH_REDUCTION,
  14. HW_FEATURE_PROTECTED_MODE,
  15. HW_FEATURE_COHERENCY_REG,
  16. HW_FEATURE_PROTECTED_DEBUG_MODE,
  17. HW_FEATURE_AARCH64_MMU,
  18. HW_FEATURE_TLS_HASHING,
  19. HW_FEATURE_THREAD_GROUP_SPLIT,
  20. HW_FEATURE_IDVS_GROUP_SIZE,
  21. HW_FEATURE_CLEAN_ONLY_SAFE,
  22. HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG,
  23. };
  24. #define hw_features_t600 (\
  25. BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  26. BIT_ULL(HW_FEATURE_V4))
  27. #define hw_features_t620 hw_features_t600
  28. #define hw_features_t720 hw_features_t600
  29. #define hw_features_t760 (\
  30. BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  31. BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  32. BIT_ULL(HW_FEATURE_XAFFINITY) | \
  33. BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT))
  34. #define hw_features_t860 hw_features_t760
  35. #define hw_features_t880 hw_features_t760
  36. #define hw_features_t830 hw_features_t760
  37. #define hw_features_t820 hw_features_t760
  38. #define hw_features_g71 (\
  39. BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  40. BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  41. BIT_ULL(HW_FEATURE_XAFFINITY) | \
  42. BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  43. BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
  44. BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
  45. BIT_ULL(HW_FEATURE_COHERENCY_REG))
  46. #define hw_features_g72 (\
  47. BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  48. BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  49. BIT_ULL(HW_FEATURE_XAFFINITY) | \
  50. BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  51. BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
  52. BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
  53. BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
  54. BIT_ULL(HW_FEATURE_COHERENCY_REG))
  55. #define hw_features_g51 hw_features_g72
  56. #define hw_features_g52 (\
  57. BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  58. BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  59. BIT_ULL(HW_FEATURE_XAFFINITY) | \
  60. BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  61. BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
  62. BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
  63. BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
  64. BIT_ULL(HW_FEATURE_IDVS_GROUP_SIZE) | \
  65. BIT_ULL(HW_FEATURE_COHERENCY_REG))
  66. #define hw_features_g76 (\
  67. BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  68. BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  69. BIT_ULL(HW_FEATURE_XAFFINITY) | \
  70. BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  71. BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
  72. BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
  73. BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
  74. BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
  75. BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
  76. BIT_ULL(HW_FEATURE_TLS_HASHING) | \
  77. BIT_ULL(HW_FEATURE_IDVS_GROUP_SIZE) | \
  78. BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
  79. #define hw_features_g31 (\
  80. BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  81. BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  82. BIT_ULL(HW_FEATURE_XAFFINITY) | \
  83. BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \
  84. BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
  85. BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
  86. BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
  87. BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
  88. BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
  89. BIT_ULL(HW_FEATURE_TLS_HASHING) | \
  90. BIT_ULL(HW_FEATURE_3BIT_EXT_RW_L2_MMU_CONFIG))
  91. #define hw_features_g57 (\
  92. BIT_ULL(HW_FEATURE_JOBCHAIN_DISAMBIGUATION) | \
  93. BIT_ULL(HW_FEATURE_PWRON_DURING_PWROFF_TRANS) | \
  94. BIT_ULL(HW_FEATURE_XAFFINITY) | \
  95. BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \
  96. BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \
  97. BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \
  98. BIT_ULL(HW_FEATURE_COHERENCY_REG) | \
  99. BIT_ULL(HW_FEATURE_AARCH64_MMU) | \
  100. BIT_ULL(HW_FEATURE_IDVS_GROUP_SIZE) | \
  101. BIT_ULL(HW_FEATURE_CLEAN_ONLY_SAFE))
  102. static inline bool panfrost_has_hw_feature(struct panfrost_device *pfdev,
  103. enum panfrost_hw_feature feat)
  104. {
  105. return test_bit(feat, pfdev->features.hw_features);
  106. }
  107. #endif