xref: /openbmc/linux/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c (revision 12495f4eb298963565e0bdd37d8096ab1136d89f)
1f6ffbd4fSLucas Stach // SPDX-License-Identifier: GPL-2.0
2681c19c8SLucas Stach /*
3681c19c8SLucas Stach  * Copyright (C) 2018 Etnaviv Project
4681c19c8SLucas Stach  */
5681c19c8SLucas Stach 
6681c19c8SLucas Stach #include "etnaviv_gpu.h"
7681c19c8SLucas Stach 
8681c19c8SLucas Stach static const struct etnaviv_chip_identity etnaviv_chip_identities[] = {
9681c19c8SLucas Stach 	{
10f56f1579SChristian Gmeiner 		.model = 0x400,
11f56f1579SChristian Gmeiner 		.revision = 0x4652,
12f56f1579SChristian Gmeiner 		.product_id = 0x70001,
13f56f1579SChristian Gmeiner 		.customer_id = 0x100,
14f56f1579SChristian Gmeiner 		.eco_id = 0,
15f56f1579SChristian Gmeiner 		.stream_count = 4,
16f56f1579SChristian Gmeiner 		.register_max = 64,
17f56f1579SChristian Gmeiner 		.thread_count = 128,
18f56f1579SChristian Gmeiner 		.shader_core_count = 1,
19f56f1579SChristian Gmeiner 		.vertex_cache_size = 8,
20f56f1579SChristian Gmeiner 		.vertex_output_buffer_size = 1024,
21f56f1579SChristian Gmeiner 		.pixel_pipes = 1,
22f56f1579SChristian Gmeiner 		.instruction_count = 256,
23f56f1579SChristian Gmeiner 		.num_constants = 320,
24f56f1579SChristian Gmeiner 		.buffer_size = 0,
25f56f1579SChristian Gmeiner 		.varyings_count = 8,
26f56f1579SChristian Gmeiner 		.features = 0xa0e9e004,
27f56f1579SChristian Gmeiner 		.minor_features0 = 0xe1299fff,
28f56f1579SChristian Gmeiner 		.minor_features1 = 0xbe13b219,
29f56f1579SChristian Gmeiner 		.minor_features2 = 0xce110010,
30f56f1579SChristian Gmeiner 		.minor_features3 = 0x8000001,
31f56f1579SChristian Gmeiner 		.minor_features4 = 0x20102,
32f56f1579SChristian Gmeiner 		.minor_features5 = 0x120000,
33f56f1579SChristian Gmeiner 		.minor_features6 = 0x0,
34f56f1579SChristian Gmeiner 		.minor_features7 = 0x0,
35f56f1579SChristian Gmeiner 		.minor_features8 = 0x0,
36f56f1579SChristian Gmeiner 		.minor_features9 = 0x0,
37f56f1579SChristian Gmeiner 		.minor_features10 = 0x0,
38f56f1579SChristian Gmeiner 		.minor_features11 = 0x0,
39f56f1579SChristian Gmeiner 	},
40f56f1579SChristian Gmeiner 	{
41681c19c8SLucas Stach 		.model = 0x7000,
42*12495f4eSMichael Walle 		.revision = 0x6202,
43*12495f4eSMichael Walle 		.product_id = 0x70003,
44*12495f4eSMichael Walle 		.customer_id = 0,
45*12495f4eSMichael Walle 		.eco_id = 0,
46*12495f4eSMichael Walle 		.stream_count = 8,
47*12495f4eSMichael Walle 		.register_max = 64,
48*12495f4eSMichael Walle 		.thread_count = 512,
49*12495f4eSMichael Walle 		.shader_core_count = 2,
50*12495f4eSMichael Walle 		.vertex_cache_size = 16,
51*12495f4eSMichael Walle 		.vertex_output_buffer_size = 1024,
52*12495f4eSMichael Walle 		.pixel_pipes = 1,
53*12495f4eSMichael Walle 		.instruction_count = 512,
54*12495f4eSMichael Walle 		.num_constants = 320,
55*12495f4eSMichael Walle 		.buffer_size = 0,
56*12495f4eSMichael Walle 		.varyings_count = 16,
57*12495f4eSMichael Walle 		.features = 0xe0287cad,
58*12495f4eSMichael Walle 		.minor_features0 = 0xc1489eff,
59*12495f4eSMichael Walle 		.minor_features1 = 0xfefbfad9,
60*12495f4eSMichael Walle 		.minor_features2 = 0xeb9d4fbf,
61*12495f4eSMichael Walle 		.minor_features3 = 0xedfffced,
62*12495f4eSMichael Walle 		.minor_features4 = 0xdb0dafc7,
63*12495f4eSMichael Walle 		.minor_features5 = 0x3b5ac333,
64*12495f4eSMichael Walle 		.minor_features6 = 0xfccee201,
65*12495f4eSMichael Walle 		.minor_features7 = 0x03fffa6f,
66*12495f4eSMichael Walle 		.minor_features8 = 0x00e10ef0,
67*12495f4eSMichael Walle 		.minor_features9 = 0x0088003c,
68*12495f4eSMichael Walle 		.minor_features10 = 0x00004040,
69*12495f4eSMichael Walle 		.minor_features11 = 0x00000024,
70*12495f4eSMichael Walle 	},
71*12495f4eSMichael Walle 	{
72*12495f4eSMichael Walle 		.model = 0x7000,
73989c9dadSSascha Hauer 		.revision = 0x6204,
74989c9dadSSascha Hauer 		.product_id = ~0U,
75989c9dadSSascha Hauer 		.customer_id = ~0U,
76989c9dadSSascha Hauer 		.eco_id = 0,
77989c9dadSSascha Hauer 		.stream_count = 16,
78989c9dadSSascha Hauer 		.register_max = 64,
79989c9dadSSascha Hauer 		.thread_count = 512,
80989c9dadSSascha Hauer 		.shader_core_count = 2,
81989c9dadSSascha Hauer 		.vertex_cache_size = 16,
82989c9dadSSascha Hauer 		.vertex_output_buffer_size = 1024,
83989c9dadSSascha Hauer 		.pixel_pipes = 1,
84989c9dadSSascha Hauer 		.instruction_count = 512,
85989c9dadSSascha Hauer 		.num_constants = 320,
86989c9dadSSascha Hauer 		.buffer_size = 0,
87989c9dadSSascha Hauer 		.varyings_count = 16,
88989c9dadSSascha Hauer 		.features = 0xe0287c8d,
89989c9dadSSascha Hauer 		.minor_features0 = 0xc1589eff,
90989c9dadSSascha Hauer 		.minor_features1 = 0xfefbfad9,
91989c9dadSSascha Hauer 		.minor_features2 = 0xeb9d4fbf,
92989c9dadSSascha Hauer 		.minor_features3 = 0xedfffced,
93989c9dadSSascha Hauer 		.minor_features4 = 0xdb0dafc7,
94989c9dadSSascha Hauer 		.minor_features5 = 0x3b5ac333,
95989c9dadSSascha Hauer 		.minor_features6 = 0xfcce6000,
96989c9dadSSascha Hauer 		.minor_features7 = 0xfffbfa6f,
97989c9dadSSascha Hauer 		.minor_features8 = 0x00e10ef3,
98989c9dadSSascha Hauer 		.minor_features9 = 0x04c8003c,
99989c9dadSSascha Hauer 		.minor_features10 = 0x00004060,
100989c9dadSSascha Hauer 		.minor_features11 = 0x00000024,
101989c9dadSSascha Hauer 	},
102989c9dadSSascha Hauer 	{
103989c9dadSSascha Hauer 		.model = 0x7000,
104681c19c8SLucas Stach 		.revision = 0x6214,
105a51d1f37SChristian Gmeiner 		.product_id = ~0U,
106a51d1f37SChristian Gmeiner 		.customer_id = ~0U,
107a51d1f37SChristian Gmeiner 		.eco_id = ~0U,
108681c19c8SLucas Stach 		.stream_count = 16,
109681c19c8SLucas Stach 		.register_max = 64,
110681c19c8SLucas Stach 		.thread_count = 1024,
111681c19c8SLucas Stach 		.shader_core_count = 4,
112681c19c8SLucas Stach 		.vertex_cache_size = 16,
113681c19c8SLucas Stach 		.vertex_output_buffer_size = 1024,
114681c19c8SLucas Stach 		.pixel_pipes = 2,
115681c19c8SLucas Stach 		.instruction_count = 512,
116681c19c8SLucas Stach 		.num_constants = 320,
117681c19c8SLucas Stach 		.buffer_size = 0,
118681c19c8SLucas Stach 		.varyings_count = 16,
119681c19c8SLucas Stach 		.features = 0xe0287cad,
120681c19c8SLucas Stach 		.minor_features0 = 0xc1799eff,
121681c19c8SLucas Stach 		.minor_features1 = 0xfefbfad9,
122681c19c8SLucas Stach 		.minor_features2 = 0xeb9d4fbf,
123681c19c8SLucas Stach 		.minor_features3 = 0xedfffced,
124681c19c8SLucas Stach 		.minor_features4 = 0xdb0dafc7,
125681c19c8SLucas Stach 		.minor_features5 = 0xbb5ac333,
126681c19c8SLucas Stach 		.minor_features6 = 0xfc8ee200,
127681c19c8SLucas Stach 		.minor_features7 = 0x03fbfa6f,
128681c19c8SLucas Stach 		.minor_features8 = 0x00ef0ef0,
129681c19c8SLucas Stach 		.minor_features9 = 0x0edbf03c,
130681c19c8SLucas Stach 		.minor_features10 = 0x90044250,
131681c19c8SLucas Stach 		.minor_features11 = 0x00000024,
132681c19c8SLucas Stach 	},
133681c19c8SLucas Stach };
134681c19c8SLucas Stach 
135681c19c8SLucas Stach bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
136681c19c8SLucas Stach {
137681c19c8SLucas Stach 	struct etnaviv_chip_identity *ident = &gpu->identity;
138681c19c8SLucas Stach 	int i;
139681c19c8SLucas Stach 
140681c19c8SLucas Stach 	for (i = 0; i < ARRAY_SIZE(etnaviv_chip_identities); i++) {
141681c19c8SLucas Stach 		if (etnaviv_chip_identities[i].model == ident->model &&
1424078a118SChristian Gmeiner 		    etnaviv_chip_identities[i].revision == ident->revision &&
1434078a118SChristian Gmeiner 		    (etnaviv_chip_identities[i].product_id == ident->product_id ||
1444078a118SChristian Gmeiner 			 etnaviv_chip_identities[i].product_id == ~0U) &&
1454078a118SChristian Gmeiner 		    (etnaviv_chip_identities[i].customer_id == ident->customer_id ||
1464078a118SChristian Gmeiner 			 etnaviv_chip_identities[i].customer_id == ~0U) &&
1474078a118SChristian Gmeiner 		    (etnaviv_chip_identities[i].eco_id == ident->eco_id ||
1484078a118SChristian Gmeiner 			 etnaviv_chip_identities[i].eco_id == ~0U)) {
149681c19c8SLucas Stach 			memcpy(ident, &etnaviv_chip_identities[i],
150681c19c8SLucas Stach 			       sizeof(*ident));
151681c19c8SLucas Stach 			return true;
152681c19c8SLucas Stach 		}
153681c19c8SLucas Stach 	}
154681c19c8SLucas Stach 
155681c19c8SLucas Stach 	return false;
156681c19c8SLucas Stach }
157