Linux Audio

Check our new training course

Loading...
v3.1
  1/*
  2 * Copyright 2009 Advanced Micro Devices, Inc.
  3 *
  4 * Permission is hereby granted, free of charge, to any person obtaining a
  5 * copy of this software and associated documentation files (the "Software"),
  6 * to deal in the Software without restriction, including without limitation
  7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8 * and/or sell copies of the Software, and to permit persons to whom the
  9 * Software is furnished to do so, subject to the following conditions:
 10 *
 11 * The above copyright notice and this permission notice (including the next
 12 * paragraph) shall be included in all copies or substantial portions of the
 13 * Software.
 14 *
 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 18 * THE COPYRIGHT HOLDER(S) AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
 19 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 21 * DEALINGS IN THE SOFTWARE.
 22 *
 23 * Authors:
 24 *     Alex Deucher <alexander.deucher@amd.com>
 25 */
 26
 
 27#include <linux/types.h>
 28#include <linux/kernel.h>
 29
 30/*
 31 * R6xx+ cards need to use the 3D engine to blit data which requires
 32 * quite a bit of hw state setup.  Rather than pull the whole 3D driver
 33 * (which normally generates the 3D state) into the DRM, we opt to use
 34 * statically generated state tables.  The regsiter state and shaders
 35 * were hand generated to support blitting functionality.  See the 3D
 36 * driver or documentation for descriptions of the registers and
 37 * shader instructions.
 38 */
 39
 40const u32 r6xx_default_state[] =
 41{
 42	0xc0002400, /* START_3D_CMDBUF */
 43	0x00000000,
 44
 45	0xc0012800, /* CONTEXT_CONTROL */
 46	0x80000000,
 47	0x80000000,
 48
 49	0xc0016800,
 50	0x00000010,
 51	0x00008000, /* WAIT_UNTIL */
 52
 53	0xc0016800,
 54	0x00000542,
 55	0x07000003, /* TA_CNTL_AUX */
 56
 57	0xc0016800,
 58	0x000005c5,
 59	0x00000000, /* VC_ENHANCE */
 60
 61	0xc0016800,
 62	0x00000363,
 63	0x00000000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
 64
 65	0xc0016800,
 66	0x0000060c,
 67	0x82000000, /* DB_DEBUG */
 68
 69	0xc0016800,
 70	0x0000060e,
 71	0x01020204, /* DB_WATERMARKS */
 72
 73	0xc0026f00,
 74	0x00000000,
 75	0x00000000, /* SQ_VTX_BASE_VTX_LOC */
 76	0x00000000, /* SQ_VTX_START_INST_LOC */
 77
 78	0xc0096900,
 79	0x0000022a,
 80	0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
 81	0x00000000,
 82	0x00000000,
 83	0x00000000,
 84	0x00000000,
 85	0x00000000,
 86	0x00000000,
 87	0x00000000,
 88	0x00000000,
 89
 90	0xc0016900,
 91	0x00000004,
 92	0x00000000, /* DB_DEPTH_INFO */
 93
 94	0xc0026900,
 95	0x0000000a,
 96	0x00000000, /* DB_STENCIL_CLEAR */
 97	0x00000000, /* DB_DEPTH_CLEAR */
 98
 99	0xc0016900,
100	0x00000200,
101	0x00000000, /* DB_DEPTH_CONTROL */
102
103	0xc0026900,
104	0x00000343,
105	0x00000060, /* DB_RENDER_CONTROL */
106	0x00000040, /* DB_RENDER_OVERRIDE */
107
108	0xc0016900,
109	0x00000351,
110	0x0000aa00, /* DB_ALPHA_TO_MASK */
111
112	0xc00f6900,
113	0x00000100,
114	0x00000800, /* VGT_MAX_VTX_INDX */
115	0x00000000, /* VGT_MIN_VTX_INDX */
116	0x00000000, /* VGT_INDX_OFFSET */
117	0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
118	0x00000000, /* SX_ALPHA_TEST_CONTROL */
119	0x00000000, /* CB_BLEND_RED */
120	0x00000000,
121	0x00000000,
122	0x00000000,
123	0x00000000, /* CB_FOG_RED */
124	0x00000000,
125	0x00000000,
126	0x00000000, /* DB_STENCILREFMASK */
127	0x00000000, /* DB_STENCILREFMASK_BF */
128	0x00000000, /* SX_ALPHA_REF */
129
130	0xc0046900,
131	0x0000030c,
132	0x01000000, /* CB_CLRCMP_CNTL */
133	0x00000000,
134	0x00000000,
135	0x00000000,
136
137	0xc0046900,
138	0x00000048,
139	0x3f800000, /* CB_CLEAR_RED */
140	0x00000000,
141	0x3f800000,
142	0x3f800000,
143
144	0xc0016900,
145	0x00000080,
146	0x00000000, /* PA_SC_WINDOW_OFFSET */
147
148	0xc00a6900,
149	0x00000083,
150	0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
151	0x00000000, /* PA_SC_CLIPRECT_0_TL */
152	0x20002000,
153	0x00000000,
154	0x20002000,
155	0x00000000,
156	0x20002000,
157	0x00000000,
158	0x20002000,
159	0x00000000, /* PA_SC_EDGERULE */
160
161	0xc0406900,
162	0x00000094,
163	0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
164	0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
165	0x80000000, /* PA_SC_VPORT_SCISSOR_1_TL */
166	0x20002000,
167	0x80000000,
168	0x20002000,
169	0x80000000,
170	0x20002000,
171	0x80000000,
172	0x20002000,
173	0x80000000,
174	0x20002000,
175	0x80000000,
176	0x20002000,
177	0x80000000,
178	0x20002000,
179	0x80000000,
180	0x20002000,
181	0x80000000,
182	0x20002000,
183	0x80000000,
184	0x20002000,
185	0x80000000,
186	0x20002000,
187	0x80000000,
188	0x20002000,
189	0x80000000,
190	0x20002000,
191	0x80000000,
192	0x20002000,
193	0x80000000,
194	0x20002000,
195	0x00000000, /* PA_SC_VPORT_ZMIN_0 */
196	0x3f800000,
197	0x00000000,
198	0x3f800000,
199	0x00000000,
200	0x3f800000,
201	0x00000000,
202	0x3f800000,
203	0x00000000,
204	0x3f800000,
205	0x00000000,
206	0x3f800000,
207	0x00000000,
208	0x3f800000,
209	0x00000000,
210	0x3f800000,
211	0x00000000,
212	0x3f800000,
213	0x00000000,
214	0x3f800000,
215	0x00000000,
216	0x3f800000,
217	0x00000000,
218	0x3f800000,
219	0x00000000,
220	0x3f800000,
221	0x00000000,
222	0x3f800000,
223	0x00000000,
224	0x3f800000,
225	0x00000000,
226	0x3f800000,
227
228	0xc0026900,
229	0x00000292,
230	0x00000000, /* PA_SC_MPASS_PS_CNTL */
231	0x00004010, /* PA_SC_MODE_CNTL */
232
233	0xc0096900,
234	0x00000300,
235	0x00000000, /* PA_SC_LINE_CNTL */
236	0x00000000, /* PA_SC_AA_CONFIG */
237	0x0000002d, /* PA_SU_VTX_CNTL */
238	0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
239	0x3f800000,
240	0x3f800000,
241	0x3f800000,
242	0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
243	0x00000000,
244
245	0xc0016900,
246	0x00000312,
247	0xffffffff, /* PA_SC_AA_MASK */
248
249	0xc0066900,
250	0x0000037e,
251	0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
252	0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
253	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
254	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
255	0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
256	0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
257
258	0xc0046900,
259	0x000001b6,
260	0x00000000, /* SPI_INPUT_Z */
261	0x00000000, /* SPI_FOG_CNTL */
262	0x00000000, /* SPI_FOG_FUNC_SCALE */
263	0x00000000, /* SPI_FOG_FUNC_BIAS */
264
265	0xc0016900,
266	0x00000225,
267	0x00000000, /* SQ_PGM_START_FS */
268
269	0xc0016900,
270	0x00000229,
271	0x00000000, /* SQ_PGM_RESOURCES_FS */
272
273	0xc0016900,
274	0x00000237,
275	0x00000000, /* SQ_PGM_CF_OFFSET_FS */
276
277	0xc0026900,
278	0x000002a8,
279	0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
280	0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
281
282	0xc0116900,
283	0x00000280,
284	0x00000000, /* PA_SU_POINT_SIZE */
285	0x00000000, /* PA_SU_POINT_MINMAX */
286	0x00000008, /* PA_SU_LINE_CNTL */
287	0x00000000, /* PA_SC_LINE_STIPPLE */
288	0x00000000, /* VGT_OUTPUT_PATH_CNTL */
289	0x00000000, /* VGT_HOS_CNTL */
290	0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
291	0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
292	0x00000000, /* VGT_HOS_REUSE_DEPTH */
293	0x00000000, /* VGT_GROUP_PRIM_TYPE */
294	0x00000000, /* VGT_GROUP_FIRST_DECR */
295	0x00000000, /* VGT_GROUP_DECR */
296	0x00000000, /* VGT_GROUP_VECT_0_CNTL */
297	0x00000000, /* VGT_GROUP_VECT_1_CNTL */
298	0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
299	0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
300	0x00000000, /* VGT_GS_MODE */
301
302	0xc0016900,
303	0x000002a1,
304	0x00000000, /* VGT_PRIMITIVEID_EN */
305
306	0xc0016900,
307	0x000002a5,
308	0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
309
310	0xc0036900,
311	0x000002ac,
312	0x00000000, /* VGT_STRMOUT_EN */
313	0x00000000, /* VGT_REUSE_OFF */
314	0x00000000, /* VGT_VTX_CNT_EN */
315
316	0xc0016900,
 
 
 
 
317	0x000002c8,
318	0x00000000, /* VGT_STRMOUT_BUFFER_EN */
319
320	0xc0076900,
321	0x00000202,
322	0x00cc0000, /* CB_COLOR_CONTROL */
323	0x00000210, /* DB_SHADER_CNTL */
324	0x00010000, /* PA_CL_CLIP_CNTL */
325	0x00000244, /* PA_SU_SC_MODE_CNTL */
326	0x00000100, /* PA_CL_VTE_CNTL */
327	0x00000000, /* PA_CL_VS_OUT_CNTL */
328	0x00000000, /* PA_CL_NANINF_CNTL */
329
330	0xc0026900,
331	0x0000008e,
332	0x0000000f, /* CB_TARGET_MASK */
333	0x0000000f, /* CB_SHADER_MASK */
334
335	0xc0016900,
336	0x000001e8,
337	0x00000001, /* CB_SHADER_CONTROL */
338
339	0xc0016900,
340	0x00000185,
341	0x00000000, /* SPI_VS_OUT_ID_0 */
342
343	0xc0016900,
344	0x00000191,
345	0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
346
347	0xc0056900,
348	0x000001b1,
349	0x00000000, /* SPI_VS_OUT_CONFIG */
350	0x00000000, /* SPI_THREAD_GROUPING */
351	0x00000001, /* SPI_PS_IN_CONTROL_0 */
352	0x00000000, /* SPI_PS_IN_CONTROL_1 */
353	0x00000000, /* SPI_INTERP_CONTROL_0 */
354
355	0xc0036e00, /* SET_SAMPLER */
356	0x00000000,
357	0x00000012,
358	0x00000000,
359	0x00000000,
360};
361
362const u32 r7xx_default_state[] =
363{
364	0xc0012800, /* CONTEXT_CONTROL */
365	0x80000000,
366	0x80000000,
367
368	0xc0016800,
369	0x00000010,
370	0x00008000, /* WAIT_UNTIL */
371
372	0xc0016800,
373	0x00000542,
374	0x07000002, /* TA_CNTL_AUX */
375
376	0xc0016800,
377	0x000005c5,
378	0x00000000, /* VC_ENHANCE */
379
380	0xc0016800,
381	0x00000363,
382	0x00004000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
383
384	0xc0016800,
385	0x0000060c,
386	0x00000000, /* DB_DEBUG */
387
388	0xc0016800,
389	0x0000060e,
390	0x00420204, /* DB_WATERMARKS */
391
392	0xc0026f00,
393	0x00000000,
394	0x00000000, /* SQ_VTX_BASE_VTX_LOC */
395	0x00000000, /* SQ_VTX_START_INST_LOC */
396
397	0xc0096900,
398	0x0000022a,
399	0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
400	0x00000000,
401	0x00000000,
402	0x00000000,
403	0x00000000,
404	0x00000000,
405	0x00000000,
406	0x00000000,
407	0x00000000,
408
409	0xc0016900,
410	0x00000004,
411	0x00000000, /* DB_DEPTH_INFO */
412
413	0xc0026900,
414	0x0000000a,
415	0x00000000, /* DB_STENCIL_CLEAR */
416	0x00000000, /* DB_DEPTH_CLEAR */
417
418	0xc0016900,
419	0x00000200,
420	0x00000000, /* DB_DEPTH_CONTROL */
421
422	0xc0026900,
423	0x00000343,
424	0x00000060, /* DB_RENDER_CONTROL */
425	0x00000000, /* DB_RENDER_OVERRIDE */
426
427	0xc0016900,
428	0x00000351,
429	0x0000aa00, /* DB_ALPHA_TO_MASK */
430
431	0xc0096900,
432	0x00000100,
433	0x00000800, /* VGT_MAX_VTX_INDX */
434	0x00000000, /* VGT_MIN_VTX_INDX */
435	0x00000000, /* VGT_INDX_OFFSET */
436	0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
437	0x00000000, /* SX_ALPHA_TEST_CONTROL */
438	0x00000000, /* CB_BLEND_RED */
439	0x00000000,
440	0x00000000,
441	0x00000000,
442
443	0xc0036900,
444	0x0000010c,
445	0x00000000, /* DB_STENCILREFMASK */
446	0x00000000, /* DB_STENCILREFMASK_BF */
447	0x00000000, /* SX_ALPHA_REF */
448
449	0xc0046900,
450	0x0000030c, /* CB_CLRCMP_CNTL */
451	0x01000000,
452	0x00000000,
453	0x00000000,
454	0x00000000,
455
456	0xc0016900,
457	0x00000080,
458	0x00000000, /* PA_SC_WINDOW_OFFSET */
459
460	0xc00a6900,
461	0x00000083,
462	0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
463	0x00000000, /* PA_SC_CLIPRECT_0_TL */
464	0x20002000,
465	0x00000000,
466	0x20002000,
467	0x00000000,
468	0x20002000,
469	0x00000000,
470	0x20002000,
471	0xaaaaaaaa, /* PA_SC_EDGERULE */
472
473	0xc0406900,
474	0x00000094,
475	0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
476	0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
477	0x80000000, /* PA_SC_VPORT_SCISSOR_1_TL */
478	0x20002000,
479	0x80000000,
480	0x20002000,
481	0x80000000,
482	0x20002000,
483	0x80000000,
484	0x20002000,
485	0x80000000,
486	0x20002000,
487	0x80000000,
488	0x20002000,
489	0x80000000,
490	0x20002000,
491	0x80000000,
492	0x20002000,
493	0x80000000,
494	0x20002000,
495	0x80000000,
496	0x20002000,
497	0x80000000,
498	0x20002000,
499	0x80000000,
500	0x20002000,
501	0x80000000,
502	0x20002000,
503	0x80000000,
504	0x20002000,
505	0x80000000,
506	0x20002000,
507	0x00000000, /* PA_SC_VPORT_ZMIN_0 */
508	0x3f800000,
509	0x00000000,
510	0x3f800000,
511	0x00000000,
512	0x3f800000,
513	0x00000000,
514	0x3f800000,
515	0x00000000,
516	0x3f800000,
517	0x00000000,
518	0x3f800000,
519	0x00000000,
520	0x3f800000,
521	0x00000000,
522	0x3f800000,
523	0x00000000,
524	0x3f800000,
525	0x00000000,
526	0x3f800000,
527	0x00000000,
528	0x3f800000,
529	0x00000000,
530	0x3f800000,
531	0x00000000,
532	0x3f800000,
533	0x00000000,
534	0x3f800000,
535	0x00000000,
536	0x3f800000,
537	0x00000000,
538	0x3f800000,
539
540	0xc0026900,
541	0x00000292,
542	0x00000000, /* PA_SC_MPASS_PS_CNTL */
543	0x00514000, /* PA_SC_MODE_CNTL */
544
545	0xc0096900,
546	0x00000300,
547	0x00000000, /* PA_SC_LINE_CNTL */
548	0x00000000, /* PA_SC_AA_CONFIG */
549	0x0000002d, /* PA_SU_VTX_CNTL */
550	0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
551	0x3f800000,
552	0x3f800000,
553	0x3f800000,
554	0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
555	0x00000000,
556
557	0xc0016900,
558	0x00000312,
559	0xffffffff, /* PA_SC_AA_MASK */
560
561	0xc0066900,
562	0x0000037e,
563	0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
564	0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
565	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
566	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
567	0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
568	0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
569
570	0xc0046900,
571	0x000001b6,
572	0x00000000, /* SPI_INPUT_Z */
573	0x00000000, /* SPI_FOG_CNTL */
574	0x00000000, /* SPI_FOG_FUNC_SCALE */
575	0x00000000, /* SPI_FOG_FUNC_BIAS */
576
577	0xc0016900,
578	0x00000225,
579	0x00000000, /* SQ_PGM_START_FS */
580
581	0xc0016900,
582	0x00000229,
583	0x00000000, /* SQ_PGM_RESOURCES_FS */
584
585	0xc0016900,
586	0x00000237,
587	0x00000000, /* SQ_PGM_CF_OFFSET_FS */
588
589	0xc0026900,
590	0x000002a8,
591	0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
592	0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
593
594	0xc0116900,
595	0x00000280,
596	0x00000000, /* PA_SU_POINT_SIZE */
597	0x00000000, /* PA_SU_POINT_MINMAX */
598	0x00000008, /* PA_SU_LINE_CNTL */
599	0x00000000, /* PA_SC_LINE_STIPPLE */
600	0x00000000, /* VGT_OUTPUT_PATH_CNTL */
601	0x00000000, /* VGT_HOS_CNTL */
602	0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
603	0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
604	0x00000000, /* VGT_HOS_REUSE_DEPTH */
605	0x00000000, /* VGT_GROUP_PRIM_TYPE */
606	0x00000000, /* VGT_GROUP_FIRST_DECR */
607	0x00000000, /* VGT_GROUP_DECR */
608	0x00000000, /* VGT_GROUP_VECT_0_CNTL */
609	0x00000000, /* VGT_GROUP_VECT_1_CNTL */
610	0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
611	0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
612	0x00000000, /* VGT_GS_MODE */
613
614	0xc0016900,
615	0x000002a1,
616	0x00000000, /* VGT_PRIMITIVEID_EN */
617
618	0xc0016900,
619	0x000002a5,
620	0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
621
622	0xc0036900,
623	0x000002ac,
624	0x00000000, /* VGT_STRMOUT_EN */
625	0x00000000, /* VGT_REUSE_OFF */
626	0x00000000, /* VGT_VTX_CNT_EN */
 
 
 
 
627
628	0xc0016900,
629	0x000002c8,
630	0x00000000, /* VGT_STRMOUT_BUFFER_EN */
631
632	0xc0076900,
633	0x00000202,
634	0x00cc0000, /* CB_COLOR_CONTROL */
635	0x00000210, /* DB_SHADER_CNTL */
636	0x00010000, /* PA_CL_CLIP_CNTL */
637	0x00000244, /* PA_SU_SC_MODE_CNTL */
638	0x00000100, /* PA_CL_VTE_CNTL */
639	0x00000000, /* PA_CL_VS_OUT_CNTL */
640	0x00000000, /* PA_CL_NANINF_CNTL */
641
642	0xc0026900,
643	0x0000008e,
644	0x0000000f, /* CB_TARGET_MASK */
645	0x0000000f, /* CB_SHADER_MASK */
646
647	0xc0016900,
648	0x000001e8,
649	0x00000001, /* CB_SHADER_CONTROL */
650
651	0xc0016900,
652	0x00000185,
653	0x00000000, /* SPI_VS_OUT_ID_0 */
654
655	0xc0016900,
656	0x00000191,
657	0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
658
659	0xc0056900,
660	0x000001b1,
661	0x00000000, /* SPI_VS_OUT_CONFIG */
662	0x00000001, /* SPI_THREAD_GROUPING */
663	0x00000001, /* SPI_PS_IN_CONTROL_0 */
664	0x00000000, /* SPI_PS_IN_CONTROL_1 */
665	0x00000000, /* SPI_INTERP_CONTROL_0 */
666
667	0xc0036e00, /* SET_SAMPLER */
668	0x00000000,
669	0x00000012,
670	0x00000000,
671	0x00000000,
672};
673
674/* same for r6xx/r7xx */
675const u32 r6xx_vs[] =
676{
677	0x00000004,
678	0x81000000,
679	0x0000203c,
680	0x94000b08,
681	0x00004000,
682	0x14200b1a,
683	0x00000000,
684	0x00000000,
685	0x3c000000,
686	0x68cd1000,
687#ifdef __BIG_ENDIAN
688	0x000a0000,
689#else
690	0x00080000,
691#endif
692	0x00000000,
693};
694
695const u32 r6xx_ps[] =
696{
697	0x00000002,
698	0x80800000,
699	0x00000000,
700	0x94200688,
701	0x00000010,
702	0x000d1000,
703	0xb0800000,
704	0x00000000,
705};
706
707const u32 r6xx_ps_size = ARRAY_SIZE(r6xx_ps);
708const u32 r6xx_vs_size = ARRAY_SIZE(r6xx_vs);
709const u32 r6xx_default_size = ARRAY_SIZE(r6xx_default_state);
710const u32 r7xx_default_size = ARRAY_SIZE(r7xx_default_state);
v3.15
  1/*
  2 * Copyright 2009 Advanced Micro Devices, Inc.
  3 *
  4 * Permission is hereby granted, free of charge, to any person obtaining a
  5 * copy of this software and associated documentation files (the "Software"),
  6 * to deal in the Software without restriction, including without limitation
  7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8 * and/or sell copies of the Software, and to permit persons to whom the
  9 * Software is furnished to do so, subject to the following conditions:
 10 *
 11 * The above copyright notice and this permission notice (including the next
 12 * paragraph) shall be included in all copies or substantial portions of the
 13 * Software.
 14 *
 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 18 * THE COPYRIGHT HOLDER(S) AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
 19 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 21 * DEALINGS IN THE SOFTWARE.
 22 *
 23 * Authors:
 24 *     Alex Deucher <alexander.deucher@amd.com>
 25 */
 26
 27#include <linux/bug.h>
 28#include <linux/types.h>
 29#include <linux/kernel.h>
 30
 31/*
 32 * R6xx+ cards need to use the 3D engine to blit data which requires
 33 * quite a bit of hw state setup.  Rather than pull the whole 3D driver
 34 * (which normally generates the 3D state) into the DRM, we opt to use
 35 * statically generated state tables.  The regsiter state and shaders
 36 * were hand generated to support blitting functionality.  See the 3D
 37 * driver or documentation for descriptions of the registers and
 38 * shader instructions.
 39 */
 40
 41const u32 r6xx_default_state[] =
 42{
 43	0xc0002400, /* START_3D_CMDBUF */
 44	0x00000000,
 45
 46	0xc0012800, /* CONTEXT_CONTROL */
 47	0x80000000,
 48	0x80000000,
 49
 50	0xc0016800,
 51	0x00000010,
 52	0x00008000, /* WAIT_UNTIL */
 53
 54	0xc0016800,
 55	0x00000542,
 56	0x07000003, /* TA_CNTL_AUX */
 57
 58	0xc0016800,
 59	0x000005c5,
 60	0x00000000, /* VC_ENHANCE */
 61
 62	0xc0016800,
 63	0x00000363,
 64	0x00000000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
 65
 66	0xc0016800,
 67	0x0000060c,
 68	0x82000000, /* DB_DEBUG */
 69
 70	0xc0016800,
 71	0x0000060e,
 72	0x01020204, /* DB_WATERMARKS */
 73
 74	0xc0026f00,
 75	0x00000000,
 76	0x00000000, /* SQ_VTX_BASE_VTX_LOC */
 77	0x00000000, /* SQ_VTX_START_INST_LOC */
 78
 79	0xc0096900,
 80	0x0000022a,
 81	0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
 82	0x00000000,
 83	0x00000000,
 84	0x00000000,
 85	0x00000000,
 86	0x00000000,
 87	0x00000000,
 88	0x00000000,
 89	0x00000000,
 90
 91	0xc0016900,
 92	0x00000004,
 93	0x00000000, /* DB_DEPTH_INFO */
 94
 95	0xc0026900,
 96	0x0000000a,
 97	0x00000000, /* DB_STENCIL_CLEAR */
 98	0x00000000, /* DB_DEPTH_CLEAR */
 99
100	0xc0016900,
101	0x00000200,
102	0x00000000, /* DB_DEPTH_CONTROL */
103
104	0xc0026900,
105	0x00000343,
106	0x00000060, /* DB_RENDER_CONTROL */
107	0x00000040, /* DB_RENDER_OVERRIDE */
108
109	0xc0016900,
110	0x00000351,
111	0x0000aa00, /* DB_ALPHA_TO_MASK */
112
113	0xc00f6900,
114	0x00000100,
115	0x00000800, /* VGT_MAX_VTX_INDX */
116	0x00000000, /* VGT_MIN_VTX_INDX */
117	0x00000000, /* VGT_INDX_OFFSET */
118	0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
119	0x00000000, /* SX_ALPHA_TEST_CONTROL */
120	0x00000000, /* CB_BLEND_RED */
121	0x00000000,
122	0x00000000,
123	0x00000000,
124	0x00000000, /* CB_FOG_RED */
125	0x00000000,
126	0x00000000,
127	0x00000000, /* DB_STENCILREFMASK */
128	0x00000000, /* DB_STENCILREFMASK_BF */
129	0x00000000, /* SX_ALPHA_REF */
130
131	0xc0046900,
132	0x0000030c,
133	0x01000000, /* CB_CLRCMP_CNTL */
134	0x00000000,
135	0x00000000,
136	0x00000000,
137
138	0xc0046900,
139	0x00000048,
140	0x3f800000, /* CB_CLEAR_RED */
141	0x00000000,
142	0x3f800000,
143	0x3f800000,
144
145	0xc0016900,
146	0x00000080,
147	0x00000000, /* PA_SC_WINDOW_OFFSET */
148
149	0xc00a6900,
150	0x00000083,
151	0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
152	0x00000000, /* PA_SC_CLIPRECT_0_TL */
153	0x20002000,
154	0x00000000,
155	0x20002000,
156	0x00000000,
157	0x20002000,
158	0x00000000,
159	0x20002000,
160	0x00000000, /* PA_SC_EDGERULE */
161
162	0xc0406900,
163	0x00000094,
164	0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
165	0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
166	0x80000000, /* PA_SC_VPORT_SCISSOR_1_TL */
167	0x20002000,
168	0x80000000,
169	0x20002000,
170	0x80000000,
171	0x20002000,
172	0x80000000,
173	0x20002000,
174	0x80000000,
175	0x20002000,
176	0x80000000,
177	0x20002000,
178	0x80000000,
179	0x20002000,
180	0x80000000,
181	0x20002000,
182	0x80000000,
183	0x20002000,
184	0x80000000,
185	0x20002000,
186	0x80000000,
187	0x20002000,
188	0x80000000,
189	0x20002000,
190	0x80000000,
191	0x20002000,
192	0x80000000,
193	0x20002000,
194	0x80000000,
195	0x20002000,
196	0x00000000, /* PA_SC_VPORT_ZMIN_0 */
197	0x3f800000,
198	0x00000000,
199	0x3f800000,
200	0x00000000,
201	0x3f800000,
202	0x00000000,
203	0x3f800000,
204	0x00000000,
205	0x3f800000,
206	0x00000000,
207	0x3f800000,
208	0x00000000,
209	0x3f800000,
210	0x00000000,
211	0x3f800000,
212	0x00000000,
213	0x3f800000,
214	0x00000000,
215	0x3f800000,
216	0x00000000,
217	0x3f800000,
218	0x00000000,
219	0x3f800000,
220	0x00000000,
221	0x3f800000,
222	0x00000000,
223	0x3f800000,
224	0x00000000,
225	0x3f800000,
226	0x00000000,
227	0x3f800000,
228
229	0xc0026900,
230	0x00000292,
231	0x00000000, /* PA_SC_MPASS_PS_CNTL */
232	0x00004010, /* PA_SC_MODE_CNTL */
233
234	0xc0096900,
235	0x00000300,
236	0x00000000, /* PA_SC_LINE_CNTL */
237	0x00000000, /* PA_SC_AA_CONFIG */
238	0x0000002d, /* PA_SU_VTX_CNTL */
239	0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
240	0x3f800000,
241	0x3f800000,
242	0x3f800000,
243	0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
244	0x00000000,
245
246	0xc0016900,
247	0x00000312,
248	0xffffffff, /* PA_SC_AA_MASK */
249
250	0xc0066900,
251	0x0000037e,
252	0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
253	0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
254	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
255	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
256	0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
257	0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
258
259	0xc0046900,
260	0x000001b6,
261	0x00000000, /* SPI_INPUT_Z */
262	0x00000000, /* SPI_FOG_CNTL */
263	0x00000000, /* SPI_FOG_FUNC_SCALE */
264	0x00000000, /* SPI_FOG_FUNC_BIAS */
265
266	0xc0016900,
267	0x00000225,
268	0x00000000, /* SQ_PGM_START_FS */
269
270	0xc0016900,
271	0x00000229,
272	0x00000000, /* SQ_PGM_RESOURCES_FS */
273
274	0xc0016900,
275	0x00000237,
276	0x00000000, /* SQ_PGM_CF_OFFSET_FS */
277
278	0xc0026900,
279	0x000002a8,
280	0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
281	0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
282
283	0xc0116900,
284	0x00000280,
285	0x00000000, /* PA_SU_POINT_SIZE */
286	0x00000000, /* PA_SU_POINT_MINMAX */
287	0x00000008, /* PA_SU_LINE_CNTL */
288	0x00000000, /* PA_SC_LINE_STIPPLE */
289	0x00000000, /* VGT_OUTPUT_PATH_CNTL */
290	0x00000000, /* VGT_HOS_CNTL */
291	0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
292	0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
293	0x00000000, /* VGT_HOS_REUSE_DEPTH */
294	0x00000000, /* VGT_GROUP_PRIM_TYPE */
295	0x00000000, /* VGT_GROUP_FIRST_DECR */
296	0x00000000, /* VGT_GROUP_DECR */
297	0x00000000, /* VGT_GROUP_VECT_0_CNTL */
298	0x00000000, /* VGT_GROUP_VECT_1_CNTL */
299	0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
300	0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
301	0x00000000, /* VGT_GS_MODE */
302
303	0xc0016900,
304	0x000002a1,
305	0x00000000, /* VGT_PRIMITIVEID_EN */
306
307	0xc0016900,
308	0x000002a5,
309	0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
310
311	0xc0036900,
312	0x000002ac,
313	0x00000000, /* VGT_STRMOUT_EN */
314	0x00000000, /* VGT_REUSE_OFF */
315	0x00000000, /* VGT_VTX_CNT_EN */
316
317	0xc0016900,
318	0x000000d4,
319	0x00000000, /* SX_MISC */
320
321	0xc0016900,
322	0x000002c8,
323	0x00000000, /* VGT_STRMOUT_BUFFER_EN */
324
325	0xc0076900,
326	0x00000202,
327	0x00cc0000, /* CB_COLOR_CONTROL */
328	0x00000210, /* DB_SHADER_CNTL */
329	0x00010000, /* PA_CL_CLIP_CNTL */
330	0x00000244, /* PA_SU_SC_MODE_CNTL */
331	0x00000100, /* PA_CL_VTE_CNTL */
332	0x00000000, /* PA_CL_VS_OUT_CNTL */
333	0x00000000, /* PA_CL_NANINF_CNTL */
334
335	0xc0026900,
336	0x0000008e,
337	0x0000000f, /* CB_TARGET_MASK */
338	0x0000000f, /* CB_SHADER_MASK */
339
340	0xc0016900,
341	0x000001e8,
342	0x00000001, /* CB_SHADER_CONTROL */
343
344	0xc0016900,
345	0x00000185,
346	0x00000000, /* SPI_VS_OUT_ID_0 */
347
348	0xc0016900,
349	0x00000191,
350	0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
351
352	0xc0056900,
353	0x000001b1,
354	0x00000000, /* SPI_VS_OUT_CONFIG */
355	0x00000000, /* SPI_THREAD_GROUPING */
356	0x00000001, /* SPI_PS_IN_CONTROL_0 */
357	0x00000000, /* SPI_PS_IN_CONTROL_1 */
358	0x00000000, /* SPI_INTERP_CONTROL_0 */
359
360	0xc0036e00, /* SET_SAMPLER */
361	0x00000000,
362	0x00000012,
363	0x00000000,
364	0x00000000,
365};
366
367const u32 r7xx_default_state[] =
368{
369	0xc0012800, /* CONTEXT_CONTROL */
370	0x80000000,
371	0x80000000,
372
373	0xc0016800,
374	0x00000010,
375	0x00008000, /* WAIT_UNTIL */
376
377	0xc0016800,
378	0x00000542,
379	0x07000002, /* TA_CNTL_AUX */
380
381	0xc0016800,
382	0x000005c5,
383	0x00000000, /* VC_ENHANCE */
384
385	0xc0016800,
386	0x00000363,
387	0x00004000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
388
389	0xc0016800,
390	0x0000060c,
391	0x00000000, /* DB_DEBUG */
392
393	0xc0016800,
394	0x0000060e,
395	0x00420204, /* DB_WATERMARKS */
396
397	0xc0026f00,
398	0x00000000,
399	0x00000000, /* SQ_VTX_BASE_VTX_LOC */
400	0x00000000, /* SQ_VTX_START_INST_LOC */
401
402	0xc0096900,
403	0x0000022a,
404	0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
405	0x00000000,
406	0x00000000,
407	0x00000000,
408	0x00000000,
409	0x00000000,
410	0x00000000,
411	0x00000000,
412	0x00000000,
413
414	0xc0016900,
415	0x00000004,
416	0x00000000, /* DB_DEPTH_INFO */
417
418	0xc0026900,
419	0x0000000a,
420	0x00000000, /* DB_STENCIL_CLEAR */
421	0x00000000, /* DB_DEPTH_CLEAR */
422
423	0xc0016900,
424	0x00000200,
425	0x00000000, /* DB_DEPTH_CONTROL */
426
427	0xc0026900,
428	0x00000343,
429	0x00000060, /* DB_RENDER_CONTROL */
430	0x00000000, /* DB_RENDER_OVERRIDE */
431
432	0xc0016900,
433	0x00000351,
434	0x0000aa00, /* DB_ALPHA_TO_MASK */
435
436	0xc0096900,
437	0x00000100,
438	0x00000800, /* VGT_MAX_VTX_INDX */
439	0x00000000, /* VGT_MIN_VTX_INDX */
440	0x00000000, /* VGT_INDX_OFFSET */
441	0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
442	0x00000000, /* SX_ALPHA_TEST_CONTROL */
443	0x00000000, /* CB_BLEND_RED */
444	0x00000000,
445	0x00000000,
446	0x00000000,
447
448	0xc0036900,
449	0x0000010c,
450	0x00000000, /* DB_STENCILREFMASK */
451	0x00000000, /* DB_STENCILREFMASK_BF */
452	0x00000000, /* SX_ALPHA_REF */
453
454	0xc0046900,
455	0x0000030c, /* CB_CLRCMP_CNTL */
456	0x01000000,
457	0x00000000,
458	0x00000000,
459	0x00000000,
460
461	0xc0016900,
462	0x00000080,
463	0x00000000, /* PA_SC_WINDOW_OFFSET */
464
465	0xc00a6900,
466	0x00000083,
467	0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
468	0x00000000, /* PA_SC_CLIPRECT_0_TL */
469	0x20002000,
470	0x00000000,
471	0x20002000,
472	0x00000000,
473	0x20002000,
474	0x00000000,
475	0x20002000,
476	0xaaaaaaaa, /* PA_SC_EDGERULE */
477
478	0xc0406900,
479	0x00000094,
480	0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
481	0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
482	0x80000000, /* PA_SC_VPORT_SCISSOR_1_TL */
483	0x20002000,
484	0x80000000,
485	0x20002000,
486	0x80000000,
487	0x20002000,
488	0x80000000,
489	0x20002000,
490	0x80000000,
491	0x20002000,
492	0x80000000,
493	0x20002000,
494	0x80000000,
495	0x20002000,
496	0x80000000,
497	0x20002000,
498	0x80000000,
499	0x20002000,
500	0x80000000,
501	0x20002000,
502	0x80000000,
503	0x20002000,
504	0x80000000,
505	0x20002000,
506	0x80000000,
507	0x20002000,
508	0x80000000,
509	0x20002000,
510	0x80000000,
511	0x20002000,
512	0x00000000, /* PA_SC_VPORT_ZMIN_0 */
513	0x3f800000,
514	0x00000000,
515	0x3f800000,
516	0x00000000,
517	0x3f800000,
518	0x00000000,
519	0x3f800000,
520	0x00000000,
521	0x3f800000,
522	0x00000000,
523	0x3f800000,
524	0x00000000,
525	0x3f800000,
526	0x00000000,
527	0x3f800000,
528	0x00000000,
529	0x3f800000,
530	0x00000000,
531	0x3f800000,
532	0x00000000,
533	0x3f800000,
534	0x00000000,
535	0x3f800000,
536	0x00000000,
537	0x3f800000,
538	0x00000000,
539	0x3f800000,
540	0x00000000,
541	0x3f800000,
542	0x00000000,
543	0x3f800000,
544
545	0xc0026900,
546	0x00000292,
547	0x00000000, /* PA_SC_MPASS_PS_CNTL */
548	0x00514000, /* PA_SC_MODE_CNTL */
549
550	0xc0096900,
551	0x00000300,
552	0x00000000, /* PA_SC_LINE_CNTL */
553	0x00000000, /* PA_SC_AA_CONFIG */
554	0x0000002d, /* PA_SU_VTX_CNTL */
555	0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
556	0x3f800000,
557	0x3f800000,
558	0x3f800000,
559	0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
560	0x00000000,
561
562	0xc0016900,
563	0x00000312,
564	0xffffffff, /* PA_SC_AA_MASK */
565
566	0xc0066900,
567	0x0000037e,
568	0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
569	0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
570	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
571	0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
572	0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
573	0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
574
575	0xc0046900,
576	0x000001b6,
577	0x00000000, /* SPI_INPUT_Z */
578	0x00000000, /* SPI_FOG_CNTL */
579	0x00000000, /* SPI_FOG_FUNC_SCALE */
580	0x00000000, /* SPI_FOG_FUNC_BIAS */
581
582	0xc0016900,
583	0x00000225,
584	0x00000000, /* SQ_PGM_START_FS */
585
586	0xc0016900,
587	0x00000229,
588	0x00000000, /* SQ_PGM_RESOURCES_FS */
589
590	0xc0016900,
591	0x00000237,
592	0x00000000, /* SQ_PGM_CF_OFFSET_FS */
593
594	0xc0026900,
595	0x000002a8,
596	0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
597	0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
598
599	0xc0116900,
600	0x00000280,
601	0x00000000, /* PA_SU_POINT_SIZE */
602	0x00000000, /* PA_SU_POINT_MINMAX */
603	0x00000008, /* PA_SU_LINE_CNTL */
604	0x00000000, /* PA_SC_LINE_STIPPLE */
605	0x00000000, /* VGT_OUTPUT_PATH_CNTL */
606	0x00000000, /* VGT_HOS_CNTL */
607	0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
608	0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
609	0x00000000, /* VGT_HOS_REUSE_DEPTH */
610	0x00000000, /* VGT_GROUP_PRIM_TYPE */
611	0x00000000, /* VGT_GROUP_FIRST_DECR */
612	0x00000000, /* VGT_GROUP_DECR */
613	0x00000000, /* VGT_GROUP_VECT_0_CNTL */
614	0x00000000, /* VGT_GROUP_VECT_1_CNTL */
615	0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
616	0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
617	0x00000000, /* VGT_GS_MODE */
618
619	0xc0016900,
620	0x000002a1,
621	0x00000000, /* VGT_PRIMITIVEID_EN */
622
623	0xc0016900,
624	0x000002a5,
625	0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
626
627	0xc0036900,
628	0x000002ac,
629	0x00000000, /* VGT_STRMOUT_EN */
630	0x00000000, /* VGT_REUSE_OFF */
631	0x00000000, /* VGT_VTX_CNT_EN */
632
633	0xc0016900,
634	0x000000d4,
635	0x00000000, /* SX_MISC */
636
637	0xc0016900,
638	0x000002c8,
639	0x00000000, /* VGT_STRMOUT_BUFFER_EN */
640
641	0xc0076900,
642	0x00000202,
643	0x00cc0000, /* CB_COLOR_CONTROL */
644	0x00000210, /* DB_SHADER_CNTL */
645	0x00010000, /* PA_CL_CLIP_CNTL */
646	0x00000244, /* PA_SU_SC_MODE_CNTL */
647	0x00000100, /* PA_CL_VTE_CNTL */
648	0x00000000, /* PA_CL_VS_OUT_CNTL */
649	0x00000000, /* PA_CL_NANINF_CNTL */
650
651	0xc0026900,
652	0x0000008e,
653	0x0000000f, /* CB_TARGET_MASK */
654	0x0000000f, /* CB_SHADER_MASK */
655
656	0xc0016900,
657	0x000001e8,
658	0x00000001, /* CB_SHADER_CONTROL */
659
660	0xc0016900,
661	0x00000185,
662	0x00000000, /* SPI_VS_OUT_ID_0 */
663
664	0xc0016900,
665	0x00000191,
666	0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
667
668	0xc0056900,
669	0x000001b1,
670	0x00000000, /* SPI_VS_OUT_CONFIG */
671	0x00000001, /* SPI_THREAD_GROUPING */
672	0x00000001, /* SPI_PS_IN_CONTROL_0 */
673	0x00000000, /* SPI_PS_IN_CONTROL_1 */
674	0x00000000, /* SPI_INTERP_CONTROL_0 */
675
676	0xc0036e00, /* SET_SAMPLER */
677	0x00000000,
678	0x00000012,
679	0x00000000,
680	0x00000000,
681};
682
683/* same for r6xx/r7xx */
684const u32 r6xx_vs[] =
685{
686	0x00000004,
687	0x81000000,
688	0x0000203c,
689	0x94000b08,
690	0x00004000,
691	0x14200b1a,
692	0x00000000,
693	0x00000000,
694	0x3c000000,
695	0x68cd1000,
696#ifdef __BIG_ENDIAN
697	0x000a0000,
698#else
699	0x00080000,
700#endif
701	0x00000000,
702};
703
704const u32 r6xx_ps[] =
705{
706	0x00000002,
707	0x80800000,
708	0x00000000,
709	0x94200688,
710	0x00000010,
711	0x000d1000,
712	0xb0800000,
713	0x00000000,
714};
715
716const u32 r6xx_ps_size = ARRAY_SIZE(r6xx_ps);
717const u32 r6xx_vs_size = ARRAY_SIZE(r6xx_vs);
718const u32 r6xx_default_size = ARRAY_SIZE(r6xx_default_state);
719const u32 r7xx_default_size = ARRAY_SIZE(r7xx_default_state);