etnaviv_hwdb.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (C) 2018 Etnaviv Project
  4. */
  5. #include "etnaviv_gpu.h"
  6. static const struct etnaviv_chip_identity etnaviv_chip_identities[] = {
  7. {
  8. .model = 0x400,
  9. .revision = 0x4652,
  10. .product_id = 0x70001,
  11. .customer_id = 0x100,
  12. .eco_id = 0,
  13. .stream_count = 4,
  14. .register_max = 64,
  15. .thread_count = 128,
  16. .shader_core_count = 1,
  17. .vertex_cache_size = 8,
  18. .vertex_output_buffer_size = 1024,
  19. .pixel_pipes = 1,
  20. .instruction_count = 256,
  21. .num_constants = 320,
  22. .buffer_size = 0,
  23. .varyings_count = 8,
  24. .features = 0xa0e9e004,
  25. .minor_features0 = 0xe1299fff,
  26. .minor_features1 = 0xbe13b219,
  27. .minor_features2 = 0xce110010,
  28. .minor_features3 = 0x8000001,
  29. .minor_features4 = 0x20102,
  30. .minor_features5 = 0x120000,
  31. .minor_features6 = 0x0,
  32. .minor_features7 = 0x0,
  33. .minor_features8 = 0x0,
  34. .minor_features9 = 0x0,
  35. .minor_features10 = 0x0,
  36. .minor_features11 = 0x0,
  37. },
  38. {
  39. .model = 0x7000,
  40. .revision = 0x6202,
  41. .product_id = 0x70003,
  42. .customer_id = 0,
  43. .eco_id = 0,
  44. .stream_count = 8,
  45. .register_max = 64,
  46. .thread_count = 512,
  47. .shader_core_count = 2,
  48. .vertex_cache_size = 16,
  49. .vertex_output_buffer_size = 1024,
  50. .pixel_pipes = 1,
  51. .instruction_count = 512,
  52. .num_constants = 320,
  53. .buffer_size = 0,
  54. .varyings_count = 16,
  55. .features = 0xe0287cad,
  56. .minor_features0 = 0xc1489eff,
  57. .minor_features1 = 0xfefbfad9,
  58. .minor_features2 = 0xeb9d4fbf,
  59. .minor_features3 = 0xedfffced,
  60. .minor_features4 = 0xdb0dafc7,
  61. .minor_features5 = 0x3b5ac333,
  62. .minor_features6 = 0xfccee201,
  63. .minor_features7 = 0x03fffa6f,
  64. .minor_features8 = 0x00e10ef0,
  65. .minor_features9 = 0x0088003c,
  66. .minor_features10 = 0x00004040,
  67. .minor_features11 = 0x00000024,
  68. },
  69. {
  70. .model = 0x7000,
  71. .revision = 0x6204,
  72. .product_id = ~0U,
  73. .customer_id = ~0U,
  74. .eco_id = 0,
  75. .stream_count = 16,
  76. .register_max = 64,
  77. .thread_count = 512,
  78. .shader_core_count = 2,
  79. .vertex_cache_size = 16,
  80. .vertex_output_buffer_size = 1024,
  81. .pixel_pipes = 1,
  82. .instruction_count = 512,
  83. .num_constants = 320,
  84. .buffer_size = 0,
  85. .varyings_count = 16,
  86. .features = 0xe0287c8d,
  87. .minor_features0 = 0xc1589eff,
  88. .minor_features1 = 0xfefbfad9,
  89. .minor_features2 = 0xeb9d4fbf,
  90. .minor_features3 = 0xedfffced,
  91. .minor_features4 = 0xdb0dafc7,
  92. .minor_features5 = 0x3b5ac333,
  93. .minor_features6 = 0xfcce6000,
  94. .minor_features7 = 0xfffbfa6f,
  95. .minor_features8 = 0x00e10ef3,
  96. .minor_features9 = 0x04c8003c,
  97. .minor_features10 = 0x00004060,
  98. .minor_features11 = 0x00000024,
  99. },
  100. {
  101. .model = 0x7000,
  102. .revision = 0x6214,
  103. .product_id = ~0U,
  104. .customer_id = ~0U,
  105. .eco_id = ~0U,
  106. .stream_count = 16,
  107. .register_max = 64,
  108. .thread_count = 1024,
  109. .shader_core_count = 4,
  110. .vertex_cache_size = 16,
  111. .vertex_output_buffer_size = 1024,
  112. .pixel_pipes = 2,
  113. .instruction_count = 512,
  114. .num_constants = 320,
  115. .buffer_size = 0,
  116. .varyings_count = 16,
  117. .features = 0xe0287cad,
  118. .minor_features0 = 0xc1799eff,
  119. .minor_features1 = 0xfefbfad9,
  120. .minor_features2 = 0xeb9d4fbf,
  121. .minor_features3 = 0xedfffced,
  122. .minor_features4 = 0xdb0dafc7,
  123. .minor_features5 = 0xbb5ac333,
  124. .minor_features6 = 0xfc8ee200,
  125. .minor_features7 = 0x03fbfa6f,
  126. .minor_features8 = 0x00ef0ef0,
  127. .minor_features9 = 0x0edbf03c,
  128. .minor_features10 = 0x90044250,
  129. .minor_features11 = 0x00000024,
  130. },
  131. };
  132. bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
  133. {
  134. struct etnaviv_chip_identity *ident = &gpu->identity;
  135. int i;
  136. for (i = 0; i < ARRAY_SIZE(etnaviv_chip_identities); i++) {
  137. if (etnaviv_chip_identities[i].model == ident->model &&
  138. etnaviv_chip_identities[i].revision == ident->revision &&
  139. (etnaviv_chip_identities[i].product_id == ident->product_id ||
  140. etnaviv_chip_identities[i].product_id == ~0U) &&
  141. (etnaviv_chip_identities[i].customer_id == ident->customer_id ||
  142. etnaviv_chip_identities[i].customer_id == ~0U) &&
  143. (etnaviv_chip_identities[i].eco_id == ident->eco_id ||
  144. etnaviv_chip_identities[i].eco_id == ~0U)) {
  145. memcpy(ident, &etnaviv_chip_identities[i],
  146. sizeof(*ident));
  147. return true;
  148. }
  149. }
  150. return false;
  151. }