aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/si.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/si.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/si.c442
1 files changed, 227 insertions, 215 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c
index 3ed8ad8725b9..c46b0159007d 100644
--- a/drivers/gpu/drm/amd/amdgpu/si.c
+++ b/drivers/gpu/drm/amd/amdgpu/si.c
@@ -43,13 +43,14 @@
43 43
44static const u32 tahiti_golden_registers[] = 44static const u32 tahiti_golden_registers[] =
45{ 45{
46 0x17bc, 0x00000030, 0x00000011,
46 0x2684, 0x00010000, 0x00018208, 47 0x2684, 0x00010000, 0x00018208,
47 0x260c, 0xffffffff, 0x00000000, 48 0x260c, 0xffffffff, 0x00000000,
48 0x260d, 0xf00fffff, 0x00000400, 49 0x260d, 0xf00fffff, 0x00000400,
49 0x260e, 0x0002021c, 0x00020200, 50 0x260e, 0x0002021c, 0x00020200,
50 0x031e, 0x00000080, 0x00000000, 51 0x031e, 0x00000080, 0x00000000,
51 0x340c, 0x000300c0, 0x00800040, 52 0x340c, 0x000000c0, 0x00800040,
52 0x360c, 0x000300c0, 0x00800040, 53 0x360c, 0x000000c0, 0x00800040,
53 0x16ec, 0x000000f0, 0x00000070, 54 0x16ec, 0x000000f0, 0x00000070,
54 0x16f0, 0x00200000, 0x50100000, 55 0x16f0, 0x00200000, 0x50100000,
55 0x1c0c, 0x31000311, 0x00000011, 56 0x1c0c, 0x31000311, 0x00000011,
@@ -60,7 +61,7 @@ static const u32 tahiti_golden_registers[] =
60 0x22c4, 0x0000ff0f, 0x00000000, 61 0x22c4, 0x0000ff0f, 0x00000000,
61 0xa293, 0x07ffffff, 0x4e000000, 62 0xa293, 0x07ffffff, 0x4e000000,
62 0xa0d4, 0x3f3f3fff, 0x2a00126a, 63 0xa0d4, 0x3f3f3fff, 0x2a00126a,
63 0x000c, 0x000000ff, 0x0040, 64 0x000c, 0xffffffff, 0x0040,
64 0x000d, 0x00000040, 0x00004040, 65 0x000d, 0x00000040, 0x00004040,
65 0x2440, 0x07ffffff, 0x03000000, 66 0x2440, 0x07ffffff, 0x03000000,
66 0x23a2, 0x01ff1f3f, 0x00000000, 67 0x23a2, 0x01ff1f3f, 0x00000000,
@@ -73,7 +74,11 @@ static const u32 tahiti_golden_registers[] =
73 0x2234, 0xffffffff, 0x000fff40, 74 0x2234, 0xffffffff, 0x000fff40,
74 0x2235, 0x0000001f, 0x00000010, 75 0x2235, 0x0000001f, 0x00000010,
75 0x0504, 0x20000000, 0x20fffed8, 76 0x0504, 0x20000000, 0x20fffed8,
76 0x0570, 0x000c0fc0, 0x000c0400 77 0x0570, 0x000c0fc0, 0x000c0400,
78 0x052c, 0x0fffffff, 0xffffffff,
79 0x052d, 0x0fffffff, 0x0fffffff,
80 0x052e, 0x0fffffff, 0x0fffffff,
81 0x052f, 0x0fffffff, 0x0fffffff
77}; 82};
78 83
79static const u32 tahiti_golden_registers2[] = 84static const u32 tahiti_golden_registers2[] =
@@ -83,16 +88,18 @@ static const u32 tahiti_golden_registers2[] =
83 88
84static const u32 tahiti_golden_rlc_registers[] = 89static const u32 tahiti_golden_rlc_registers[] =
85{ 90{
91 0x263e, 0xffffffff, 0x12011003,
86 0x3109, 0xffffffff, 0x00601005, 92 0x3109, 0xffffffff, 0x00601005,
87 0x311f, 0xffffffff, 0x10104040, 93 0x311f, 0xffffffff, 0x10104040,
88 0x3122, 0xffffffff, 0x0100000a, 94 0x3122, 0xffffffff, 0x0100000a,
89 0x30c5, 0xffffffff, 0x00000800, 95 0x30c5, 0xffffffff, 0x00000800,
90 0x30c3, 0xffffffff, 0x800000f4, 96 0x30c3, 0xffffffff, 0x800000f4,
91 0x3d2a, 0xffffffff, 0x00000000 97 0x3d2a, 0x00000008, 0x00000000
92}; 98};
93 99
94static const u32 pitcairn_golden_registers[] = 100static const u32 pitcairn_golden_registers[] =
95{ 101{
102 0x17bc, 0x00000030, 0x00000011,
96 0x2684, 0x00010000, 0x00018208, 103 0x2684, 0x00010000, 0x00018208,
97 0x260c, 0xffffffff, 0x00000000, 104 0x260c, 0xffffffff, 0x00000000,
98 0x260d, 0xf00fffff, 0x00000400, 105 0x260d, 0xf00fffff, 0x00000400,
@@ -110,7 +117,7 @@ static const u32 pitcairn_golden_registers[] =
110 0x22c4, 0x0000ff0f, 0x00000000, 117 0x22c4, 0x0000ff0f, 0x00000000,
111 0xa293, 0x07ffffff, 0x4e000000, 118 0xa293, 0x07ffffff, 0x4e000000,
112 0xa0d4, 0x3f3f3fff, 0x2a00126a, 119 0xa0d4, 0x3f3f3fff, 0x2a00126a,
113 0x000c, 0x000000ff, 0x0040, 120 0x000c, 0xffffffff, 0x0040,
114 0x000d, 0x00000040, 0x00004040, 121 0x000d, 0x00000040, 0x00004040,
115 0x2440, 0x07ffffff, 0x03000000, 122 0x2440, 0x07ffffff, 0x03000000,
116 0x2418, 0x0000007f, 0x00000020, 123 0x2418, 0x0000007f, 0x00000020,
@@ -119,11 +126,16 @@ static const u32 pitcairn_golden_registers[] =
119 0x2b04, 0xffffffff, 0x00000000, 126 0x2b04, 0xffffffff, 0x00000000,
120 0x2b03, 0xffffffff, 0x32761054, 127 0x2b03, 0xffffffff, 0x32761054,
121 0x2235, 0x0000001f, 0x00000010, 128 0x2235, 0x0000001f, 0x00000010,
122 0x0570, 0x000c0fc0, 0x000c0400 129 0x0570, 0x000c0fc0, 0x000c0400,
130 0x052c, 0x0fffffff, 0xffffffff,
131 0x052d, 0x0fffffff, 0x0fffffff,
132 0x052e, 0x0fffffff, 0x0fffffff,
133 0x052f, 0x0fffffff, 0x0fffffff
123}; 134};
124 135
125static const u32 pitcairn_golden_rlc_registers[] = 136static const u32 pitcairn_golden_rlc_registers[] =
126{ 137{
138 0x263e, 0xffffffff, 0x12011003,
127 0x3109, 0xffffffff, 0x00601004, 139 0x3109, 0xffffffff, 0x00601004,
128 0x311f, 0xffffffff, 0x10102020, 140 0x311f, 0xffffffff, 0x10102020,
129 0x3122, 0xffffffff, 0x01000020, 141 0x3122, 0xffffffff, 0x01000020,
@@ -133,133 +145,134 @@ static const u32 pitcairn_golden_rlc_registers[] =
133 145
134static const u32 verde_pg_init[] = 146static const u32 verde_pg_init[] =
135{ 147{
136 0xd4f, 0xffffffff, 0x40000, 148 0x0d4f, 0xffffffff, 0x40000,
137 0xd4e, 0xffffffff, 0x200010ff, 149 0x0d4e, 0xffffffff, 0x200010ff,
138 0xd4f, 0xffffffff, 0x0, 150 0x0d4f, 0xffffffff, 0x0,
139 0xd4f, 0xffffffff, 0x0, 151 0x0d4f, 0xffffffff, 0x0,
140 0xd4f, 0xffffffff, 0x0, 152 0x0d4f, 0xffffffff, 0x0,
141 0xd4f, 0xffffffff, 0x0, 153 0x0d4f, 0xffffffff, 0x0,
142 0xd4f, 0xffffffff, 0x0, 154 0x0d4f, 0xffffffff, 0x0,
143 0xd4f, 0xffffffff, 0x7007, 155 0x0d4f, 0xffffffff, 0x7007,
144 0xd4e, 0xffffffff, 0x300010ff, 156 0x0d4e, 0xffffffff, 0x300010ff,
145 0xd4f, 0xffffffff, 0x0, 157 0x0d4f, 0xffffffff, 0x0,
146 0xd4f, 0xffffffff, 0x0, 158 0x0d4f, 0xffffffff, 0x0,
147 0xd4f, 0xffffffff, 0x0, 159 0x0d4f, 0xffffffff, 0x0,
148 0xd4f, 0xffffffff, 0x0, 160 0x0d4f, 0xffffffff, 0x0,
149 0xd4f, 0xffffffff, 0x0, 161 0x0d4f, 0xffffffff, 0x0,
150 0xd4f, 0xffffffff, 0x400000, 162 0x0d4f, 0xffffffff, 0x400000,
151 0xd4e, 0xffffffff, 0x100010ff, 163 0x0d4e, 0xffffffff, 0x100010ff,
152 0xd4f, 0xffffffff, 0x0, 164 0x0d4f, 0xffffffff, 0x0,
153 0xd4f, 0xffffffff, 0x0, 165 0x0d4f, 0xffffffff, 0x0,
154 0xd4f, 0xffffffff, 0x0, 166 0x0d4f, 0xffffffff, 0x0,
155 0xd4f, 0xffffffff, 0x0, 167 0x0d4f, 0xffffffff, 0x0,
156 0xd4f, 0xffffffff, 0x0, 168 0x0d4f, 0xffffffff, 0x0,
157 0xd4f, 0xffffffff, 0x120200, 169 0x0d4f, 0xffffffff, 0x120200,
158 0xd4e, 0xffffffff, 0x500010ff, 170 0x0d4e, 0xffffffff, 0x500010ff,
159 0xd4f, 0xffffffff, 0x0, 171 0x0d4f, 0xffffffff, 0x0,
160 0xd4f, 0xffffffff, 0x0, 172 0x0d4f, 0xffffffff, 0x0,
161 0xd4f, 0xffffffff, 0x0, 173 0x0d4f, 0xffffffff, 0x0,
162 0xd4f, 0xffffffff, 0x0, 174 0x0d4f, 0xffffffff, 0x0,
163 0xd4f, 0xffffffff, 0x0, 175 0x0d4f, 0xffffffff, 0x0,
164 0xd4f, 0xffffffff, 0x1e1e16, 176 0x0d4f, 0xffffffff, 0x1e1e16,
165 0xd4e, 0xffffffff, 0x600010ff, 177 0x0d4e, 0xffffffff, 0x600010ff,
166 0xd4f, 0xffffffff, 0x0, 178 0x0d4f, 0xffffffff, 0x0,
167 0xd4f, 0xffffffff, 0x0, 179 0x0d4f, 0xffffffff, 0x0,
168 0xd4f, 0xffffffff, 0x0, 180 0x0d4f, 0xffffffff, 0x0,
169 0xd4f, 0xffffffff, 0x0, 181 0x0d4f, 0xffffffff, 0x0,
170 0xd4f, 0xffffffff, 0x0, 182 0x0d4f, 0xffffffff, 0x0,
171 0xd4f, 0xffffffff, 0x171f1e, 183 0x0d4f, 0xffffffff, 0x171f1e,
172 0xd4e, 0xffffffff, 0x700010ff, 184 0x0d4e, 0xffffffff, 0x700010ff,
173 0xd4f, 0xffffffff, 0x0, 185 0x0d4f, 0xffffffff, 0x0,
174 0xd4f, 0xffffffff, 0x0, 186 0x0d4f, 0xffffffff, 0x0,
175 0xd4f, 0xffffffff, 0x0, 187 0x0d4f, 0xffffffff, 0x0,
176 0xd4f, 0xffffffff, 0x0, 188 0x0d4f, 0xffffffff, 0x0,
177 0xd4f, 0xffffffff, 0x0, 189 0x0d4f, 0xffffffff, 0x0,
178 0xd4f, 0xffffffff, 0x0, 190 0x0d4f, 0xffffffff, 0x0,
179 0xd4e, 0xffffffff, 0x9ff, 191 0x0d4e, 0xffffffff, 0x9ff,
180 0xd40, 0xffffffff, 0x0, 192 0x0d40, 0xffffffff, 0x0,
181 0xd41, 0xffffffff, 0x10000800, 193 0x0d41, 0xffffffff, 0x10000800,
182 0xd41, 0xffffffff, 0xf, 194 0x0d41, 0xffffffff, 0xf,
183 0xd41, 0xffffffff, 0xf, 195 0x0d41, 0xffffffff, 0xf,
184 0xd40, 0xffffffff, 0x4, 196 0x0d40, 0xffffffff, 0x4,
185 0xd41, 0xffffffff, 0x1000051e, 197 0x0d41, 0xffffffff, 0x1000051e,
186 0xd41, 0xffffffff, 0xffff, 198 0x0d41, 0xffffffff, 0xffff,
187 0xd41, 0xffffffff, 0xffff, 199 0x0d41, 0xffffffff, 0xffff,
188 0xd40, 0xffffffff, 0x8, 200 0x0d40, 0xffffffff, 0x8,
189 0xd41, 0xffffffff, 0x80500, 201 0x0d41, 0xffffffff, 0x80500,
190 0xd40, 0xffffffff, 0x12, 202 0x0d40, 0xffffffff, 0x12,
191 0xd41, 0xffffffff, 0x9050c, 203 0x0d41, 0xffffffff, 0x9050c,
192 0xd40, 0xffffffff, 0x1d, 204 0x0d40, 0xffffffff, 0x1d,
193 0xd41, 0xffffffff, 0xb052c, 205 0x0d41, 0xffffffff, 0xb052c,
194 0xd40, 0xffffffff, 0x2a, 206 0x0d40, 0xffffffff, 0x2a,
195 0xd41, 0xffffffff, 0x1053e, 207 0x0d41, 0xffffffff, 0x1053e,
196 0xd40, 0xffffffff, 0x2d, 208 0x0d40, 0xffffffff, 0x2d,
197 0xd41, 0xffffffff, 0x10546, 209 0x0d41, 0xffffffff, 0x10546,
198 0xd40, 0xffffffff, 0x30, 210 0x0d40, 0xffffffff, 0x30,
199 0xd41, 0xffffffff, 0xa054e, 211 0x0d41, 0xffffffff, 0xa054e,
200 0xd40, 0xffffffff, 0x3c, 212 0x0d40, 0xffffffff, 0x3c,
201 0xd41, 0xffffffff, 0x1055f, 213 0x0d41, 0xffffffff, 0x1055f,
202 0xd40, 0xffffffff, 0x3f, 214 0x0d40, 0xffffffff, 0x3f,
203 0xd41, 0xffffffff, 0x10567, 215 0x0d41, 0xffffffff, 0x10567,
204 0xd40, 0xffffffff, 0x42, 216 0x0d40, 0xffffffff, 0x42,
205 0xd41, 0xffffffff, 0x1056f, 217 0x0d41, 0xffffffff, 0x1056f,
206 0xd40, 0xffffffff, 0x45, 218 0x0d40, 0xffffffff, 0x45,
207 0xd41, 0xffffffff, 0x10572, 219 0x0d41, 0xffffffff, 0x10572,
208 0xd40, 0xffffffff, 0x48, 220 0x0d40, 0xffffffff, 0x48,
209 0xd41, 0xffffffff, 0x20575, 221 0x0d41, 0xffffffff, 0x20575,
210 0xd40, 0xffffffff, 0x4c, 222 0x0d40, 0xffffffff, 0x4c,
211 0xd41, 0xffffffff, 0x190801, 223 0x0d41, 0xffffffff, 0x190801,
212 0xd40, 0xffffffff, 0x67, 224 0x0d40, 0xffffffff, 0x67,
213 0xd41, 0xffffffff, 0x1082a, 225 0x0d41, 0xffffffff, 0x1082a,
214 0xd40, 0xffffffff, 0x6a, 226 0x0d40, 0xffffffff, 0x6a,
215 0xd41, 0xffffffff, 0x1b082d, 227 0x0d41, 0xffffffff, 0x1b082d,
216 0xd40, 0xffffffff, 0x87, 228 0x0d40, 0xffffffff, 0x87,
217 0xd41, 0xffffffff, 0x310851, 229 0x0d41, 0xffffffff, 0x310851,
218 0xd40, 0xffffffff, 0xba, 230 0x0d40, 0xffffffff, 0xba,
219 0xd41, 0xffffffff, 0x891, 231 0x0d41, 0xffffffff, 0x891,
220 0xd40, 0xffffffff, 0xbc, 232 0x0d40, 0xffffffff, 0xbc,
221 0xd41, 0xffffffff, 0x893, 233 0x0d41, 0xffffffff, 0x893,
222 0xd40, 0xffffffff, 0xbe, 234 0x0d40, 0xffffffff, 0xbe,
223 0xd41, 0xffffffff, 0x20895, 235 0x0d41, 0xffffffff, 0x20895,
224 0xd40, 0xffffffff, 0xc2, 236 0x0d40, 0xffffffff, 0xc2,
225 0xd41, 0xffffffff, 0x20899, 237 0x0d41, 0xffffffff, 0x20899,
226 0xd40, 0xffffffff, 0xc6, 238 0x0d40, 0xffffffff, 0xc6,
227 0xd41, 0xffffffff, 0x2089d, 239 0x0d41, 0xffffffff, 0x2089d,
228 0xd40, 0xffffffff, 0xca, 240 0x0d40, 0xffffffff, 0xca,
229 0xd41, 0xffffffff, 0x8a1, 241 0x0d41, 0xffffffff, 0x8a1,
230 0xd40, 0xffffffff, 0xcc, 242 0x0d40, 0xffffffff, 0xcc,
231 0xd41, 0xffffffff, 0x8a3, 243 0x0d41, 0xffffffff, 0x8a3,
232 0xd40, 0xffffffff, 0xce, 244 0x0d40, 0xffffffff, 0xce,
233 0xd41, 0xffffffff, 0x308a5, 245 0x0d41, 0xffffffff, 0x308a5,
234 0xd40, 0xffffffff, 0xd3, 246 0x0d40, 0xffffffff, 0xd3,
235 0xd41, 0xffffffff, 0x6d08cd, 247 0x0d41, 0xffffffff, 0x6d08cd,
236 0xd40, 0xffffffff, 0x142, 248 0x0d40, 0xffffffff, 0x142,
237 0xd41, 0xffffffff, 0x2000095a, 249 0x0d41, 0xffffffff, 0x2000095a,
238 0xd41, 0xffffffff, 0x1, 250 0x0d41, 0xffffffff, 0x1,
239 0xd40, 0xffffffff, 0x144, 251 0x0d40, 0xffffffff, 0x144,
240 0xd41, 0xffffffff, 0x301f095b, 252 0x0d41, 0xffffffff, 0x301f095b,
241 0xd40, 0xffffffff, 0x165, 253 0x0d40, 0xffffffff, 0x165,
242 0xd41, 0xffffffff, 0xc094d, 254 0x0d41, 0xffffffff, 0xc094d,
243 0xd40, 0xffffffff, 0x173, 255 0x0d40, 0xffffffff, 0x173,
244 0xd41, 0xffffffff, 0xf096d, 256 0x0d41, 0xffffffff, 0xf096d,
245 0xd40, 0xffffffff, 0x184, 257 0x0d40, 0xffffffff, 0x184,
246 0xd41, 0xffffffff, 0x15097f, 258 0x0d41, 0xffffffff, 0x15097f,
247 0xd40, 0xffffffff, 0x19b, 259 0x0d40, 0xffffffff, 0x19b,
248 0xd41, 0xffffffff, 0xc0998, 260 0x0d41, 0xffffffff, 0xc0998,
249 0xd40, 0xffffffff, 0x1a9, 261 0x0d40, 0xffffffff, 0x1a9,
250 0xd41, 0xffffffff, 0x409a7, 262 0x0d41, 0xffffffff, 0x409a7,
251 0xd40, 0xffffffff, 0x1af, 263 0x0d40, 0xffffffff, 0x1af,
252 0xd41, 0xffffffff, 0xcdc, 264 0x0d41, 0xffffffff, 0xcdc,
253 0xd40, 0xffffffff, 0x1b1, 265 0x0d40, 0xffffffff, 0x1b1,
254 0xd41, 0xffffffff, 0x800, 266 0x0d41, 0xffffffff, 0x800,
255 0xd42, 0xffffffff, 0x6c9b2000, 267 0x0d42, 0xffffffff, 0x6c9b2000,
256 0xd44, 0xfc00, 0x2000, 268 0x0d44, 0xfc00, 0x2000,
257 0xd51, 0xffffffff, 0xfc0, 269 0x0d51, 0xffffffff, 0xfc0,
258 0xa35, 0x00000100, 0x100 270 0x0a35, 0x00000100, 0x100
259}; 271};
260 272
261static const u32 verde_golden_rlc_registers[] = 273static const u32 verde_golden_rlc_registers[] =
262{ 274{
275 0x263e, 0xffffffff, 0x02010002,
263 0x3109, 0xffffffff, 0x033f1005, 276 0x3109, 0xffffffff, 0x033f1005,
264 0x311f, 0xffffffff, 0x10808020, 277 0x311f, 0xffffffff, 0x10808020,
265 0x3122, 0xffffffff, 0x00800008, 278 0x3122, 0xffffffff, 0x00800008,
@@ -269,65 +282,45 @@ static const u32 verde_golden_rlc_registers[] =
269 282
270static const u32 verde_golden_registers[] = 283static const u32 verde_golden_registers[] =
271{ 284{
285 0x17bc, 0x00000030, 0x00000011,
272 0x2684, 0x00010000, 0x00018208, 286 0x2684, 0x00010000, 0x00018208,
273 0x260c, 0xffffffff, 0x00000000, 287 0x260c, 0xffffffff, 0x00000000,
274 0x260d, 0xf00fffff, 0x00000400, 288 0x260d, 0xf00fffff, 0x00000400,
275 0x260e, 0x0002021c, 0x00020200, 289 0x260e, 0x0002021c, 0x00020200,
276 0x031e, 0x00000080, 0x00000000, 290 0x031e, 0x00000080, 0x00000000,
277 0x340c, 0x000300c0, 0x00800040, 291 0x340c, 0x000300c0, 0x00800040,
278 0x340c, 0x000300c0, 0x00800040,
279 0x360c, 0x000300c0, 0x00800040,
280 0x360c, 0x000300c0, 0x00800040, 292 0x360c, 0x000300c0, 0x00800040,
281 0x16ec, 0x000000f0, 0x00000070, 293 0x16ec, 0x000000f0, 0x00000070,
282 0x16f0, 0x00200000, 0x50100000, 294 0x16f0, 0x00200000, 0x50100000,
283
284 0x1c0c, 0x31000311, 0x00000011, 295 0x1c0c, 0x31000311, 0x00000011,
285 0x0ab9, 0x00073ffe, 0x000022a2, 296 0x0ab9, 0x00073ffe, 0x000022a2,
286 0x0ab9, 0x00073ffe, 0x000022a2,
287 0x0ab9, 0x00073ffe, 0x000022a2,
288 0x0903, 0x000007ff, 0x00000000,
289 0x0903, 0x000007ff, 0x00000000,
290 0x0903, 0x000007ff, 0x00000000, 297 0x0903, 0x000007ff, 0x00000000,
291 0x2285, 0xf000001f, 0x00000007, 298 0x2285, 0xf000001f, 0x00000007,
292 0x2285, 0xf000001f, 0x00000007, 299 0x22c9, 0xffffffff, 0x00ffffff,
293 0x2285, 0xf000001f, 0x00000007,
294 0x2285, 0xffffffff, 0x00ffffff,
295 0x22c4, 0x0000ff0f, 0x00000000, 300 0x22c4, 0x0000ff0f, 0x00000000,
296
297 0xa293, 0x07ffffff, 0x4e000000, 301 0xa293, 0x07ffffff, 0x4e000000,
298 0xa0d4, 0x3f3f3fff, 0x0000124a, 302 0xa0d4, 0x3f3f3fff, 0x0000124a,
299 0xa0d4, 0x3f3f3fff, 0x0000124a, 303 0x000c, 0xffffffff, 0x0040,
300 0xa0d4, 0x3f3f3fff, 0x0000124a,
301 0x000c, 0x000000ff, 0x0040,
302 0x000d, 0x00000040, 0x00004040, 304 0x000d, 0x00000040, 0x00004040,
303 0x2440, 0x07ffffff, 0x03000000, 305 0x2440, 0x07ffffff, 0x03000000,
304 0x2440, 0x07ffffff, 0x03000000,
305 0x23a2, 0x01ff1f3f, 0x00000000,
306 0x23a3, 0x01ff1f3f, 0x00000000,
307 0x23a2, 0x01ff1f3f, 0x00000000, 306 0x23a2, 0x01ff1f3f, 0x00000000,
308 0x23a1, 0x01ff1f3f, 0x00000000, 307 0x23a1, 0x01ff1f3f, 0x00000000,
309 0x23a1, 0x01ff1f3f, 0x00000000,
310
311 0x23a1, 0x01ff1f3f, 0x00000000,
312 0x2418, 0x0000007f, 0x00000020, 308 0x2418, 0x0000007f, 0x00000020,
313 0x2542, 0x00010000, 0x00010000, 309 0x2542, 0x00010000, 0x00010000,
314 0x2b01, 0x000003ff, 0x00000003,
315 0x2b05, 0x000003ff, 0x00000003,
316 0x2b05, 0x000003ff, 0x00000003, 310 0x2b05, 0x000003ff, 0x00000003,
317 0x2b04, 0xffffffff, 0x00000000, 311 0x2b04, 0xffffffff, 0x00000000,
318 0x2b04, 0xffffffff, 0x00000000,
319 0x2b04, 0xffffffff, 0x00000000,
320 0x2b03, 0xffffffff, 0x00001032,
321 0x2b03, 0xffffffff, 0x00001032,
322 0x2b03, 0xffffffff, 0x00001032, 312 0x2b03, 0xffffffff, 0x00001032,
323 0x2235, 0x0000001f, 0x00000010, 313 0x2235, 0x0000001f, 0x00000010,
324 0x2235, 0x0000001f, 0x00000010, 314 0x0570, 0x000c0fc0, 0x000c0400,
325 0x2235, 0x0000001f, 0x00000010, 315 0x052c, 0x0fffffff, 0xffffffff,
326 0x0570, 0x000c0fc0, 0x000c0400 316 0x052d, 0x0fffffff, 0x0fffffff,
317 0x052e, 0x0fffffff, 0x0fffffff,
318 0x052f, 0x0fffffff, 0x0fffffff
327}; 319};
328 320
329static const u32 oland_golden_registers[] = 321static const u32 oland_golden_registers[] =
330{ 322{
323 0x17bc, 0x00000030, 0x00000011,
331 0x2684, 0x00010000, 0x00018208, 324 0x2684, 0x00010000, 0x00018208,
332 0x260c, 0xffffffff, 0x00000000, 325 0x260c, 0xffffffff, 0x00000000,
333 0x260d, 0xf00fffff, 0x00000400, 326 0x260d, 0xf00fffff, 0x00000400,
@@ -336,7 +329,7 @@ static const u32 oland_golden_registers[] =
336 0x340c, 0x000300c0, 0x00800040, 329 0x340c, 0x000300c0, 0x00800040,
337 0x360c, 0x000300c0, 0x00800040, 330 0x360c, 0x000300c0, 0x00800040,
338 0x16ec, 0x000000f0, 0x00000070, 331 0x16ec, 0x000000f0, 0x00000070,
339 0x16f9, 0x00200000, 0x50100000, 332 0x16f0, 0x00200000, 0x50100000,
340 0x1c0c, 0x31000311, 0x00000011, 333 0x1c0c, 0x31000311, 0x00000011,
341 0x0ab9, 0x00073ffe, 0x000022a2, 334 0x0ab9, 0x00073ffe, 0x000022a2,
342 0x0903, 0x000007ff, 0x00000000, 335 0x0903, 0x000007ff, 0x00000000,
@@ -345,7 +338,7 @@ static const u32 oland_golden_registers[] =
345 0x22c4, 0x0000ff0f, 0x00000000, 338 0x22c4, 0x0000ff0f, 0x00000000,
346 0xa293, 0x07ffffff, 0x4e000000, 339 0xa293, 0x07ffffff, 0x4e000000,
347 0xa0d4, 0x3f3f3fff, 0x00000082, 340 0xa0d4, 0x3f3f3fff, 0x00000082,
348 0x000c, 0x000000ff, 0x0040, 341 0x000c, 0xffffffff, 0x0040,
349 0x000d, 0x00000040, 0x00004040, 342 0x000d, 0x00000040, 0x00004040,
350 0x2440, 0x07ffffff, 0x03000000, 343 0x2440, 0x07ffffff, 0x03000000,
351 0x2418, 0x0000007f, 0x00000020, 344 0x2418, 0x0000007f, 0x00000020,
@@ -354,11 +347,16 @@ static const u32 oland_golden_registers[] =
354 0x2b04, 0xffffffff, 0x00000000, 347 0x2b04, 0xffffffff, 0x00000000,
355 0x2b03, 0xffffffff, 0x00003210, 348 0x2b03, 0xffffffff, 0x00003210,
356 0x2235, 0x0000001f, 0x00000010, 349 0x2235, 0x0000001f, 0x00000010,
357 0x0570, 0x000c0fc0, 0x000c0400 350 0x0570, 0x000c0fc0, 0x000c0400,
351 0x052c, 0x0fffffff, 0xffffffff,
352 0x052d, 0x0fffffff, 0x0fffffff,
353 0x052e, 0x0fffffff, 0x0fffffff,
354 0x052f, 0x0fffffff, 0x0fffffff
358}; 355};
359 356
360static const u32 oland_golden_rlc_registers[] = 357static const u32 oland_golden_rlc_registers[] =
361{ 358{
359 0x263e, 0xffffffff, 0x02010002,
362 0x3109, 0xffffffff, 0x00601005, 360 0x3109, 0xffffffff, 0x00601005,
363 0x311f, 0xffffffff, 0x10104040, 361 0x311f, 0xffffffff, 0x10104040,
364 0x3122, 0xffffffff, 0x0100000a, 362 0x3122, 0xffffffff, 0x0100000a,
@@ -368,22 +366,27 @@ static const u32 oland_golden_rlc_registers[] =
368 366
369static const u32 hainan_golden_registers[] = 367static const u32 hainan_golden_registers[] =
370{ 368{
369 0x17bc, 0x00000030, 0x00000011,
371 0x2684, 0x00010000, 0x00018208, 370 0x2684, 0x00010000, 0x00018208,
372 0x260c, 0xffffffff, 0x00000000, 371 0x260c, 0xffffffff, 0x00000000,
373 0x260d, 0xf00fffff, 0x00000400, 372 0x260d, 0xf00fffff, 0x00000400,
374 0x260e, 0x0002021c, 0x00020200, 373 0x260e, 0x0002021c, 0x00020200,
375 0x4595, 0xff000fff, 0x00000100, 374 0x031e, 0x00000080, 0x00000000,
375 0x3430, 0xff000fff, 0x00000100,
376 0x340c, 0x000300c0, 0x00800040, 376 0x340c, 0x000300c0, 0x00800040,
377 0x3630, 0xff000fff, 0x00000100, 377 0x3630, 0xff000fff, 0x00000100,
378 0x360c, 0x000300c0, 0x00800040, 378 0x360c, 0x000300c0, 0x00800040,
379 0x16ec, 0x000000f0, 0x00000070,
380 0x16f0, 0x00200000, 0x50100000,
381 0x1c0c, 0x31000311, 0x00000011,
379 0x0ab9, 0x00073ffe, 0x000022a2, 382 0x0ab9, 0x00073ffe, 0x000022a2,
380 0x0903, 0x000007ff, 0x00000000, 383 0x0903, 0x000007ff, 0x00000000,
381 0x2285, 0xf000001f, 0x00000007, 384 0x2285, 0xf000001f, 0x00000007,
382 0x22c9, 0xffffffff, 0x00ffffff, 385 0x22c9, 0xffffffff, 0x00ffffff,
383 0x22c4, 0x0000ff0f, 0x00000000, 386 0x22c4, 0x0000ff0f, 0x00000000,
384 0xa393, 0x07ffffff, 0x4e000000, 387 0xa293, 0x07ffffff, 0x4e000000,
385 0xa0d4, 0x3f3f3fff, 0x00000000, 388 0xa0d4, 0x3f3f3fff, 0x00000000,
386 0x000c, 0x000000ff, 0x0040, 389 0x000c, 0xffffffff, 0x0040,
387 0x000d, 0x00000040, 0x00004040, 390 0x000d, 0x00000040, 0x00004040,
388 0x2440, 0x03e00000, 0x03600000, 391 0x2440, 0x03e00000, 0x03600000,
389 0x2418, 0x0000007f, 0x00000020, 392 0x2418, 0x0000007f, 0x00000020,
@@ -392,12 +395,16 @@ static const u32 hainan_golden_registers[] =
392 0x2b04, 0xffffffff, 0x00000000, 395 0x2b04, 0xffffffff, 0x00000000,
393 0x2b03, 0xffffffff, 0x00003210, 396 0x2b03, 0xffffffff, 0x00003210,
394 0x2235, 0x0000001f, 0x00000010, 397 0x2235, 0x0000001f, 0x00000010,
395 0x0570, 0x000c0fc0, 0x000c0400 398 0x0570, 0x000c0fc0, 0x000c0400,
399 0x052c, 0x0fffffff, 0xffffffff,
400 0x052d, 0x0fffffff, 0x0fffffff,
401 0x052e, 0x0fffffff, 0x0fffffff,
402 0x052f, 0x0fffffff, 0x0fffffff
396}; 403};
397 404
398static const u32 hainan_golden_registers2[] = 405static const u32 hainan_golden_registers2[] =
399{ 406{
400 0x263e, 0xffffffff, 0x02010001 407 0x263e, 0xffffffff, 0x2011003
401}; 408};
402 409
403static const u32 tahiti_mgcg_cgcg_init[] = 410static const u32 tahiti_mgcg_cgcg_init[] =
@@ -513,18 +520,18 @@ static const u32 tahiti_mgcg_cgcg_init[] =
513 0x21c2, 0xffffffff, 0x00900100, 520 0x21c2, 0xffffffff, 0x00900100,
514 0x311e, 0xffffffff, 0x00000080, 521 0x311e, 0xffffffff, 0x00000080,
515 0x3101, 0xffffffff, 0x0020003f, 522 0x3101, 0xffffffff, 0x0020003f,
516 0xc, 0xffffffff, 0x0000001c, 523 0x000c, 0xffffffff, 0x0000001c,
517 0xd, 0x000f0000, 0x000f0000, 524 0x000d, 0x000f0000, 0x000f0000,
518 0x583, 0xffffffff, 0x00000100, 525 0x0583, 0xffffffff, 0x00000100,
519 0x409, 0xffffffff, 0x00000100, 526 0x0409, 0xffffffff, 0x00000100,
520 0x40b, 0x00000101, 0x00000000, 527 0x040b, 0x00000101, 0x00000000,
521 0x82a, 0xffffffff, 0x00000104, 528 0x082a, 0xffffffff, 0x00000104,
522 0x993, 0x000c0000, 0x000c0000, 529 0x0993, 0x000c0000, 0x000c0000,
523 0x992, 0x000c0000, 0x000c0000, 530 0x0992, 0x000c0000, 0x000c0000,
524 0x1579, 0xff000fff, 0x00000100, 531 0x1579, 0xff000fff, 0x00000100,
525 0x157a, 0x00000001, 0x00000001, 532 0x157a, 0x00000001, 0x00000001,
526 0xbd4, 0x00000001, 0x00000001, 533 0x0bd4, 0x00000001, 0x00000001,
527 0xc33, 0xc0000fff, 0x00000104, 534 0x0c33, 0xc0000fff, 0x00000104,
528 0x3079, 0x00000001, 0x00000001, 535 0x3079, 0x00000001, 0x00000001,
529 0x3430, 0xfffffff0, 0x00000100, 536 0x3430, 0xfffffff0, 0x00000100,
530 0x3630, 0xfffffff0, 0x00000100 537 0x3630, 0xfffffff0, 0x00000100
@@ -612,16 +619,16 @@ static const u32 pitcairn_mgcg_cgcg_init[] =
612 0x21c2, 0xffffffff, 0x00900100, 619 0x21c2, 0xffffffff, 0x00900100,
613 0x311e, 0xffffffff, 0x00000080, 620 0x311e, 0xffffffff, 0x00000080,
614 0x3101, 0xffffffff, 0x0020003f, 621 0x3101, 0xffffffff, 0x0020003f,
615 0xc, 0xffffffff, 0x0000001c, 622 0x000c, 0xffffffff, 0x0000001c,
616 0xd, 0x000f0000, 0x000f0000, 623 0x000d, 0x000f0000, 0x000f0000,
617 0x583, 0xffffffff, 0x00000100, 624 0x0583, 0xffffffff, 0x00000100,
618 0x409, 0xffffffff, 0x00000100, 625 0x0409, 0xffffffff, 0x00000100,
619 0x40b, 0x00000101, 0x00000000, 626 0x040b, 0x00000101, 0x00000000,
620 0x82a, 0xffffffff, 0x00000104, 627 0x082a, 0xffffffff, 0x00000104,
621 0x1579, 0xff000fff, 0x00000100, 628 0x1579, 0xff000fff, 0x00000100,
622 0x157a, 0x00000001, 0x00000001, 629 0x157a, 0x00000001, 0x00000001,
623 0xbd4, 0x00000001, 0x00000001, 630 0x0bd4, 0x00000001, 0x00000001,
624 0xc33, 0xc0000fff, 0x00000104, 631 0x0c33, 0xc0000fff, 0x00000104,
625 0x3079, 0x00000001, 0x00000001, 632 0x3079, 0x00000001, 0x00000001,
626 0x3430, 0xfffffff0, 0x00000100, 633 0x3430, 0xfffffff0, 0x00000100,
627 0x3630, 0xfffffff0, 0x00000100 634 0x3630, 0xfffffff0, 0x00000100
@@ -709,18 +716,18 @@ static const u32 verde_mgcg_cgcg_init[] =
709 0x21c2, 0xffffffff, 0x00900100, 716 0x21c2, 0xffffffff, 0x00900100,
710 0x311e, 0xffffffff, 0x00000080, 717 0x311e, 0xffffffff, 0x00000080,
711 0x3101, 0xffffffff, 0x0020003f, 718 0x3101, 0xffffffff, 0x0020003f,
712 0xc, 0xffffffff, 0x0000001c, 719 0x000c, 0xffffffff, 0x0000001c,
713 0xd, 0x000f0000, 0x000f0000, 720 0x000d, 0x000f0000, 0x000f0000,
714 0x583, 0xffffffff, 0x00000100, 721 0x0583, 0xffffffff, 0x00000100,
715 0x409, 0xffffffff, 0x00000100, 722 0x0409, 0xffffffff, 0x00000100,
716 0x40b, 0x00000101, 0x00000000, 723 0x040b, 0x00000101, 0x00000000,
717 0x82a, 0xffffffff, 0x00000104, 724 0x082a, 0xffffffff, 0x00000104,
718 0x993, 0x000c0000, 0x000c0000, 725 0x0993, 0x000c0000, 0x000c0000,
719 0x992, 0x000c0000, 0x000c0000, 726 0x0992, 0x000c0000, 0x000c0000,
720 0x1579, 0xff000fff, 0x00000100, 727 0x1579, 0xff000fff, 0x00000100,
721 0x157a, 0x00000001, 0x00000001, 728 0x157a, 0x00000001, 0x00000001,
722 0xbd4, 0x00000001, 0x00000001, 729 0x0bd4, 0x00000001, 0x00000001,
723 0xc33, 0xc0000fff, 0x00000104, 730 0x0c33, 0xc0000fff, 0x00000104,
724 0x3079, 0x00000001, 0x00000001, 731 0x3079, 0x00000001, 0x00000001,
725 0x3430, 0xfffffff0, 0x00000100, 732 0x3430, 0xfffffff0, 0x00000100,
726 0x3630, 0xfffffff0, 0x00000100 733 0x3630, 0xfffffff0, 0x00000100
@@ -788,18 +795,18 @@ static const u32 oland_mgcg_cgcg_init[] =
788 0x21c2, 0xffffffff, 0x00900100, 795 0x21c2, 0xffffffff, 0x00900100,
789 0x311e, 0xffffffff, 0x00000080, 796 0x311e, 0xffffffff, 0x00000080,
790 0x3101, 0xffffffff, 0x0020003f, 797 0x3101, 0xffffffff, 0x0020003f,
791 0xc, 0xffffffff, 0x0000001c, 798 0x000c, 0xffffffff, 0x0000001c,
792 0xd, 0x000f0000, 0x000f0000, 799 0x000d, 0x000f0000, 0x000f0000,
793 0x583, 0xffffffff, 0x00000100, 800 0x0583, 0xffffffff, 0x00000100,
794 0x409, 0xffffffff, 0x00000100, 801 0x0409, 0xffffffff, 0x00000100,
795 0x40b, 0x00000101, 0x00000000, 802 0x040b, 0x00000101, 0x00000000,
796 0x82a, 0xffffffff, 0x00000104, 803 0x082a, 0xffffffff, 0x00000104,
797 0x993, 0x000c0000, 0x000c0000, 804 0x0993, 0x000c0000, 0x000c0000,
798 0x992, 0x000c0000, 0x000c0000, 805 0x0992, 0x000c0000, 0x000c0000,
799 0x1579, 0xff000fff, 0x00000100, 806 0x1579, 0xff000fff, 0x00000100,
800 0x157a, 0x00000001, 0x00000001, 807 0x157a, 0x00000001, 0x00000001,
801 0xbd4, 0x00000001, 0x00000001, 808 0x0bd4, 0x00000001, 0x00000001,
802 0xc33, 0xc0000fff, 0x00000104, 809 0x0c33, 0xc0000fff, 0x00000104,
803 0x3079, 0x00000001, 0x00000001, 810 0x3079, 0x00000001, 0x00000001,
804 0x3430, 0xfffffff0, 0x00000100, 811 0x3430, 0xfffffff0, 0x00000100,
805 0x3630, 0xfffffff0, 0x00000100 812 0x3630, 0xfffffff0, 0x00000100
@@ -867,15 +874,15 @@ static const u32 hainan_mgcg_cgcg_init[] =
867 0x21c2, 0xffffffff, 0x00900100, 874 0x21c2, 0xffffffff, 0x00900100,
868 0x311e, 0xffffffff, 0x00000080, 875 0x311e, 0xffffffff, 0x00000080,
869 0x3101, 0xffffffff, 0x0020003f, 876 0x3101, 0xffffffff, 0x0020003f,
870 0xc, 0xffffffff, 0x0000001c, 877 0x000c, 0xffffffff, 0x0000001c,
871 0xd, 0x000f0000, 0x000f0000, 878 0x000d, 0x000f0000, 0x000f0000,
872 0x583, 0xffffffff, 0x00000100, 879 0x0583, 0xffffffff, 0x00000100,
873 0x409, 0xffffffff, 0x00000100, 880 0x0409, 0xffffffff, 0x00000100,
874 0x82a, 0xffffffff, 0x00000104, 881 0x082a, 0xffffffff, 0x00000104,
875 0x993, 0x000c0000, 0x000c0000, 882 0x0993, 0x000c0000, 0x000c0000,
876 0x992, 0x000c0000, 0x000c0000, 883 0x0992, 0x000c0000, 0x000c0000,
877 0xbd4, 0x00000001, 0x00000001, 884 0x0bd4, 0x00000001, 0x00000001,
878 0xc33, 0xc0000fff, 0x00000104, 885 0x0c33, 0xc0000fff, 0x00000104,
879 0x3079, 0x00000001, 0x00000001, 886 0x3079, 0x00000001, 0x00000001,
880 0x3430, 0xfffffff0, 0x00000100, 887 0x3430, 0xfffffff0, 0x00000100,
881 0x3630, 0xfffffff0, 0x00000100 888 0x3630, 0xfffffff0, 0x00000100
@@ -1179,6 +1186,8 @@ static int si_common_early_init(void *handle)
1179 AMD_CG_SUPPORT_HDP_LS | 1186 AMD_CG_SUPPORT_HDP_LS |
1180 AMD_CG_SUPPORT_HDP_MGCG; 1187 AMD_CG_SUPPORT_HDP_MGCG;
1181 adev->pg_flags = 0; 1188 adev->pg_flags = 0;
1189 adev->external_rev_id = (adev->rev_id == 0) ? 1 :
1190 (adev->rev_id == 1) ? 5 : 6;
1182 break; 1191 break;
1183 case CHIP_PITCAIRN: 1192 case CHIP_PITCAIRN:
1184 adev->cg_flags = 1193 adev->cg_flags =
@@ -1198,6 +1207,7 @@ static int si_common_early_init(void *handle)
1198 AMD_CG_SUPPORT_HDP_LS | 1207 AMD_CG_SUPPORT_HDP_LS |
1199 AMD_CG_SUPPORT_HDP_MGCG; 1208 AMD_CG_SUPPORT_HDP_MGCG;
1200 adev->pg_flags = 0; 1209 adev->pg_flags = 0;
1210 adev->external_rev_id = adev->rev_id + 20;
1201 break; 1211 break;
1202 1212
1203 case CHIP_VERDE: 1213 case CHIP_VERDE:
@@ -1219,7 +1229,7 @@ static int si_common_early_init(void *handle)
1219 AMD_CG_SUPPORT_HDP_MGCG; 1229 AMD_CG_SUPPORT_HDP_MGCG;
1220 adev->pg_flags = 0; 1230 adev->pg_flags = 0;
1221 //??? 1231 //???
1222 adev->external_rev_id = adev->rev_id + 0x14; 1232 adev->external_rev_id = adev->rev_id + 40;
1223 break; 1233 break;
1224 case CHIP_OLAND: 1234 case CHIP_OLAND:
1225 adev->cg_flags = 1235 adev->cg_flags =
@@ -1238,6 +1248,7 @@ static int si_common_early_init(void *handle)
1238 AMD_CG_SUPPORT_HDP_LS | 1248 AMD_CG_SUPPORT_HDP_LS |
1239 AMD_CG_SUPPORT_HDP_MGCG; 1249 AMD_CG_SUPPORT_HDP_MGCG;
1240 adev->pg_flags = 0; 1250 adev->pg_flags = 0;
1251 adev->external_rev_id = 60;
1241 break; 1252 break;
1242 case CHIP_HAINAN: 1253 case CHIP_HAINAN:
1243 adev->cg_flags = 1254 adev->cg_flags =
@@ -1255,6 +1266,7 @@ static int si_common_early_init(void *handle)
1255 AMD_CG_SUPPORT_HDP_LS | 1266 AMD_CG_SUPPORT_HDP_LS |
1256 AMD_CG_SUPPORT_HDP_MGCG; 1267 AMD_CG_SUPPORT_HDP_MGCG;
1257 adev->pg_flags = 0; 1268 adev->pg_flags = 0;
1269 adev->external_rev_id = 70;
1258 break; 1270 break;
1259 1271
1260 default: 1272 default: