0001
0002
0003
0004
0005
0006 #include "etnaviv_gpu.h"
0007
0008 static const struct etnaviv_chip_identity etnaviv_chip_identities[] = {
0009 {
0010 .model = 0x400,
0011 .revision = 0x4652,
0012 .product_id = 0x70001,
0013 .customer_id = 0x100,
0014 .eco_id = 0,
0015 .stream_count = 4,
0016 .register_max = 64,
0017 .thread_count = 128,
0018 .shader_core_count = 1,
0019 .vertex_cache_size = 8,
0020 .vertex_output_buffer_size = 1024,
0021 .pixel_pipes = 1,
0022 .instruction_count = 256,
0023 .num_constants = 320,
0024 .buffer_size = 0,
0025 .varyings_count = 8,
0026 .features = 0xa0e9e004,
0027 .minor_features0 = 0xe1299fff,
0028 .minor_features1 = 0xbe13b219,
0029 .minor_features2 = 0xce110010,
0030 .minor_features3 = 0x8000001,
0031 .minor_features4 = 0x20102,
0032 .minor_features5 = 0x120000,
0033 .minor_features6 = 0x0,
0034 .minor_features7 = 0x0,
0035 .minor_features8 = 0x0,
0036 .minor_features9 = 0x0,
0037 .minor_features10 = 0x0,
0038 .minor_features11 = 0x0,
0039 },
0040 {
0041 .model = 0x7000,
0042 .revision = 0x6202,
0043 .product_id = 0x70003,
0044 .customer_id = 0,
0045 .eco_id = 0,
0046 .stream_count = 8,
0047 .register_max = 64,
0048 .thread_count = 512,
0049 .shader_core_count = 2,
0050 .vertex_cache_size = 16,
0051 .vertex_output_buffer_size = 1024,
0052 .pixel_pipes = 1,
0053 .instruction_count = 512,
0054 .num_constants = 320,
0055 .buffer_size = 0,
0056 .varyings_count = 16,
0057 .features = 0xe0287cad,
0058 .minor_features0 = 0xc1489eff,
0059 .minor_features1 = 0xfefbfad9,
0060 .minor_features2 = 0xeb9d4fbf,
0061 .minor_features3 = 0xedfffced,
0062 .minor_features4 = 0xdb0dafc7,
0063 .minor_features5 = 0x3b5ac333,
0064 .minor_features6 = 0xfccee201,
0065 .minor_features7 = 0x03fffa6f,
0066 .minor_features8 = 0x00e10ef0,
0067 .minor_features9 = 0x0088003c,
0068 .minor_features10 = 0x00004040,
0069 .minor_features11 = 0x00000024,
0070 },
0071 {
0072 .model = 0x7000,
0073 .revision = 0x6204,
0074 .product_id = ~0U,
0075 .customer_id = ~0U,
0076 .eco_id = 0,
0077 .stream_count = 16,
0078 .register_max = 64,
0079 .thread_count = 512,
0080 .shader_core_count = 2,
0081 .vertex_cache_size = 16,
0082 .vertex_output_buffer_size = 1024,
0083 .pixel_pipes = 1,
0084 .instruction_count = 512,
0085 .num_constants = 320,
0086 .buffer_size = 0,
0087 .varyings_count = 16,
0088 .features = 0xe0287c8d,
0089 .minor_features0 = 0xc1589eff,
0090 .minor_features1 = 0xfefbfad9,
0091 .minor_features2 = 0xeb9d4fbf,
0092 .minor_features3 = 0xedfffced,
0093 .minor_features4 = 0xdb0dafc7,
0094 .minor_features5 = 0x3b5ac333,
0095 .minor_features6 = 0xfcce6000,
0096 .minor_features7 = 0xfffbfa6f,
0097 .minor_features8 = 0x00e10ef3,
0098 .minor_features9 = 0x04c8003c,
0099 .minor_features10 = 0x00004060,
0100 .minor_features11 = 0x00000024,
0101 },
0102 {
0103 .model = 0x7000,
0104 .revision = 0x6214,
0105 .product_id = ~0U,
0106 .customer_id = ~0U,
0107 .eco_id = ~0U,
0108 .stream_count = 16,
0109 .register_max = 64,
0110 .thread_count = 1024,
0111 .shader_core_count = 4,
0112 .vertex_cache_size = 16,
0113 .vertex_output_buffer_size = 1024,
0114 .pixel_pipes = 2,
0115 .instruction_count = 512,
0116 .num_constants = 320,
0117 .buffer_size = 0,
0118 .varyings_count = 16,
0119 .features = 0xe0287cad,
0120 .minor_features0 = 0xc1799eff,
0121 .minor_features1 = 0xfefbfad9,
0122 .minor_features2 = 0xeb9d4fbf,
0123 .minor_features3 = 0xedfffced,
0124 .minor_features4 = 0xdb0dafc7,
0125 .minor_features5 = 0xbb5ac333,
0126 .minor_features6 = 0xfc8ee200,
0127 .minor_features7 = 0x03fbfa6f,
0128 .minor_features8 = 0x00ef0ef0,
0129 .minor_features9 = 0x0edbf03c,
0130 .minor_features10 = 0x90044250,
0131 .minor_features11 = 0x00000024,
0132 },
0133 };
0134
0135 bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
0136 {
0137 struct etnaviv_chip_identity *ident = &gpu->identity;
0138 int i;
0139
0140 for (i = 0; i < ARRAY_SIZE(etnaviv_chip_identities); i++) {
0141 if (etnaviv_chip_identities[i].model == ident->model &&
0142 etnaviv_chip_identities[i].revision == ident->revision &&
0143 (etnaviv_chip_identities[i].product_id == ident->product_id ||
0144 etnaviv_chip_identities[i].product_id == ~0U) &&
0145 (etnaviv_chip_identities[i].customer_id == ident->customer_id ||
0146 etnaviv_chip_identities[i].customer_id == ~0U) &&
0147 (etnaviv_chip_identities[i].eco_id == ident->eco_id ||
0148 etnaviv_chip_identities[i].eco_id == ~0U)) {
0149 memcpy(ident, &etnaviv_chip_identities[i],
0150 sizeof(*ident));
0151 return true;
0152 }
0153 }
0154
0155 return false;
0156 }