Commit 96616b4c authored by Ben Skeggs's avatar Ben Skeggs

drm/nv108/gr: initial support (need external fuc)

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent daa9ab58
...@@ -243,6 +243,7 @@ nouveau-y += core/engine/graph/ctxnvd7.o ...@@ -243,6 +243,7 @@ nouveau-y += core/engine/graph/ctxnvd7.o
nouveau-y += core/engine/graph/ctxnvd9.o nouveau-y += core/engine/graph/ctxnvd9.o
nouveau-y += core/engine/graph/ctxnve4.o nouveau-y += core/engine/graph/ctxnve4.o
nouveau-y += core/engine/graph/ctxnvf0.o nouveau-y += core/engine/graph/ctxnvf0.o
nouveau-y += core/engine/graph/ctxnv108.o
nouveau-y += core/engine/graph/nv04.o nouveau-y += core/engine/graph/nv04.o
nouveau-y += core/engine/graph/nv10.o nouveau-y += core/engine/graph/nv10.o
nouveau-y += core/engine/graph/nv20.o nouveau-y += core/engine/graph/nv20.o
...@@ -261,6 +262,7 @@ nouveau-y += core/engine/graph/nvd7.o ...@@ -261,6 +262,7 @@ nouveau-y += core/engine/graph/nvd7.o
nouveau-y += core/engine/graph/nvd9.o nouveau-y += core/engine/graph/nvd9.o
nouveau-y += core/engine/graph/nve4.o nouveau-y += core/engine/graph/nve4.o
nouveau-y += core/engine/graph/nvf0.o nouveau-y += core/engine/graph/nvf0.o
nouveau-y += core/engine/graph/nv108.o
nouveau-y += core/engine/mpeg/nv31.o nouveau-y += core/engine/mpeg/nv31.o
nouveau-y += core/engine/mpeg/nv40.o nouveau-y += core/engine/mpeg/nv40.o
nouveau-y += core/engine/mpeg/nv44.o nouveau-y += core/engine/mpeg/nv44.o
......
...@@ -213,10 +213,8 @@ nve0_identify(struct nouveau_device *device) ...@@ -213,10 +213,8 @@ nve0_identify(struct nouveau_device *device)
device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass; device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass;
device->oclass[NVDEV_ENGINE_DMAOBJ ] = &nvd0_dmaeng_oclass; device->oclass[NVDEV_ENGINE_DMAOBJ ] = &nvd0_dmaeng_oclass;
device->oclass[NVDEV_ENGINE_FIFO ] = nv108_fifo_oclass; device->oclass[NVDEV_ENGINE_FIFO ] = nv108_fifo_oclass;
#if 0
device->oclass[NVDEV_ENGINE_SW ] = nvc0_software_oclass; device->oclass[NVDEV_ENGINE_SW ] = nvc0_software_oclass;
device->oclass[NVDEV_ENGINE_GR ] = nvf0_graph_oclass; device->oclass[NVDEV_ENGINE_GR ] = nv108_graph_oclass;
#endif
device->oclass[NVDEV_ENGINE_DISP ] = &nvf0_disp_oclass; device->oclass[NVDEV_ENGINE_DISP ] = &nvf0_disp_oclass;
device->oclass[NVDEV_ENGINE_COPY0 ] = &nve0_copy0_oclass; device->oclass[NVDEV_ENGINE_COPY0 ] = &nve0_copy0_oclass;
device->oclass[NVDEV_ENGINE_COPY1 ] = &nve0_copy1_oclass; device->oclass[NVDEV_ENGINE_COPY1 ] = &nve0_copy1_oclass;
......
/*
* Copyright 2013 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs <bskeggs@redhat.com>
*/
#include "nvc0.h"
static struct nvc0_graph_init
nv108_grctx_init_icmd[] = {
{ 0x001000, 1, 0x01, 0x00000004 },
{ 0x000039, 3, 0x01, 0x00000000 },
{ 0x0000a9, 1, 0x01, 0x0000ffff },
{ 0x000038, 1, 0x01, 0x0fac6881 },
{ 0x00003d, 1, 0x01, 0x00000001 },
{ 0x0000e8, 8, 0x01, 0x00000400 },
{ 0x000078, 8, 0x01, 0x00000300 },
{ 0x000050, 1, 0x01, 0x00000011 },
{ 0x000058, 8, 0x01, 0x00000008 },
{ 0x000208, 8, 0x01, 0x00000001 },
{ 0x000081, 1, 0x01, 0x00000001 },
{ 0x000085, 1, 0x01, 0x00000004 },
{ 0x000088, 1, 0x01, 0x00000400 },
{ 0x000090, 1, 0x01, 0x00000300 },
{ 0x000098, 1, 0x01, 0x00001001 },
{ 0x0000e3, 1, 0x01, 0x00000001 },
{ 0x0000da, 1, 0x01, 0x00000001 },
{ 0x0000f8, 1, 0x01, 0x00000003 },
{ 0x0000fa, 1, 0x01, 0x00000001 },
{ 0x00009f, 4, 0x01, 0x0000ffff },
{ 0x0000b1, 1, 0x01, 0x00000001 },
{ 0x0000ad, 1, 0x01, 0x0000013e },
{ 0x0000e1, 1, 0x01, 0x00000010 },
{ 0x000290, 16, 0x01, 0x00000000 },
{ 0x0003b0, 16, 0x01, 0x00000000 },
{ 0x0002a0, 16, 0x01, 0x00000000 },
{ 0x000420, 16, 0x01, 0x00000000 },
{ 0x0002b0, 16, 0x01, 0x00000000 },
{ 0x000430, 16, 0x01, 0x00000000 },
{ 0x0002c0, 16, 0x01, 0x00000000 },
{ 0x0004d0, 16, 0x01, 0x00000000 },
{ 0x000720, 16, 0x01, 0x00000000 },
{ 0x0008c0, 16, 0x01, 0x00000000 },
{ 0x000890, 16, 0x01, 0x00000000 },
{ 0x0008e0, 16, 0x01, 0x00000000 },
{ 0x0008a0, 16, 0x01, 0x00000000 },
{ 0x0008f0, 16, 0x01, 0x00000000 },
{ 0x00094c, 1, 0x01, 0x000000ff },
{ 0x00094d, 1, 0x01, 0xffffffff },
{ 0x00094e, 1, 0x01, 0x00000002 },
{ 0x0002ec, 1, 0x01, 0x00000001 },
{ 0x0002f2, 2, 0x01, 0x00000001 },
{ 0x0002f5, 1, 0x01, 0x00000001 },
{ 0x0002f7, 1, 0x01, 0x00000001 },
{ 0x000303, 1, 0x01, 0x00000001 },
{ 0x0002e6, 1, 0x01, 0x00000001 },
{ 0x000466, 1, 0x01, 0x00000052 },
{ 0x000301, 1, 0x01, 0x3f800000 },
{ 0x000304, 1, 0x01, 0x30201000 },
{ 0x000305, 1, 0x01, 0x70605040 },
{ 0x000306, 1, 0x01, 0xb8a89888 },
{ 0x000307, 1, 0x01, 0xf8e8d8c8 },
{ 0x00030a, 1, 0x01, 0x00ffff00 },
{ 0x00030b, 1, 0x01, 0x0000001a },
{ 0x00030c, 1, 0x01, 0x00000001 },
{ 0x000318, 1, 0x01, 0x00000001 },
{ 0x000340, 1, 0x01, 0x00000000 },
{ 0x000375, 1, 0x01, 0x00000001 },
{ 0x00037d, 1, 0x01, 0x00000006 },
{ 0x0003a0, 1, 0x01, 0x00000002 },
{ 0x0003aa, 1, 0x01, 0x00000001 },
{ 0x0003a9, 1, 0x01, 0x00000001 },
{ 0x000380, 1, 0x01, 0x00000001 },
{ 0x000383, 1, 0x01, 0x00000011 },
{ 0x000360, 1, 0x01, 0x00000040 },
{ 0x000366, 2, 0x01, 0x00000000 },
{ 0x000368, 1, 0x01, 0x00000fff },
{ 0x000370, 2, 0x01, 0x00000000 },
{ 0x000372, 1, 0x01, 0x000fffff },
{ 0x00037a, 1, 0x01, 0x00000012 },
{ 0x000619, 1, 0x01, 0x00000003 },
{ 0x000811, 1, 0x01, 0x00000003 },
{ 0x000812, 1, 0x01, 0x00000004 },
{ 0x000813, 1, 0x01, 0x00000006 },
{ 0x000814, 1, 0x01, 0x00000008 },
{ 0x000815, 1, 0x01, 0x0000000b },
{ 0x000800, 6, 0x01, 0x00000001 },
{ 0x000632, 1, 0x01, 0x00000001 },
{ 0x000633, 1, 0x01, 0x00000002 },
{ 0x000634, 1, 0x01, 0x00000003 },
{ 0x000635, 1, 0x01, 0x00000004 },
{ 0x000654, 1, 0x01, 0x3f800000 },
{ 0x000657, 1, 0x01, 0x3f800000 },
{ 0x000655, 2, 0x01, 0x3f800000 },
{ 0x0006cd, 1, 0x01, 0x3f800000 },
{ 0x0007f5, 1, 0x01, 0x3f800000 },
{ 0x0007dc, 1, 0x01, 0x39291909 },
{ 0x0007dd, 1, 0x01, 0x79695949 },
{ 0x0007de, 1, 0x01, 0xb9a99989 },
{ 0x0007df, 1, 0x01, 0xf9e9d9c9 },
{ 0x0007e8, 1, 0x01, 0x00003210 },
{ 0x0007e9, 1, 0x01, 0x00007654 },
{ 0x0007ea, 1, 0x01, 0x00000098 },
{ 0x0007ec, 1, 0x01, 0x39291909 },
{ 0x0007ed, 1, 0x01, 0x79695949 },
{ 0x0007ee, 1, 0x01, 0xb9a99989 },
{ 0x0007ef, 1, 0x01, 0xf9e9d9c9 },
{ 0x0007f0, 1, 0x01, 0x00003210 },
{ 0x0007f1, 1, 0x01, 0x00007654 },
{ 0x0007f2, 1, 0x01, 0x00000098 },
{ 0x0005a5, 1, 0x01, 0x00000001 },
{ 0x000980, 128, 0x01, 0x00000000 },
{ 0x000468, 1, 0x01, 0x00000004 },
{ 0x00046c, 1, 0x01, 0x00000001 },
{ 0x000470, 96, 0x01, 0x00000000 },
{ 0x000510, 16, 0x01, 0x3f800000 },
{ 0x000520, 1, 0x01, 0x000002b6 },
{ 0x000529, 1, 0x01, 0x00000001 },
{ 0x000530, 16, 0x01, 0xffff0000 },
{ 0x000585, 1, 0x01, 0x0000003f },
{ 0x000576, 1, 0x01, 0x00000003 },
{ 0x00057b, 1, 0x01, 0x00000059 },
{ 0x000586, 1, 0x01, 0x00000040 },
{ 0x000582, 2, 0x01, 0x00000080 },
{ 0x0005c2, 1, 0x01, 0x00000001 },
{ 0x000638, 2, 0x01, 0x00000001 },
{ 0x00063a, 1, 0x01, 0x00000002 },
{ 0x00063b, 2, 0x01, 0x00000001 },
{ 0x00063d, 1, 0x01, 0x00000002 },
{ 0x00063e, 1, 0x01, 0x00000001 },
{ 0x0008b8, 8, 0x01, 0x00000001 },
{ 0x000900, 8, 0x01, 0x00000001 },
{ 0x000908, 8, 0x01, 0x00000002 },
{ 0x000910, 16, 0x01, 0x00000001 },
{ 0x000920, 8, 0x01, 0x00000002 },
{ 0x000928, 8, 0x01, 0x00000001 },
{ 0x000662, 1, 0x01, 0x00000001 },
{ 0x000648, 9, 0x01, 0x00000001 },
{ 0x000658, 1, 0x01, 0x0000000f },
{ 0x0007ff, 1, 0x01, 0x0000000a },
{ 0x00066a, 1, 0x01, 0x40000000 },
{ 0x00066b, 1, 0x01, 0x10000000 },
{ 0x00066c, 2, 0x01, 0xffff0000 },
{ 0x0007af, 2, 0x01, 0x00000008 },
{ 0x0007f6, 1, 0x01, 0x00000001 },
{ 0x00080b, 1, 0x01, 0x00000002 },
{ 0x0006b2, 1, 0x01, 0x00000055 },
{ 0x0007ad, 1, 0x01, 0x00000003 },
{ 0x000937, 1, 0x01, 0x00000001 },
{ 0x000971, 1, 0x01, 0x00000008 },
{ 0x000972, 1, 0x01, 0x00000040 },
{ 0x000973, 1, 0x01, 0x0000012c },
{ 0x00097c, 1, 0x01, 0x00000040 },
{ 0x000979, 1, 0x01, 0x00000003 },
{ 0x000975, 1, 0x01, 0x00000020 },
{ 0x000976, 1, 0x01, 0x00000001 },
{ 0x000977, 1, 0x01, 0x00000020 },
{ 0x000978, 1, 0x01, 0x00000001 },
{ 0x000957, 1, 0x01, 0x00000003 },
{ 0x00095e, 1, 0x01, 0x20164010 },
{ 0x00095f, 1, 0x01, 0x00000020 },
{ 0x000a0d, 1, 0x01, 0x00000006 },
{ 0x00097d, 1, 0x01, 0x00000020 },
{ 0x000683, 1, 0x01, 0x00000006 },
{ 0x000685, 1, 0x01, 0x003fffff },
{ 0x000687, 1, 0x01, 0x003fffff },
{ 0x0006a0, 1, 0x01, 0x00000005 },
{ 0x000840, 1, 0x01, 0x00400008 },
{ 0x000841, 1, 0x01, 0x08000080 },
{ 0x000842, 1, 0x01, 0x00400008 },
{ 0x000843, 1, 0x01, 0x08000080 },
{ 0x0006aa, 1, 0x01, 0x00000001 },
{ 0x0006ab, 1, 0x01, 0x00000002 },
{ 0x0006ac, 1, 0x01, 0x00000080 },
{ 0x0006ad, 2, 0x01, 0x00000100 },
{ 0x0006b1, 1, 0x01, 0x00000011 },
{ 0x0006bb, 1, 0x01, 0x000000cf },
{ 0x0006ce, 1, 0x01, 0x2a712488 },
{ 0x000739, 1, 0x01, 0x4085c000 },
{ 0x00073a, 1, 0x01, 0x00000080 },
{ 0x000786, 1, 0x01, 0x80000100 },
{ 0x00073c, 1, 0x01, 0x00010100 },
{ 0x00073d, 1, 0x01, 0x02800000 },
{ 0x000787, 1, 0x01, 0x000000cf },
{ 0x00078c, 1, 0x01, 0x00000008 },
{ 0x000792, 1, 0x01, 0x00000001 },
{ 0x000794, 3, 0x01, 0x00000001 },
{ 0x000797, 1, 0x01, 0x000000cf },
{ 0x000836, 1, 0x01, 0x00000001 },
{ 0x00079a, 1, 0x01, 0x00000002 },
{ 0x000833, 1, 0x01, 0x04444480 },
{ 0x0007a1, 1, 0x01, 0x00000001 },
{ 0x0007a3, 3, 0x01, 0x00000001 },
{ 0x000831, 1, 0x01, 0x00000004 },
{ 0x000b07, 1, 0x01, 0x00000002 },
{ 0x000b08, 2, 0x01, 0x00000100 },
{ 0x000b0a, 1, 0x01, 0x00000001 },
{ 0x000a04, 1, 0x01, 0x000000ff },
{ 0x000a0b, 1, 0x01, 0x00000040 },
{ 0x00097f, 1, 0x01, 0x00000100 },
{ 0x000a02, 1, 0x01, 0x00000001 },
{ 0x000809, 1, 0x01, 0x00000007 },
{ 0x00c221, 1, 0x01, 0x00000040 },
{ 0x00c1b0, 8, 0x01, 0x0000000f },
{ 0x00c1b8, 1, 0x01, 0x0fac6881 },
{ 0x00c1b9, 1, 0x01, 0x00fac688 },
{ 0x00c401, 1, 0x01, 0x00000001 },
{ 0x00c402, 1, 0x01, 0x00010001 },
{ 0x00c403, 2, 0x01, 0x00000001 },
{ 0x00c40e, 1, 0x01, 0x00000020 },
{ 0x00c500, 1, 0x01, 0x00000003 },
{ 0x01e100, 1, 0x01, 0x00000001 },
{ 0x001000, 1, 0x01, 0x00000002 },
{ 0x0006aa, 1, 0x01, 0x00000001 },
{ 0x0006ad, 2, 0x01, 0x00000100 },
{ 0x0006b1, 1, 0x01, 0x00000011 },
{ 0x00078c, 1, 0x01, 0x00000008 },
{ 0x000792, 1, 0x01, 0x00000001 },
{ 0x000794, 3, 0x01, 0x00000001 },
{ 0x000797, 1, 0x01, 0x000000cf },
{ 0x00079a, 1, 0x01, 0x00000002 },
{ 0x0007a1, 1, 0x01, 0x00000001 },
{ 0x0007a3, 3, 0x01, 0x00000001 },
{ 0x000831, 1, 0x01, 0x00000004 },
{ 0x01e100, 1, 0x01, 0x00000001 },
{ 0x001000, 1, 0x01, 0x00000008 },
{ 0x000039, 3, 0x01, 0x00000000 },
{ 0x000380, 1, 0x01, 0x00000001 },
{ 0x000366, 2, 0x01, 0x00000000 },
{ 0x000368, 1, 0x01, 0x00000fff },
{ 0x000370, 2, 0x01, 0x00000000 },
{ 0x000372, 1, 0x01, 0x000fffff },
{ 0x000813, 1, 0x01, 0x00000006 },
{ 0x000814, 1, 0x01, 0x00000008 },
{ 0x000957, 1, 0x01, 0x00000003 },
{ 0x000b07, 1, 0x01, 0x00000002 },
{ 0x000b08, 2, 0x01, 0x00000100 },
{ 0x000b0a, 1, 0x01, 0x00000001 },
{ 0x000a04, 1, 0x01, 0x000000ff },
{ 0x000a0b, 1, 0x01, 0x00000040 },
{ 0x00097f, 1, 0x01, 0x00000100 },
{ 0x000a02, 1, 0x01, 0x00000001 },
{ 0x000809, 1, 0x01, 0x00000007 },
{ 0x00c221, 1, 0x01, 0x00000040 },
{ 0x00c401, 1, 0x01, 0x00000001 },
{ 0x00c402, 1, 0x01, 0x00010001 },
{ 0x00c403, 2, 0x01, 0x00000001 },
{ 0x00c40e, 1, 0x01, 0x00000020 },
{ 0x00c500, 1, 0x01, 0x00000003 },
{ 0x01e100, 1, 0x01, 0x00000001 },
{ 0x001000, 1, 0x01, 0x00000001 },
{ 0x000b07, 1, 0x01, 0x00000002 },
{ 0x000b08, 2, 0x01, 0x00000100 },
{ 0x000b0a, 1, 0x01, 0x00000001 },
{ 0x01e100, 1, 0x01, 0x00000001 },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_a197[] = {
{ 0x000800, 1, 0x04, 0x00000000 },
{ 0x000840, 1, 0x04, 0x00000000 },
{ 0x000880, 1, 0x04, 0x00000000 },
{ 0x0008c0, 1, 0x04, 0x00000000 },
{ 0x000900, 1, 0x04, 0x00000000 },
{ 0x000940, 1, 0x04, 0x00000000 },
{ 0x000980, 1, 0x04, 0x00000000 },
{ 0x0009c0, 1, 0x04, 0x00000000 },
{ 0x000804, 1, 0x04, 0x00000000 },
{ 0x000844, 1, 0x04, 0x00000000 },
{ 0x000884, 1, 0x04, 0x00000000 },
{ 0x0008c4, 1, 0x04, 0x00000000 },
{ 0x000904, 1, 0x04, 0x00000000 },
{ 0x000944, 1, 0x04, 0x00000000 },
{ 0x000984, 1, 0x04, 0x00000000 },
{ 0x0009c4, 1, 0x04, 0x00000000 },
{ 0x000808, 1, 0x04, 0x00000400 },
{ 0x000848, 1, 0x04, 0x00000400 },
{ 0x000888, 1, 0x04, 0x00000400 },
{ 0x0008c8, 1, 0x04, 0x00000400 },
{ 0x000908, 1, 0x04, 0x00000400 },
{ 0x000948, 1, 0x04, 0x00000400 },
{ 0x000988, 1, 0x04, 0x00000400 },
{ 0x0009c8, 1, 0x04, 0x00000400 },
{ 0x00080c, 1, 0x04, 0x00000300 },
{ 0x00084c, 1, 0x04, 0x00000300 },
{ 0x00088c, 1, 0x04, 0x00000300 },
{ 0x0008cc, 1, 0x04, 0x00000300 },
{ 0x00090c, 1, 0x04, 0x00000300 },
{ 0x00094c, 1, 0x04, 0x00000300 },
{ 0x00098c, 1, 0x04, 0x00000300 },
{ 0x0009cc, 1, 0x04, 0x00000300 },
{ 0x000810, 1, 0x04, 0x000000cf },
{ 0x000850, 1, 0x04, 0x00000000 },
{ 0x000890, 1, 0x04, 0x00000000 },
{ 0x0008d0, 1, 0x04, 0x00000000 },
{ 0x000910, 1, 0x04, 0x00000000 },
{ 0x000950, 1, 0x04, 0x00000000 },
{ 0x000990, 1, 0x04, 0x00000000 },
{ 0x0009d0, 1, 0x04, 0x00000000 },
{ 0x000814, 1, 0x04, 0x00000040 },
{ 0x000854, 1, 0x04, 0x00000040 },
{ 0x000894, 1, 0x04, 0x00000040 },
{ 0x0008d4, 1, 0x04, 0x00000040 },
{ 0x000914, 1, 0x04, 0x00000040 },
{ 0x000954, 1, 0x04, 0x00000040 },
{ 0x000994, 1, 0x04, 0x00000040 },
{ 0x0009d4, 1, 0x04, 0x00000040 },
{ 0x000818, 1, 0x04, 0x00000001 },
{ 0x000858, 1, 0x04, 0x00000001 },
{ 0x000898, 1, 0x04, 0x00000001 },
{ 0x0008d8, 1, 0x04, 0x00000001 },
{ 0x000918, 1, 0x04, 0x00000001 },
{ 0x000958, 1, 0x04, 0x00000001 },
{ 0x000998, 1, 0x04, 0x00000001 },
{ 0x0009d8, 1, 0x04, 0x00000001 },
{ 0x00081c, 1, 0x04, 0x00000000 },
{ 0x00085c, 1, 0x04, 0x00000000 },
{ 0x00089c, 1, 0x04, 0x00000000 },
{ 0x0008dc, 1, 0x04, 0x00000000 },
{ 0x00091c, 1, 0x04, 0x00000000 },
{ 0x00095c, 1, 0x04, 0x00000000 },
{ 0x00099c, 1, 0x04, 0x00000000 },
{ 0x0009dc, 1, 0x04, 0x00000000 },
{ 0x000820, 1, 0x04, 0x00000000 },
{ 0x000860, 1, 0x04, 0x00000000 },
{ 0x0008a0, 1, 0x04, 0x00000000 },
{ 0x0008e0, 1, 0x04, 0x00000000 },
{ 0x000920, 1, 0x04, 0x00000000 },
{ 0x000960, 1, 0x04, 0x00000000 },
{ 0x0009a0, 1, 0x04, 0x00000000 },
{ 0x0009e0, 1, 0x04, 0x00000000 },
{ 0x001c00, 1, 0x04, 0x00000000 },
{ 0x001c10, 1, 0x04, 0x00000000 },
{ 0x001c20, 1, 0x04, 0x00000000 },
{ 0x001c30, 1, 0x04, 0x00000000 },
{ 0x001c40, 1, 0x04, 0x00000000 },
{ 0x001c50, 1, 0x04, 0x00000000 },
{ 0x001c60, 1, 0x04, 0x00000000 },
{ 0x001c70, 1, 0x04, 0x00000000 },
{ 0x001c80, 1, 0x04, 0x00000000 },
{ 0x001c90, 1, 0x04, 0x00000000 },
{ 0x001ca0, 1, 0x04, 0x00000000 },
{ 0x001cb0, 1, 0x04, 0x00000000 },
{ 0x001cc0, 1, 0x04, 0x00000000 },
{ 0x001cd0, 1, 0x04, 0x00000000 },
{ 0x001ce0, 1, 0x04, 0x00000000 },
{ 0x001cf0, 1, 0x04, 0x00000000 },
{ 0x001c04, 1, 0x04, 0x00000000 },
{ 0x001c14, 1, 0x04, 0x00000000 },
{ 0x001c24, 1, 0x04, 0x00000000 },
{ 0x001c34, 1, 0x04, 0x00000000 },
{ 0x001c44, 1, 0x04, 0x00000000 },
{ 0x001c54, 1, 0x04, 0x00000000 },
{ 0x001c64, 1, 0x04, 0x00000000 },
{ 0x001c74, 1, 0x04, 0x00000000 },
{ 0x001c84, 1, 0x04, 0x00000000 },
{ 0x001c94, 1, 0x04, 0x00000000 },
{ 0x001ca4, 1, 0x04, 0x00000000 },
{ 0x001cb4, 1, 0x04, 0x00000000 },
{ 0x001cc4, 1, 0x04, 0x00000000 },
{ 0x001cd4, 1, 0x04, 0x00000000 },
{ 0x001ce4, 1, 0x04, 0x00000000 },
{ 0x001cf4, 1, 0x04, 0x00000000 },
{ 0x001c08, 1, 0x04, 0x00000000 },
{ 0x001c18, 1, 0x04, 0x00000000 },
{ 0x001c28, 1, 0x04, 0x00000000 },
{ 0x001c38, 1, 0x04, 0x00000000 },
{ 0x001c48, 1, 0x04, 0x00000000 },
{ 0x001c58, 1, 0x04, 0x00000000 },
{ 0x001c68, 1, 0x04, 0x00000000 },
{ 0x001c78, 1, 0x04, 0x00000000 },
{ 0x001c88, 1, 0x04, 0x00000000 },
{ 0x001c98, 1, 0x04, 0x00000000 },
{ 0x001ca8, 1, 0x04, 0x00000000 },
{ 0x001cb8, 1, 0x04, 0x00000000 },
{ 0x001cc8, 1, 0x04, 0x00000000 },
{ 0x001cd8, 1, 0x04, 0x00000000 },
{ 0x001ce8, 1, 0x04, 0x00000000 },
{ 0x001cf8, 1, 0x04, 0x00000000 },
{ 0x001c0c, 1, 0x04, 0x00000000 },
{ 0x001c1c, 1, 0x04, 0x00000000 },
{ 0x001c2c, 1, 0x04, 0x00000000 },
{ 0x001c3c, 1, 0x04, 0x00000000 },
{ 0x001c4c, 1, 0x04, 0x00000000 },
{ 0x001c5c, 1, 0x04, 0x00000000 },
{ 0x001c6c, 1, 0x04, 0x00000000 },
{ 0x001c7c, 1, 0x04, 0x00000000 },
{ 0x001c8c, 1, 0x04, 0x00000000 },
{ 0x001c9c, 1, 0x04, 0x00000000 },
{ 0x001cac, 1, 0x04, 0x00000000 },
{ 0x001cbc, 1, 0x04, 0x00000000 },
{ 0x001ccc, 1, 0x04, 0x00000000 },
{ 0x001cdc, 1, 0x04, 0x00000000 },
{ 0x001cec, 1, 0x04, 0x00000000 },
{ 0x001cfc, 2, 0x04, 0x00000000 },
{ 0x001d10, 1, 0x04, 0x00000000 },
{ 0x001d20, 1, 0x04, 0x00000000 },
{ 0x001d30, 1, 0x04, 0x00000000 },
{ 0x001d40, 1, 0x04, 0x00000000 },
{ 0x001d50, 1, 0x04, 0x00000000 },
{ 0x001d60, 1, 0x04, 0x00000000 },
{ 0x001d70, 1, 0x04, 0x00000000 },
{ 0x001d80, 1, 0x04, 0x00000000 },
{ 0x001d90, 1, 0x04, 0x00000000 },
{ 0x001da0, 1, 0x04, 0x00000000 },
{ 0x001db0, 1, 0x04, 0x00000000 },
{ 0x001dc0, 1, 0x04, 0x00000000 },
{ 0x001dd0, 1, 0x04, 0x00000000 },
{ 0x001de0, 1, 0x04, 0x00000000 },
{ 0x001df0, 1, 0x04, 0x00000000 },
{ 0x001d04, 1, 0x04, 0x00000000 },
{ 0x001d14, 1, 0x04, 0x00000000 },
{ 0x001d24, 1, 0x04, 0x00000000 },
{ 0x001d34, 1, 0x04, 0x00000000 },
{ 0x001d44, 1, 0x04, 0x00000000 },
{ 0x001d54, 1, 0x04, 0x00000000 },
{ 0x001d64, 1, 0x04, 0x00000000 },
{ 0x001d74, 1, 0x04, 0x00000000 },
{ 0x001d84, 1, 0x04, 0x00000000 },
{ 0x001d94, 1, 0x04, 0x00000000 },
{ 0x001da4, 1, 0x04, 0x00000000 },
{ 0x001db4, 1, 0x04, 0x00000000 },
{ 0x001dc4, 1, 0x04, 0x00000000 },
{ 0x001dd4, 1, 0x04, 0x00000000 },
{ 0x001de4, 1, 0x04, 0x00000000 },
{ 0x001df4, 1, 0x04, 0x00000000 },
{ 0x001d08, 1, 0x04, 0x00000000 },
{ 0x001d18, 1, 0x04, 0x00000000 },
{ 0x001d28, 1, 0x04, 0x00000000 },
{ 0x001d38, 1, 0x04, 0x00000000 },
{ 0x001d48, 1, 0x04, 0x00000000 },
{ 0x001d58, 1, 0x04, 0x00000000 },
{ 0x001d68, 1, 0x04, 0x00000000 },
{ 0x001d78, 1, 0x04, 0x00000000 },
{ 0x001d88, 1, 0x04, 0x00000000 },
{ 0x001d98, 1, 0x04, 0x00000000 },
{ 0x001da8, 1, 0x04, 0x00000000 },
{ 0x001db8, 1, 0x04, 0x00000000 },
{ 0x001dc8, 1, 0x04, 0x00000000 },
{ 0x001dd8, 1, 0x04, 0x00000000 },
{ 0x001de8, 1, 0x04, 0x00000000 },
{ 0x001df8, 1, 0x04, 0x00000000 },
{ 0x001d0c, 1, 0x04, 0x00000000 },
{ 0x001d1c, 1, 0x04, 0x00000000 },
{ 0x001d2c, 1, 0x04, 0x00000000 },
{ 0x001d3c, 1, 0x04, 0x00000000 },
{ 0x001d4c, 1, 0x04, 0x00000000 },
{ 0x001d5c, 1, 0x04, 0x00000000 },
{ 0x001d6c, 1, 0x04, 0x00000000 },
{ 0x001d7c, 1, 0x04, 0x00000000 },
{ 0x001d8c, 1, 0x04, 0x00000000 },
{ 0x001d9c, 1, 0x04, 0x00000000 },
{ 0x001dac, 1, 0x04, 0x00000000 },
{ 0x001dbc, 1, 0x04, 0x00000000 },
{ 0x001dcc, 1, 0x04, 0x00000000 },
{ 0x001ddc, 1, 0x04, 0x00000000 },
{ 0x001dec, 1, 0x04, 0x00000000 },
{ 0x001dfc, 1, 0x04, 0x00000000 },
{ 0x001f00, 1, 0x04, 0x00000000 },
{ 0x001f08, 1, 0x04, 0x00000000 },
{ 0x001f10, 1, 0x04, 0x00000000 },
{ 0x001f18, 1, 0x04, 0x00000000 },
{ 0x001f20, 1, 0x04, 0x00000000 },
{ 0x001f28, 1, 0x04, 0x00000000 },
{ 0x001f30, 1, 0x04, 0x00000000 },
{ 0x001f38, 1, 0x04, 0x00000000 },
{ 0x001f40, 1, 0x04, 0x00000000 },
{ 0x001f48, 1, 0x04, 0x00000000 },
{ 0x001f50, 1, 0x04, 0x00000000 },
{ 0x001f58, 1, 0x04, 0x00000000 },
{ 0x001f60, 1, 0x04, 0x00000000 },
{ 0x001f68, 1, 0x04, 0x00000000 },
{ 0x001f70, 1, 0x04, 0x00000000 },
{ 0x001f78, 1, 0x04, 0x00000000 },
{ 0x001f04, 1, 0x04, 0x00000000 },
{ 0x001f0c, 1, 0x04, 0x00000000 },
{ 0x001f14, 1, 0x04, 0x00000000 },
{ 0x001f1c, 1, 0x04, 0x00000000 },
{ 0x001f24, 1, 0x04, 0x00000000 },
{ 0x001f2c, 1, 0x04, 0x00000000 },
{ 0x001f34, 1, 0x04, 0x00000000 },
{ 0x001f3c, 1, 0x04, 0x00000000 },
{ 0x001f44, 1, 0x04, 0x00000000 },
{ 0x001f4c, 1, 0x04, 0x00000000 },
{ 0x001f54, 1, 0x04, 0x00000000 },
{ 0x001f5c, 1, 0x04, 0x00000000 },
{ 0x001f64, 1, 0x04, 0x00000000 },
{ 0x001f6c, 1, 0x04, 0x00000000 },
{ 0x001f74, 1, 0x04, 0x00000000 },
{ 0x001f7c, 2, 0x04, 0x00000000 },
{ 0x001f88, 1, 0x04, 0x00000000 },
{ 0x001f90, 1, 0x04, 0x00000000 },
{ 0x001f98, 1, 0x04, 0x00000000 },
{ 0x001fa0, 1, 0x04, 0x00000000 },
{ 0x001fa8, 1, 0x04, 0x00000000 },
{ 0x001fb0, 1, 0x04, 0x00000000 },
{ 0x001fb8, 1, 0x04, 0x00000000 },
{ 0x001fc0, 1, 0x04, 0x00000000 },
{ 0x001fc8, 1, 0x04, 0x00000000 },
{ 0x001fd0, 1, 0x04, 0x00000000 },
{ 0x001fd8, 1, 0x04, 0x00000000 },
{ 0x001fe0, 1, 0x04, 0x00000000 },
{ 0x001fe8, 1, 0x04, 0x00000000 },
{ 0x001ff0, 1, 0x04, 0x00000000 },
{ 0x001ff8, 1, 0x04, 0x00000000 },
{ 0x001f84, 1, 0x04, 0x00000000 },
{ 0x001f8c, 1, 0x04, 0x00000000 },
{ 0x001f94, 1, 0x04, 0x00000000 },
{ 0x001f9c, 1, 0x04, 0x00000000 },
{ 0x001fa4, 1, 0x04, 0x00000000 },
{ 0x001fac, 1, 0x04, 0x00000000 },
{ 0x001fb4, 1, 0x04, 0x00000000 },
{ 0x001fbc, 1, 0x04, 0x00000000 },
{ 0x001fc4, 1, 0x04, 0x00000000 },
{ 0x001fcc, 1, 0x04, 0x00000000 },
{ 0x001fd4, 1, 0x04, 0x00000000 },
{ 0x001fdc, 1, 0x04, 0x00000000 },
{ 0x001fe4, 1, 0x04, 0x00000000 },
{ 0x001fec, 1, 0x04, 0x00000000 },
{ 0x001ff4, 1, 0x04, 0x00000000 },
{ 0x001ffc, 2, 0x04, 0x00000000 },
{ 0x002040, 1, 0x04, 0x00000011 },
{ 0x002080, 1, 0x04, 0x00000020 },
{ 0x0020c0, 1, 0x04, 0x00000030 },
{ 0x002100, 1, 0x04, 0x00000040 },
{ 0x002140, 1, 0x04, 0x00000051 },
{ 0x00200c, 1, 0x04, 0x00000001 },
{ 0x00204c, 1, 0x04, 0x00000001 },
{ 0x00208c, 1, 0x04, 0x00000001 },
{ 0x0020cc, 1, 0x04, 0x00000001 },
{ 0x00210c, 1, 0x04, 0x00000001 },
{ 0x00214c, 1, 0x04, 0x00000001 },
{ 0x002010, 1, 0x04, 0x00000000 },
{ 0x002050, 1, 0x04, 0x00000000 },
{ 0x002090, 1, 0x04, 0x00000001 },
{ 0x0020d0, 1, 0x04, 0x00000002 },
{ 0x002110, 1, 0x04, 0x00000003 },
{ 0x002150, 1, 0x04, 0x00000004 },
{ 0x000380, 1, 0x04, 0x00000000 },
{ 0x0003a0, 1, 0x04, 0x00000000 },
{ 0x0003c0, 1, 0x04, 0x00000000 },
{ 0x0003e0, 1, 0x04, 0x00000000 },
{ 0x000384, 1, 0x04, 0x00000000 },
{ 0x0003a4, 1, 0x04, 0x00000000 },
{ 0x0003c4, 1, 0x04, 0x00000000 },
{ 0x0003e4, 1, 0x04, 0x00000000 },
{ 0x000388, 1, 0x04, 0x00000000 },
{ 0x0003a8, 1, 0x04, 0x00000000 },
{ 0x0003c8, 1, 0x04, 0x00000000 },
{ 0x0003e8, 1, 0x04, 0x00000000 },
{ 0x00038c, 1, 0x04, 0x00000000 },
{ 0x0003ac, 1, 0x04, 0x00000000 },
{ 0x0003cc, 1, 0x04, 0x00000000 },
{ 0x0003ec, 1, 0x04, 0x00000000 },
{ 0x000700, 1, 0x04, 0x00000000 },
{ 0x000710, 1, 0x04, 0x00000000 },
{ 0x000720, 1, 0x04, 0x00000000 },
{ 0x000730, 1, 0x04, 0x00000000 },
{ 0x000704, 1, 0x04, 0x00000000 },
{ 0x000714, 1, 0x04, 0x00000000 },
{ 0x000724, 1, 0x04, 0x00000000 },
{ 0x000734, 1, 0x04, 0x00000000 },
{ 0x000708, 1, 0x04, 0x00000000 },
{ 0x000718, 1, 0x04, 0x00000000 },
{ 0x000728, 1, 0x04, 0x00000000 },
{ 0x000738, 1, 0x04, 0x00000000 },
{ 0x002800, 128, 0x04, 0x00000000 },
{ 0x000a00, 1, 0x04, 0x00000000 },
{ 0x000a20, 1, 0x04, 0x00000000 },
{ 0x000a40, 1, 0x04, 0x00000000 },
{ 0x000a60, 1, 0x04, 0x00000000 },
{ 0x000a80, 1, 0x04, 0x00000000 },
{ 0x000aa0, 1, 0x04, 0x00000000 },
{ 0x000ac0, 1, 0x04, 0x00000000 },
{ 0x000ae0, 1, 0x04, 0x00000000 },
{ 0x000b00, 1, 0x04, 0x00000000 },
{ 0x000b20, 1, 0x04, 0x00000000 },
{ 0x000b40, 1, 0x04, 0x00000000 },
{ 0x000b60, 1, 0x04, 0x00000000 },
{ 0x000b80, 1, 0x04, 0x00000000 },
{ 0x000ba0, 1, 0x04, 0x00000000 },
{ 0x000bc0, 1, 0x04, 0x00000000 },
{ 0x000be0, 1, 0x04, 0x00000000 },
{ 0x000a04, 1, 0x04, 0x00000000 },
{ 0x000a24, 1, 0x04, 0x00000000 },
{ 0x000a44, 1, 0x04, 0x00000000 },
{ 0x000a64, 1, 0x04, 0x00000000 },
{ 0x000a84, 1, 0x04, 0x00000000 },
{ 0x000aa4, 1, 0x04, 0x00000000 },
{ 0x000ac4, 1, 0x04, 0x00000000 },
{ 0x000ae4, 1, 0x04, 0x00000000 },
{ 0x000b04, 1, 0x04, 0x00000000 },
{ 0x000b24, 1, 0x04, 0x00000000 },
{ 0x000b44, 1, 0x04, 0x00000000 },
{ 0x000b64, 1, 0x04, 0x00000000 },
{ 0x000b84, 1, 0x04, 0x00000000 },
{ 0x000ba4, 1, 0x04, 0x00000000 },
{ 0x000bc4, 1, 0x04, 0x00000000 },
{ 0x000be4, 1, 0x04, 0x00000000 },
{ 0x000a08, 1, 0x04, 0x00000000 },
{ 0x000a28, 1, 0x04, 0x00000000 },
{ 0x000a48, 1, 0x04, 0x00000000 },
{ 0x000a68, 1, 0x04, 0x00000000 },
{ 0x000a88, 1, 0x04, 0x00000000 },
{ 0x000aa8, 1, 0x04, 0x00000000 },
{ 0x000ac8, 1, 0x04, 0x00000000 },
{ 0x000ae8, 1, 0x04, 0x00000000 },
{ 0x000b08, 1, 0x04, 0x00000000 },
{ 0x000b28, 1, 0x04, 0x00000000 },
{ 0x000b48, 1, 0x04, 0x00000000 },
{ 0x000b68, 1, 0x04, 0x00000000 },
{ 0x000b88, 1, 0x04, 0x00000000 },
{ 0x000ba8, 1, 0x04, 0x00000000 },
{ 0x000bc8, 1, 0x04, 0x00000000 },
{ 0x000be8, 1, 0x04, 0x00000000 },
{ 0x000a0c, 1, 0x04, 0x00000000 },
{ 0x000a2c, 1, 0x04, 0x00000000 },
{ 0x000a4c, 1, 0x04, 0x00000000 },
{ 0x000a6c, 1, 0x04, 0x00000000 },
{ 0x000a8c, 1, 0x04, 0x00000000 },
{ 0x000aac, 1, 0x04, 0x00000000 },
{ 0x000acc, 1, 0x04, 0x00000000 },
{ 0x000aec, 1, 0x04, 0x00000000 },
{ 0x000b0c, 1, 0x04, 0x00000000 },
{ 0x000b2c, 1, 0x04, 0x00000000 },
{ 0x000b4c, 1, 0x04, 0x00000000 },
{ 0x000b6c, 1, 0x04, 0x00000000 },
{ 0x000b8c, 1, 0x04, 0x00000000 },
{ 0x000bac, 1, 0x04, 0x00000000 },
{ 0x000bcc, 1, 0x04, 0x00000000 },
{ 0x000bec, 1, 0x04, 0x00000000 },
{ 0x000a10, 1, 0x04, 0x00000000 },
{ 0x000a30, 1, 0x04, 0x00000000 },
{ 0x000a50, 1, 0x04, 0x00000000 },
{ 0x000a70, 1, 0x04, 0x00000000 },
{ 0x000a90, 1, 0x04, 0x00000000 },
{ 0x000ab0, 1, 0x04, 0x00000000 },
{ 0x000ad0, 1, 0x04, 0x00000000 },
{ 0x000af0, 1, 0x04, 0x00000000 },
{ 0x000b10, 1, 0x04, 0x00000000 },
{ 0x000b30, 1, 0x04, 0x00000000 },
{ 0x000b50, 1, 0x04, 0x00000000 },
{ 0x000b70, 1, 0x04, 0x00000000 },
{ 0x000b90, 1, 0x04, 0x00000000 },
{ 0x000bb0, 1, 0x04, 0x00000000 },
{ 0x000bd0, 1, 0x04, 0x00000000 },
{ 0x000bf0, 1, 0x04, 0x00000000 },
{ 0x000a14, 1, 0x04, 0x00000000 },
{ 0x000a34, 1, 0x04, 0x00000000 },
{ 0x000a54, 1, 0x04, 0x00000000 },
{ 0x000a74, 1, 0x04, 0x00000000 },
{ 0x000a94, 1, 0x04, 0x00000000 },
{ 0x000ab4, 1, 0x04, 0x00000000 },
{ 0x000ad4, 1, 0x04, 0x00000000 },
{ 0x000af4, 1, 0x04, 0x00000000 },
{ 0x000b14, 1, 0x04, 0x00000000 },
{ 0x000b34, 1, 0x04, 0x00000000 },
{ 0x000b54, 1, 0x04, 0x00000000 },
{ 0x000b74, 1, 0x04, 0x00000000 },
{ 0x000b94, 1, 0x04, 0x00000000 },
{ 0x000bb4, 1, 0x04, 0x00000000 },
{ 0x000bd4, 1, 0x04, 0x00000000 },
{ 0x000bf4, 1, 0x04, 0x00000000 },
{ 0x000c00, 1, 0x04, 0x00000000 },
{ 0x000c10, 1, 0x04, 0x00000000 },
{ 0x000c20, 1, 0x04, 0x00000000 },
{ 0x000c30, 1, 0x04, 0x00000000 },
{ 0x000c40, 1, 0x04, 0x00000000 },
{ 0x000c50, 1, 0x04, 0x00000000 },
{ 0x000c60, 1, 0x04, 0x00000000 },
{ 0x000c70, 1, 0x04, 0x00000000 },
{ 0x000c80, 1, 0x04, 0x00000000 },
{ 0x000c90, 1, 0x04, 0x00000000 },
{ 0x000ca0, 1, 0x04, 0x00000000 },
{ 0x000cb0, 1, 0x04, 0x00000000 },
{ 0x000cc0, 1, 0x04, 0x00000000 },
{ 0x000cd0, 1, 0x04, 0x00000000 },
{ 0x000ce0, 1, 0x04, 0x00000000 },
{ 0x000cf0, 1, 0x04, 0x00000000 },
{ 0x000c04, 1, 0x04, 0x00000000 },
{ 0x000c14, 1, 0x04, 0x00000000 },
{ 0x000c24, 1, 0x04, 0x00000000 },
{ 0x000c34, 1, 0x04, 0x00000000 },
{ 0x000c44, 1, 0x04, 0x00000000 },
{ 0x000c54, 1, 0x04, 0x00000000 },
{ 0x000c64, 1, 0x04, 0x00000000 },
{ 0x000c74, 1, 0x04, 0x00000000 },
{ 0x000c84, 1, 0x04, 0x00000000 },
{ 0x000c94, 1, 0x04, 0x00000000 },
{ 0x000ca4, 1, 0x04, 0x00000000 },
{ 0x000cb4, 1, 0x04, 0x00000000 },
{ 0x000cc4, 1, 0x04, 0x00000000 },
{ 0x000cd4, 1, 0x04, 0x00000000 },
{ 0x000ce4, 1, 0x04, 0x00000000 },
{ 0x000cf4, 1, 0x04, 0x00000000 },
{ 0x000c08, 1, 0x04, 0x00000000 },
{ 0x000c18, 1, 0x04, 0x00000000 },
{ 0x000c28, 1, 0x04, 0x00000000 },
{ 0x000c38, 1, 0x04, 0x00000000 },
{ 0x000c48, 1, 0x04, 0x00000000 },
{ 0x000c58, 1, 0x04, 0x00000000 },
{ 0x000c68, 1, 0x04, 0x00000000 },
{ 0x000c78, 1, 0x04, 0x00000000 },
{ 0x000c88, 1, 0x04, 0x00000000 },
{ 0x000c98, 1, 0x04, 0x00000000 },
{ 0x000ca8, 1, 0x04, 0x00000000 },
{ 0x000cb8, 1, 0x04, 0x00000000 },
{ 0x000cc8, 1, 0x04, 0x00000000 },
{ 0x000cd8, 1, 0x04, 0x00000000 },
{ 0x000ce8, 1, 0x04, 0x00000000 },
{ 0x000cf8, 1, 0x04, 0x00000000 },
{ 0x000c0c, 1, 0x04, 0x3f800000 },
{ 0x000c1c, 1, 0x04, 0x3f800000 },
{ 0x000c2c, 1, 0x04, 0x3f800000 },
{ 0x000c3c, 1, 0x04, 0x3f800000 },
{ 0x000c4c, 1, 0x04, 0x3f800000 },
{ 0x000c5c, 1, 0x04, 0x3f800000 },
{ 0x000c6c, 1, 0x04, 0x3f800000 },
{ 0x000c7c, 1, 0x04, 0x3f800000 },
{ 0x000c8c, 1, 0x04, 0x3f800000 },
{ 0x000c9c, 1, 0x04, 0x3f800000 },
{ 0x000cac, 1, 0x04, 0x3f800000 },
{ 0x000cbc, 1, 0x04, 0x3f800000 },
{ 0x000ccc, 1, 0x04, 0x3f800000 },
{ 0x000cdc, 1, 0x04, 0x3f800000 },
{ 0x000cec, 1, 0x04, 0x3f800000 },
{ 0x000cfc, 1, 0x04, 0x3f800000 },
{ 0x000d00, 1, 0x04, 0xffff0000 },
{ 0x000d08, 1, 0x04, 0xffff0000 },
{ 0x000d10, 1, 0x04, 0xffff0000 },
{ 0x000d18, 1, 0x04, 0xffff0000 },
{ 0x000d20, 1, 0x04, 0xffff0000 },
{ 0x000d28, 1, 0x04, 0xffff0000 },
{ 0x000d30, 1, 0x04, 0xffff0000 },
{ 0x000d38, 1, 0x04, 0xffff0000 },
{ 0x000d04, 1, 0x04, 0xffff0000 },
{ 0x000d0c, 1, 0x04, 0xffff0000 },
{ 0x000d14, 1, 0x04, 0xffff0000 },
{ 0x000d1c, 1, 0x04, 0xffff0000 },
{ 0x000d24, 1, 0x04, 0xffff0000 },
{ 0x000d2c, 1, 0x04, 0xffff0000 },
{ 0x000d34, 1, 0x04, 0xffff0000 },
{ 0x000d3c, 1, 0x04, 0xffff0000 },
{ 0x000e00, 1, 0x04, 0x00000000 },
{ 0x000e10, 1, 0x04, 0x00000000 },
{ 0x000e20, 1, 0x04, 0x00000000 },
{ 0x000e30, 1, 0x04, 0x00000000 },
{ 0x000e40, 1, 0x04, 0x00000000 },
{ 0x000e50, 1, 0x04, 0x00000000 },
{ 0x000e60, 1, 0x04, 0x00000000 },
{ 0x000e70, 1, 0x04, 0x00000000 },
{ 0x000e80, 1, 0x04, 0x00000000 },
{ 0x000e90, 1, 0x04, 0x00000000 },
{ 0x000ea0, 1, 0x04, 0x00000000 },
{ 0x000eb0, 1, 0x04, 0x00000000 },
{ 0x000ec0, 1, 0x04, 0x00000000 },
{ 0x000ed0, 1, 0x04, 0x00000000 },
{ 0x000ee0, 1, 0x04, 0x00000000 },
{ 0x000ef0, 1, 0x04, 0x00000000 },
{ 0x000e04, 1, 0x04, 0xffff0000 },
{ 0x000e14, 1, 0x04, 0xffff0000 },
{ 0x000e24, 1, 0x04, 0xffff0000 },
{ 0x000e34, 1, 0x04, 0xffff0000 },
{ 0x000e44, 1, 0x04, 0xffff0000 },
{ 0x000e54, 1, 0x04, 0xffff0000 },
{ 0x000e64, 1, 0x04, 0xffff0000 },
{ 0x000e74, 1, 0x04, 0xffff0000 },
{ 0x000e84, 1, 0x04, 0xffff0000 },
{ 0x000e94, 1, 0x04, 0xffff0000 },
{ 0x000ea4, 1, 0x04, 0xffff0000 },
{ 0x000eb4, 1, 0x04, 0xffff0000 },
{ 0x000ec4, 1, 0x04, 0xffff0000 },
{ 0x000ed4, 1, 0x04, 0xffff0000 },
{ 0x000ee4, 1, 0x04, 0xffff0000 },
{ 0x000ef4, 1, 0x04, 0xffff0000 },
{ 0x000e08, 1, 0x04, 0xffff0000 },
{ 0x000e18, 1, 0x04, 0xffff0000 },
{ 0x000e28, 1, 0x04, 0xffff0000 },
{ 0x000e38, 1, 0x04, 0xffff0000 },
{ 0x000e48, 1, 0x04, 0xffff0000 },
{ 0x000e58, 1, 0x04, 0xffff0000 },
{ 0x000e68, 1, 0x04, 0xffff0000 },
{ 0x000e78, 1, 0x04, 0xffff0000 },
{ 0x000e88, 1, 0x04, 0xffff0000 },
{ 0x000e98, 1, 0x04, 0xffff0000 },
{ 0x000ea8, 1, 0x04, 0xffff0000 },
{ 0x000eb8, 1, 0x04, 0xffff0000 },
{ 0x000ec8, 1, 0x04, 0xffff0000 },
{ 0x000ed8, 1, 0x04, 0xffff0000 },
{ 0x000ee8, 1, 0x04, 0xffff0000 },
{ 0x000ef8, 1, 0x04, 0xffff0000 },
{ 0x000d40, 1, 0x04, 0x00000000 },
{ 0x000d48, 1, 0x04, 0x00000000 },
{ 0x000d50, 1, 0x04, 0x00000000 },
{ 0x000d58, 1, 0x04, 0x00000000 },
{ 0x000d44, 1, 0x04, 0x00000000 },
{ 0x000d4c, 1, 0x04, 0x00000000 },
{ 0x000d54, 1, 0x04, 0x00000000 },
{ 0x000d5c, 1, 0x04, 0x00000000 },
{ 0x001e00, 1, 0x04, 0x00000001 },
{ 0x001e20, 1, 0x04, 0x00000001 },
{ 0x001e40, 1, 0x04, 0x00000001 },
{ 0x001e60, 1, 0x04, 0x00000001 },
{ 0x001e80, 1, 0x04, 0x00000001 },
{ 0x001ea0, 1, 0x04, 0x00000001 },
{ 0x001ec0, 1, 0x04, 0x00000001 },
{ 0x001ee0, 1, 0x04, 0x00000001 },
{ 0x001e04, 1, 0x04, 0x00000001 },
{ 0x001e24, 1, 0x04, 0x00000001 },
{ 0x001e44, 1, 0x04, 0x00000001 },
{ 0x001e64, 1, 0x04, 0x00000001 },
{ 0x001e84, 1, 0x04, 0x00000001 },
{ 0x001ea4, 1, 0x04, 0x00000001 },
{ 0x001ec4, 1, 0x04, 0x00000001 },
{ 0x001ee4, 1, 0x04, 0x00000001 },
{ 0x001e08, 1, 0x04, 0x00000002 },
{ 0x001e28, 1, 0x04, 0x00000002 },
{ 0x001e48, 1, 0x04, 0x00000002 },
{ 0x001e68, 1, 0x04, 0x00000002 },
{ 0x001e88, 1, 0x04, 0x00000002 },
{ 0x001ea8, 1, 0x04, 0x00000002 },
{ 0x001ec8, 1, 0x04, 0x00000002 },
{ 0x001ee8, 1, 0x04, 0x00000002 },
{ 0x001e0c, 1, 0x04, 0x00000001 },
{ 0x001e2c, 1, 0x04, 0x00000001 },
{ 0x001e4c, 1, 0x04, 0x00000001 },
{ 0x001e6c, 1, 0x04, 0x00000001 },
{ 0x001e8c, 1, 0x04, 0x00000001 },
{ 0x001eac, 1, 0x04, 0x00000001 },
{ 0x001ecc, 1, 0x04, 0x00000001 },
{ 0x001eec, 1, 0x04, 0x00000001 },
{ 0x001e10, 1, 0x04, 0x00000001 },
{ 0x001e30, 1, 0x04, 0x00000001 },
{ 0x001e50, 1, 0x04, 0x00000001 },
{ 0x001e70, 1, 0x04, 0x00000001 },
{ 0x001e90, 1, 0x04, 0x00000001 },
{ 0x001eb0, 1, 0x04, 0x00000001 },
{ 0x001ed0, 1, 0x04, 0x00000001 },
{ 0x001ef0, 1, 0x04, 0x00000001 },
{ 0x001e14, 1, 0x04, 0x00000002 },
{ 0x001e34, 1, 0x04, 0x00000002 },
{ 0x001e54, 1, 0x04, 0x00000002 },
{ 0x001e74, 1, 0x04, 0x00000002 },
{ 0x001e94, 1, 0x04, 0x00000002 },
{ 0x001eb4, 1, 0x04, 0x00000002 },
{ 0x001ed4, 1, 0x04, 0x00000002 },
{ 0x001ef4, 1, 0x04, 0x00000002 },
{ 0x001e18, 1, 0x04, 0x00000001 },
{ 0x001e38, 1, 0x04, 0x00000001 },
{ 0x001e58, 1, 0x04, 0x00000001 },
{ 0x001e78, 1, 0x04, 0x00000001 },
{ 0x001e98, 1, 0x04, 0x00000001 },
{ 0x001eb8, 1, 0x04, 0x00000001 },
{ 0x001ed8, 1, 0x04, 0x00000001 },
{ 0x001ef8, 1, 0x04, 0x00000001 },
{ 0x003400, 128, 0x04, 0x00000000 },
{ 0x00030c, 1, 0x04, 0x00000001 },
{ 0x001944, 1, 0x04, 0x00000000 },
{ 0x001514, 1, 0x04, 0x00000000 },
{ 0x000d68, 1, 0x04, 0x0000ffff },
{ 0x00121c, 1, 0x04, 0x0fac6881 },
{ 0x000fac, 1, 0x04, 0x00000001 },
{ 0x001538, 1, 0x04, 0x00000001 },
{ 0x000fe0, 2, 0x04, 0x00000000 },
{ 0x000fe8, 1, 0x04, 0x00000014 },
{ 0x000fec, 1, 0x04, 0x00000040 },
{ 0x000ff0, 1, 0x04, 0x00000000 },
{ 0x00179c, 1, 0x04, 0x00000000 },
{ 0x001228, 1, 0x04, 0x00000400 },
{ 0x00122c, 1, 0x04, 0x00000300 },
{ 0x001230, 1, 0x04, 0x00010001 },
{ 0x0007f8, 1, 0x04, 0x00000000 },
{ 0x0015b4, 1, 0x04, 0x00000001 },
{ 0x0015cc, 1, 0x04, 0x00000000 },
{ 0x001534, 1, 0x04, 0x00000000 },
{ 0x000fb0, 1, 0x04, 0x00000000 },
{ 0x0015d0, 1, 0x04, 0x00000000 },
{ 0x00153c, 1, 0x04, 0x00000000 },
{ 0x0016b4, 1, 0x04, 0x00000003 },
{ 0x000fbc, 4, 0x04, 0x0000ffff },
{ 0x000df8, 2, 0x04, 0x00000000 },
{ 0x001948, 1, 0x04, 0x00000000 },
{ 0x001970, 1, 0x04, 0x00000001 },
{ 0x00161c, 1, 0x04, 0x000009f0 },
{ 0x000dcc, 1, 0x04, 0x00000010 },
{ 0x00163c, 1, 0x04, 0x00000000 },
{ 0x0015e4, 1, 0x04, 0x00000000 },
{ 0x001160, 32, 0x04, 0x25e00040 },
{ 0x001880, 32, 0x04, 0x00000000 },
{ 0x000f84, 2, 0x04, 0x00000000 },
{ 0x0017c8, 2, 0x04, 0x00000000 },
{ 0x0017d0, 1, 0x04, 0x000000ff },
{ 0x0017d4, 1, 0x04, 0xffffffff },
{ 0x0017d8, 1, 0x04, 0x00000002 },
{ 0x0017dc, 1, 0x04, 0x00000000 },
{ 0x0015f4, 2, 0x04, 0x00000000 },
{ 0x001434, 2, 0x04, 0x00000000 },
{ 0x000d74, 1, 0x04, 0x00000000 },
{ 0x000dec, 1, 0x04, 0x00000001 },
{ 0x0013a4, 1, 0x04, 0x00000000 },
{ 0x001318, 1, 0x04, 0x00000001 },
{ 0x001644, 1, 0x04, 0x00000000 },
{ 0x000748, 1, 0x04, 0x00000000 },
{ 0x000de8, 1, 0x04, 0x00000000 },
{ 0x001648, 1, 0x04, 0x00000000 },
{ 0x0012a4, 1, 0x04, 0x00000000 },
{ 0x001120, 4, 0x04, 0x00000000 },
{ 0x001118, 1, 0x04, 0x00000000 },
{ 0x00164c, 1, 0x04, 0x00000000 },
{ 0x001658, 1, 0x04, 0x00000000 },
{ 0x001910, 1, 0x04, 0x00000290 },
{ 0x001518, 1, 0x04, 0x00000000 },
{ 0x00165c, 1, 0x04, 0x00000001 },
{ 0x001520, 1, 0x04, 0x00000000 },
{ 0x001604, 1, 0x04, 0x00000000 },
{ 0x001570, 1, 0x04, 0x00000000 },
{ 0x0013b0, 2, 0x04, 0x3f800000 },
{ 0x00020c, 1, 0x04, 0x00000000 },
{ 0x001670, 1, 0x04, 0x30201000 },
{ 0x001674, 1, 0x04, 0x70605040 },
{ 0x001678, 1, 0x04, 0xb8a89888 },
{ 0x00167c, 1, 0x04, 0xf8e8d8c8 },
{ 0x00166c, 1, 0x04, 0x00000000 },
{ 0x001680, 1, 0x04, 0x00ffff00 },
{ 0x0012d0, 1, 0x04, 0x00000003 },
{ 0x0012d4, 1, 0x04, 0x00000002 },
{ 0x001684, 2, 0x04, 0x00000000 },
{ 0x000dac, 2, 0x04, 0x00001b02 },
{ 0x000db4, 1, 0x04, 0x00000000 },
{ 0x00168c, 1, 0x04, 0x00000000 },
{ 0x0015bc, 1, 0x04, 0x00000000 },
{ 0x00156c, 1, 0x04, 0x00000000 },
{ 0x00187c, 1, 0x04, 0x00000000 },
{ 0x001110, 1, 0x04, 0x00000001 },
{ 0x000dc0, 3, 0x04, 0x00000000 },
{ 0x001234, 1, 0x04, 0x00000000 },
{ 0x001690, 1, 0x04, 0x00000000 },
{ 0x0012ac, 1, 0x04, 0x00000001 },
{ 0x0002c4, 1, 0x04, 0x00000000 },
{ 0x000790, 5, 0x04, 0x00000000 },
{ 0x00077c, 1, 0x04, 0x00000000 },
{ 0x001000, 1, 0x04, 0x00000010 },
{ 0x0010fc, 1, 0x04, 0x00000000 },
{ 0x001290, 1, 0x04, 0x00000000 },
{ 0x000218, 1, 0x04, 0x00000010 },
{ 0x0012d8, 1, 0x04, 0x00000000 },
{ 0x0012dc, 1, 0x04, 0x00000010 },
{ 0x000d94, 1, 0x04, 0x00000001 },
{ 0x00155c, 2, 0x04, 0x00000000 },
{ 0x001564, 1, 0x04, 0x00000fff },
{ 0x001574, 2, 0x04, 0x00000000 },
{ 0x00157c, 1, 0x04, 0x000fffff },
{ 0x001354, 1, 0x04, 0x00000000 },
{ 0x001610, 1, 0x04, 0x00000012 },
{ 0x001608, 2, 0x04, 0x00000000 },
{ 0x00260c, 1, 0x04, 0x00000000 },
{ 0x0007ac, 1, 0x04, 0x00000000 },
{ 0x00162c, 1, 0x04, 0x00000003 },
{ 0x000210, 1, 0x04, 0x00000000 },
{ 0x000320, 1, 0x04, 0x00000000 },
{ 0x000324, 6, 0x04, 0x3f800000 },
{ 0x000750, 1, 0x04, 0x00000000 },
{ 0x000760, 1, 0x04, 0x39291909 },
{ 0x000764, 1, 0x04, 0x79695949 },
{ 0x000768, 1, 0x04, 0xb9a99989 },
{ 0x00076c, 1, 0x04, 0xf9e9d9c9 },
{ 0x000770, 1, 0x04, 0x30201000 },
{ 0x000774, 1, 0x04, 0x70605040 },
{ 0x000778, 1, 0x04, 0x00009080 },
{ 0x000780, 1, 0x04, 0x39291909 },
{ 0x000784, 1, 0x04, 0x79695949 },
{ 0x000788, 1, 0x04, 0xb9a99989 },
{ 0x00078c, 1, 0x04, 0xf9e9d9c9 },
{ 0x0007d0, 1, 0x04, 0x30201000 },
{ 0x0007d4, 1, 0x04, 0x70605040 },
{ 0x0007d8, 1, 0x04, 0x00009080 },
{ 0x00037c, 1, 0x04, 0x00000001 },
{ 0x000740, 2, 0x04, 0x00000000 },
{ 0x002600, 1, 0x04, 0x00000000 },
{ 0x001918, 1, 0x04, 0x00000000 },
{ 0x00191c, 1, 0x04, 0x00000900 },
{ 0x001920, 1, 0x04, 0x00000405 },
{ 0x001308, 1, 0x04, 0x00000001 },
{ 0x001924, 1, 0x04, 0x00000000 },
{ 0x0013ac, 1, 0x04, 0x00000000 },
{ 0x00192c, 1, 0x04, 0x00000001 },
{ 0x00193c, 1, 0x04, 0x00002c1c },
{ 0x000d7c, 1, 0x04, 0x00000000 },
{ 0x000f8c, 1, 0x04, 0x00000000 },
{ 0x0002c0, 1, 0x04, 0x00000001 },
{ 0x001510, 1, 0x04, 0x00000000 },
{ 0x001940, 1, 0x04, 0x00000000 },
{ 0x000ff4, 2, 0x04, 0x00000000 },
{ 0x00194c, 2, 0x04, 0x00000000 },
{ 0x001968, 1, 0x04, 0x00000000 },
{ 0x001590, 1, 0x04, 0x0000003f },
{ 0x0007e8, 4, 0x04, 0x00000000 },
{ 0x00196c, 1, 0x04, 0x00000011 },
{ 0x0002e4, 1, 0x04, 0x0000b001 },
{ 0x00036c, 2, 0x04, 0x00000000 },
{ 0x00197c, 1, 0x04, 0x00000000 },
{ 0x000fcc, 2, 0x04, 0x00000000 },
{ 0x0002d8, 1, 0x04, 0x00000040 },
{ 0x001980, 1, 0x04, 0x00000080 },
{ 0x001504, 1, 0x04, 0x00000080 },
{ 0x001984, 1, 0x04, 0x00000000 },
{ 0x000300, 1, 0x04, 0x00000001 },
{ 0x0013a8, 1, 0x04, 0x00000000 },
{ 0x0012ec, 1, 0x04, 0x00000000 },
{ 0x001310, 1, 0x04, 0x00000000 },
{ 0x001314, 1, 0x04, 0x00000001 },
{ 0x001380, 1, 0x04, 0x00000000 },
{ 0x001384, 4, 0x04, 0x00000001 },
{ 0x001394, 1, 0x04, 0x00000000 },
{ 0x00139c, 1, 0x04, 0x00000000 },
{ 0x001398, 1, 0x04, 0x00000000 },
{ 0x001594, 1, 0x04, 0x00000000 },
{ 0x001598, 4, 0x04, 0x00000001 },
{ 0x000f54, 3, 0x04, 0x00000000 },
{ 0x0019bc, 1, 0x04, 0x00000000 },
{ 0x000f9c, 2, 0x04, 0x00000000 },
{ 0x0012cc, 1, 0x04, 0x00000000 },
{ 0x0012e8, 1, 0x04, 0x00000000 },
{ 0x00130c, 1, 0x04, 0x00000001 },
{ 0x001360, 8, 0x04, 0x00000000 },
{ 0x00133c, 2, 0x04, 0x00000001 },
{ 0x001344, 1, 0x04, 0x00000002 },
{ 0x001348, 2, 0x04, 0x00000001 },
{ 0x001350, 1, 0x04, 0x00000002 },
{ 0x001358, 1, 0x04, 0x00000001 },
{ 0x0012e4, 1, 0x04, 0x00000000 },
{ 0x00131c, 4, 0x04, 0x00000000 },
{ 0x0019c0, 1, 0x04, 0x00000000 },
{ 0x001140, 1, 0x04, 0x00000000 },
{ 0x0019c4, 1, 0x04, 0x00000000 },
{ 0x0019c8, 1, 0x04, 0x00001500 },
{ 0x00135c, 1, 0x04, 0x00000000 },
{ 0x000f90, 1, 0x04, 0x00000000 },
{ 0x0019e0, 8, 0x04, 0x00000001 },
{ 0x0019cc, 1, 0x04, 0x00000001 },
{ 0x0015b8, 1, 0x04, 0x00000000 },
{ 0x001a00, 1, 0x04, 0x00001111 },
{ 0x001a04, 7, 0x04, 0x00000000 },
{ 0x000d6c, 2, 0x04, 0xffff0000 },
{ 0x0010f8, 1, 0x04, 0x00001010 },
{ 0x000d80, 5, 0x04, 0x00000000 },
{ 0x000da0, 1, 0x04, 0x00000000 },
{ 0x0007a4, 2, 0x04, 0x00000000 },
{ 0x001508, 1, 0x04, 0x80000000 },
{ 0x00150c, 1, 0x04, 0x40000000 },
{ 0x001668, 1, 0x04, 0x00000000 },
{ 0x000318, 2, 0x04, 0x00000008 },
{ 0x000d9c, 1, 0x04, 0x00000001 },
{ 0x000ddc, 1, 0x04, 0x00000002 },
{ 0x000374, 1, 0x04, 0x00000000 },
{ 0x000378, 1, 0x04, 0x00000020 },
{ 0x0007dc, 1, 0x04, 0x00000000 },
{ 0x00074c, 1, 0x04, 0x00000055 },
{ 0x001420, 1, 0x04, 0x00000003 },
{ 0x0017bc, 2, 0x04, 0x00000000 },
{ 0x0017c4, 1, 0x04, 0x00000001 },
{ 0x001008, 1, 0x04, 0x00000008 },
{ 0x00100c, 1, 0x04, 0x00000040 },
{ 0x001010, 1, 0x04, 0x0000012c },
{ 0x000d60, 1, 0x04, 0x00000040 },
{ 0x00075c, 1, 0x04, 0x00000003 },
{ 0x001018, 1, 0x04, 0x00000020 },
{ 0x00101c, 1, 0x04, 0x00000001 },
{ 0x001020, 1, 0x04, 0x00000020 },
{ 0x001024, 1, 0x04, 0x00000001 },
{ 0x001444, 3, 0x04, 0x00000000 },
{ 0x000360, 1, 0x04, 0x20164010 },
{ 0x000364, 1, 0x04, 0x00000020 },
{ 0x000368, 1, 0x04, 0x00000000 },
{ 0x000de4, 1, 0x04, 0x00000000 },
{ 0x000204, 1, 0x04, 0x00000006 },
{ 0x000208, 1, 0x04, 0x00000000 },
{ 0x0002cc, 2, 0x04, 0x003fffff },
{ 0x001220, 1, 0x04, 0x00000005 },
{ 0x000fdc, 1, 0x04, 0x00000000 },
{ 0x000f98, 1, 0x04, 0x00400008 },
{ 0x001284, 1, 0x04, 0x08000080 },
{ 0x001450, 1, 0x04, 0x00400008 },
{ 0x001454, 1, 0x04, 0x08000080 },
{ 0x000214, 1, 0x04, 0x00000000 },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_unk40xx[] = {
{ 0x404004, 8, 0x04, 0x00000000 },
{ 0x404024, 1, 0x04, 0x0000e000 },
{ 0x404028, 8, 0x04, 0x00000000 },
{ 0x4040a8, 8, 0x04, 0x00000000 },
{ 0x4040c8, 1, 0x04, 0xf800008f },
{ 0x4040d0, 6, 0x04, 0x00000000 },
{ 0x4040e8, 1, 0x04, 0x00001000 },
{ 0x4040f8, 1, 0x04, 0x00000000 },
{ 0x404100, 10, 0x04, 0x00000000 },
{ 0x404130, 2, 0x04, 0x00000000 },
{ 0x404138, 1, 0x04, 0x20000040 },
{ 0x404150, 1, 0x04, 0x0000002e },
{ 0x404154, 1, 0x04, 0x00000400 },
{ 0x404158, 1, 0x04, 0x00000200 },
{ 0x404164, 1, 0x04, 0x00000055 },
{ 0x40417c, 2, 0x04, 0x00000000 },
{ 0x404194, 1, 0x04, 0x01000700 },
{ 0x4041a0, 4, 0x04, 0x00000000 },
{ 0x404200, 1, 0x04, 0x0000a197 },
{ 0x404204, 1, 0x04, 0x0000a1c0 },
{ 0x404208, 1, 0x04, 0x0000a140 },
{ 0x40420c, 1, 0x04, 0x0000902d },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_unk58xx[] = {
{ 0x405800, 1, 0x04, 0x0f8000bf },
{ 0x405830, 1, 0x04, 0x02180648 },
{ 0x405834, 1, 0x04, 0x08000000 },
{ 0x405838, 1, 0x04, 0x00000000 },
{ 0x405854, 1, 0x04, 0x00000000 },
{ 0x405870, 4, 0x04, 0x00000001 },
{ 0x405a00, 2, 0x04, 0x00000000 },
{ 0x405a18, 1, 0x04, 0x00000000 },
{ 0x405a1c, 1, 0x04, 0x000000ff },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_unk64xx[] = {
{ 0x4064a8, 1, 0x04, 0x00000000 },
{ 0x4064ac, 1, 0x04, 0x00003fff },
{ 0x4064b0, 3, 0x04, 0x00000000 },
{ 0x4064c0, 1, 0x04, 0x802000f0 },
{ 0x4064c4, 1, 0x04, 0x0192ffff },
{ 0x4064c8, 1, 0x04, 0x00c20200 },
{ 0x4064cc, 9, 0x04, 0x00000000 },
{ 0x4064fc, 1, 0x04, 0x0000022a },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_unk78xx[] = {
{ 0x407804, 1, 0x04, 0x00000063 },
{ 0x40780c, 1, 0x04, 0x0a418820 },
{ 0x407810, 1, 0x04, 0x062080e6 },
{ 0x407814, 1, 0x04, 0x020398a4 },
{ 0x407818, 1, 0x04, 0x0e629062 },
{ 0x40781c, 1, 0x04, 0x0a418820 },
{ 0x407820, 1, 0x04, 0x000000e6 },
{ 0x4078bc, 1, 0x04, 0x00000103 },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_unk88xx[] = {
{ 0x408800, 1, 0x04, 0x32802a3c },
{ 0x408804, 1, 0x04, 0x00000040 },
{ 0x408808, 1, 0x04, 0x1003e005 },
{ 0x408840, 1, 0x04, 0x0000000b },
{ 0x408900, 1, 0x04, 0xb080b801 },
{ 0x408904, 1, 0x04, 0x62000001 },
{ 0x408908, 1, 0x04, 0x02c8102f },
{ 0x408980, 1, 0x04, 0x0000011d },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_gpc_0[] = {
{ 0x418380, 1, 0x04, 0x00000016 },
{ 0x418400, 1, 0x04, 0x38005e00 },
{ 0x418404, 1, 0x04, 0x71e0ffff },
{ 0x41840c, 1, 0x04, 0x00001008 },
{ 0x418410, 1, 0x04, 0x0fff0fff },
{ 0x418414, 1, 0x04, 0x02200fff },
{ 0x418450, 6, 0x04, 0x00000000 },
{ 0x418468, 1, 0x04, 0x00000001 },
{ 0x41846c, 2, 0x04, 0x00000000 },
{ 0x418600, 1, 0x04, 0x0000007f },
{ 0x418684, 1, 0x04, 0x0000001f },
{ 0x418700, 1, 0x04, 0x00000002 },
{ 0x418704, 2, 0x04, 0x00000080 },
{ 0x41870c, 2, 0x04, 0x00000000 },
{ 0x418800, 1, 0x04, 0x7006863a },
{ 0x418808, 1, 0x04, 0x00000000 },
{ 0x41880c, 1, 0x04, 0x00000030 },
{ 0x418810, 1, 0x04, 0x00000000 },
{ 0x418828, 1, 0x04, 0x00000044 },
{ 0x418830, 1, 0x04, 0x10000001 },
{ 0x4188d8, 1, 0x04, 0x00000008 },
{ 0x4188e0, 1, 0x04, 0x01000000 },
{ 0x4188e8, 5, 0x04, 0x00000000 },
{ 0x4188fc, 1, 0x04, 0x20100058 },
{ 0x41891c, 1, 0x04, 0x00ff00ff },
{ 0x418924, 1, 0x04, 0x00000000 },
{ 0x418928, 1, 0x04, 0x00ffff00 },
{ 0x41892c, 1, 0x04, 0x0000ff00 },
{ 0x418b00, 1, 0x04, 0x0000001e },
{ 0x418b08, 1, 0x04, 0x0a418820 },
{ 0x418b0c, 1, 0x04, 0x062080e6 },
{ 0x418b10, 1, 0x04, 0x020398a4 },
{ 0x418b14, 1, 0x04, 0x0e629062 },
{ 0x418b18, 1, 0x04, 0x0a418820 },
{ 0x418b1c, 1, 0x04, 0x000000e6 },
{ 0x418bb8, 1, 0x04, 0x00000103 },
{ 0x418c08, 1, 0x04, 0x00000001 },
{ 0x418c10, 8, 0x04, 0x00000000 },
{ 0x418c40, 1, 0x04, 0xffffffff },
{ 0x418c6c, 1, 0x04, 0x00000001 },
{ 0x418c80, 1, 0x04, 0x2020000c },
{ 0x418c8c, 1, 0x04, 0x00000001 },
{ 0x418d24, 1, 0x04, 0x00000000 },
{ 0x419000, 1, 0x04, 0x00000780 },
{ 0x419004, 2, 0x04, 0x00000000 },
{ 0x419014, 1, 0x04, 0x00000004 },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_tpc[] = {
{ 0x419848, 1, 0x04, 0x00000000 },
{ 0x419864, 1, 0x04, 0x00000129 },
{ 0x419888, 1, 0x04, 0x00000000 },
{ 0x419a00, 1, 0x04, 0x000100f0 },
{ 0x419a04, 1, 0x04, 0x00000001 },
{ 0x419a08, 1, 0x04, 0x00000421 },
{ 0x419a0c, 1, 0x04, 0x00120000 },
{ 0x419a10, 1, 0x04, 0x00000000 },
{ 0x419a14, 1, 0x04, 0x00000200 },
{ 0x419a1c, 1, 0x04, 0x0000c000 },
{ 0x419a20, 1, 0x04, 0x00000800 },
{ 0x419a30, 1, 0x04, 0x00000001 },
{ 0x419ac4, 1, 0x04, 0x0037f440 },
{ 0x419c00, 1, 0x04, 0x0000001a },
{ 0x419c04, 1, 0x04, 0x80000006 },
{ 0x419c08, 1, 0x04, 0x00000002 },
{ 0x419c20, 1, 0x04, 0x00000000 },
{ 0x419c24, 1, 0x04, 0x00084210 },
{ 0x419c28, 1, 0x04, 0x3efbefbe },
{ 0x419ce8, 1, 0x04, 0x00000000 },
{ 0x419cf4, 1, 0x04, 0x00000203 },
{ 0x419e04, 1, 0x04, 0x00000000 },
{ 0x419e08, 1, 0x04, 0x0000001d },
{ 0x419e0c, 1, 0x04, 0x00000000 },
{ 0x419e10, 1, 0x04, 0x00001c02 },
{ 0x419e44, 1, 0x04, 0x0013eff2 },
{ 0x419e48, 1, 0x04, 0x00000000 },
{ 0x419e4c, 1, 0x04, 0x0000007f },
{ 0x419e50, 2, 0x04, 0x00000000 },
{ 0x419e58, 1, 0x04, 0x00000001 },
{ 0x419e5c, 3, 0x04, 0x00000000 },
{ 0x419e68, 1, 0x04, 0x00000002 },
{ 0x419e6c, 12, 0x04, 0x00000000 },
{ 0x419eac, 1, 0x04, 0x00001f8f },
{ 0x419eb0, 1, 0x04, 0x0db00da0 },
{ 0x419eb8, 1, 0x04, 0x00000000 },
{ 0x419ec8, 1, 0x04, 0x0001304f },
{ 0x419f30, 4, 0x04, 0x00000000 },
{ 0x419f40, 1, 0x04, 0x00000018 },
{ 0x419f44, 3, 0x04, 0x00000000 },
{ 0x419f58, 1, 0x04, 0x00000020 },
{ 0x419f70, 1, 0x04, 0x00000000 },
{ 0x419f78, 1, 0x04, 0x000001eb },
{ 0x419f7c, 1, 0x04, 0x00000404 },
{}
};
static struct nvc0_graph_init
nv108_grctx_init_unk[] = {
{ 0x41be24, 1, 0x04, 0x00000006 },
{ 0x41bec0, 1, 0x04, 0x10000000 },
{ 0x41bec4, 1, 0x04, 0x00037f7f },
{ 0x41bee4, 1, 0x04, 0x00000000 },
{ 0x41bef0, 1, 0x04, 0x000003ff },
{ 0x41bf00, 1, 0x04, 0x0a418820 },
{ 0x41bf04, 1, 0x04, 0x062080e6 },
{ 0x41bf08, 1, 0x04, 0x020398a4 },
{ 0x41bf0c, 1, 0x04, 0x0e629062 },
{ 0x41bf10, 1, 0x04, 0x0a418820 },
{ 0x41bf14, 1, 0x04, 0x000000e6 },
{ 0x41bfd0, 1, 0x04, 0x00900103 },
{ 0x41bfe0, 1, 0x04, 0x00400001 },
{ 0x41bfe4, 1, 0x04, 0x00000000 },
{}
};
static void
nv108_grctx_generate_mods(struct nvc0_graph_priv *priv, struct nvc0_grctx *info)
{
u32 magic[GPC_MAX][2];
u32 offset;
int gpc;
mmio_data(0x003000, 0x0100, NV_MEM_ACCESS_RW | NV_MEM_ACCESS_SYS);
mmio_data(0x008000, 0x0100, NV_MEM_ACCESS_RW | NV_MEM_ACCESS_SYS);
mmio_data(0x060000, 0x1000, NV_MEM_ACCESS_RW);
mmio_list(0x40800c, 0x00000000, 8, 1);
mmio_list(0x408010, 0x80000000, 0, 0);
mmio_list(0x419004, 0x00000000, 8, 1);
mmio_list(0x419008, 0x00000000, 0, 0);
mmio_list(0x408004, 0x00000000, 8, 0);
mmio_list(0x408008, 0x80000030, 0, 0);
mmio_list(0x418808, 0x00000000, 8, 0);
mmio_list(0x41880c, 0x80000030, 0, 0);
mmio_list(0x418810, 0x80000000, 12, 2);
mmio_list(0x419848, 0x10000000, 12, 2);
mmio_list(0x405830, 0x02180648, 0, 0);
mmio_list(0x4064c4, 0x0192ffff, 0, 0);
for (gpc = 0, offset = 0; gpc < priv->gpc_nr; gpc++) {
u16 magic0 = 0x0218 * priv->tpc_nr[gpc];
u16 magic1 = 0x0648 * priv->tpc_nr[gpc];
magic[gpc][0] = 0x10000000 | (magic0 << 16) | offset;
magic[gpc][1] = 0x00000000 | (magic1 << 16);
offset += 0x0324 * priv->tpc_nr[gpc];
}
for (gpc = 0; gpc < priv->gpc_nr; gpc++) {
mmio_list(GPC_UNIT(gpc, 0x30c0), magic[gpc][0], 0, 0);
mmio_list(GPC_UNIT(gpc, 0x30e4), magic[gpc][1] | offset, 0, 0);
offset += 0x07ff * priv->tpc_nr[gpc];
}
mmio_list(0x17e91c, 0x0b040a0b, 0, 0);
mmio_list(0x17e920, 0x00090d08, 0, 0);
}
static struct nvc0_graph_init *
nv108_grctx_init_hub[] = {
nvc0_grctx_init_base,
nv108_grctx_init_unk40xx,
nvf0_grctx_init_unk44xx,
nve4_grctx_init_unk46xx,
nve4_grctx_init_unk47xx,
nv108_grctx_init_unk58xx,
nvf0_grctx_init_unk5bxx,
nvf0_grctx_init_unk60xx,
nv108_grctx_init_unk64xx,
nv108_grctx_init_unk78xx,
nve4_grctx_init_unk80xx,
nv108_grctx_init_unk88xx,
NULL
};
struct nvc0_graph_init *
nv108_grctx_init_gpc[] = {
nv108_grctx_init_gpc_0,
nvc0_grctx_init_gpc_1,
nv108_grctx_init_tpc,
nv108_grctx_init_unk,
NULL
};
struct nvc0_graph_init
nv108_grctx_init_mthd_magic[] = {
{ 0x3410, 1, 0x04, 0x8e0e2006 },
{ 0x3414, 1, 0x04, 0x00000038 },
{}
};
static struct nvc0_graph_mthd
nv108_grctx_init_mthd[] = {
{ 0xa197, nv108_grctx_init_a197, },
{ 0x902d, nvc0_grctx_init_902d, },
{ 0x902d, nv108_grctx_init_mthd_magic, },
{}
};
struct nouveau_oclass *
nv108_grctx_oclass = &(struct nvc0_grctx_oclass) {
.base.handle = NV_ENGCTX(GR, 0x08),
.base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nvc0_graph_context_ctor,
.dtor = nvc0_graph_context_dtor,
.init = _nouveau_graph_context_init,
.fini = _nouveau_graph_context_fini,
.rd32 = _nouveau_graph_context_rd32,
.wr32 = _nouveau_graph_context_wr32,
},
.main = nve4_grctx_generate_main,
.mods = nv108_grctx_generate_mods,
.unkn = nve4_grctx_generate_unkn,
.hub = nv108_grctx_init_hub,
.gpc = nv108_grctx_init_gpc,
.icmd = nv108_grctx_init_icmd,
.mthd = nv108_grctx_init_mthd,
}.base;
...@@ -50,7 +50,7 @@ nvf0_grctx_init_unk40xx[] = { ...@@ -50,7 +50,7 @@ nvf0_grctx_init_unk40xx[] = {
{} {}
}; };
static struct nvc0_graph_init struct nvc0_graph_init
nvf0_grctx_init_unk44xx[] = { nvf0_grctx_init_unk44xx[] = {
{ 0x404404, 12, 0x04, 0x00000000 }, { 0x404404, 12, 0x04, 0x00000000 },
{ 0x404438, 1, 0x04, 0x00000000 }, { 0x404438, 1, 0x04, 0x00000000 },
...@@ -62,7 +62,7 @@ nvf0_grctx_init_unk44xx[] = { ...@@ -62,7 +62,7 @@ nvf0_grctx_init_unk44xx[] = {
{} {}
}; };
static struct nvc0_graph_init struct nvc0_graph_init
nvf0_grctx_init_unk5bxx[] = { nvf0_grctx_init_unk5bxx[] = {
{ 0x405b00, 1, 0x04, 0x00000000 }, { 0x405b00, 1, 0x04, 0x00000000 },
{ 0x405b10, 1, 0x04, 0x00001000 }, { 0x405b10, 1, 0x04, 0x00001000 },
...@@ -70,7 +70,7 @@ nvf0_grctx_init_unk5bxx[] = { ...@@ -70,7 +70,7 @@ nvf0_grctx_init_unk5bxx[] = {
{} {}
}; };
static struct nvc0_graph_init struct nvc0_graph_init
nvf0_grctx_init_unk60xx[] = { nvf0_grctx_init_unk60xx[] = {
{ 0x406020, 1, 0x04, 0x034103c1 }, { 0x406020, 1, 0x04, 0x034103c1 },
{ 0x406028, 4, 0x04, 0x00000001 }, { 0x406028, 4, 0x04, 0x00000001 },
......
/*
* Copyright 2013 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs <bskeggs@redhat.com>
*/
#define NV_PGRAPH_GPCX_UNK__SIZE 0x00000001
#define CHIPSET GK208
#include "macros.fuc"
.section #nv108_grgpc_data
#define INCLUDE_DATA
#include "com.fuc"
#include "gpc.fuc"
#undef INCLUDE_DATA
.section #nv108_grgpc_code
#define INCLUDE_CODE
bra #init
#include "com.fuc"
#include "gpc.fuc"
.align 256
#undef INCLUDE_CODE
uint32_t nv108_grgpc_data[] = {
/* 0x0000: gpc_mmio_list_head */
0x0000006c,
/* 0x0004: gpc_mmio_list_tail */
/* 0x0004: tpc_mmio_list_head */
0x0000006c,
/* 0x0008: tpc_mmio_list_tail */
/* 0x0008: unk_mmio_list_head */
0x0000006c,
/* 0x000c: unk_mmio_list_tail */
0x0000006c,
/* 0x0010: gpc_id */
0x00000000,
/* 0x0014: tpc_count */
0x00000000,
/* 0x0018: tpc_mask */
0x00000000,
/* 0x001c: unk_count */
0x00000000,
/* 0x0020: unk_mask */
0x00000000,
/* 0x0024: cmd_queue */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
};
uint32_t nv108_grgpc_code[] = {
0x03140ef5,
/* 0x0004: queue_put */
0x9800d898,
0x86f001d9,
0xf489a408,
0x020f0b1b,
0x0002f87e,
/* 0x001a: queue_put_next */
0x98c400f8,
0x0384b607,
0xb6008dbb,
0x8eb50880,
0x018fb500,
0xf00190b6,
0xd9b50f94,
/* 0x0037: queue_get */
0xf400f801,
0xd8980131,
0x01d99800,
0x0bf489a4,
0x0789c421,
0xbb0394b6,
0x90b6009d,
0x009e9808,
0xb6019f98,
0x84f00180,
0x00d8b50f,
/* 0x0063: queue_get_done */
0xf80132f4,
/* 0x0065: nv_rd32 */
0xf0ecb200,
0x00801fc9,
0x0cf601ca,
/* 0x0073: nv_rd32_wait */
0x8c04bd00,
0xcf01ca00,
0xccc800cc,
0xf61bf41f,
0xec7e060a,
0x008f0000,
0xffcf01cb,
/* 0x008f: nv_wr32 */
0x8000f800,
0xf601cc00,
0x04bd000f,
0xc9f0ecb2,
0x1ec9f01f,
0x01ca0080,
0xbd000cf6,
/* 0x00a9: nv_wr32_wait */
0xca008c04,
0x00cccf01,
0xf41fccc8,
0x00f8f61b,
/* 0x00b8: wait_donez */
0x99f094bd,
0x37008000,
0x0009f602,
0x008004bd,
0x0af60206,
/* 0x00cf: wait_donez_ne */
0x8804bd00,
0xcf010000,
0x8aff0088,
0xf61bf488,
0x99f094bd,
0x17008000,
0x0009f602,
0x00f804bd,
/* 0x00ec: wait_doneo */
0x99f094bd,
0x37008000,
0x0009f602,
0x008004bd,
0x0af60206,
/* 0x0103: wait_doneo_e */
0x8804bd00,
0xcf010000,
0x8aff0088,
0xf60bf488,
0x99f094bd,
0x17008000,
0x0009f602,
0x00f804bd,
/* 0x0120: mmctx_size */
/* 0x0122: nv_mmctx_size_loop */
0xe89894bd,
0x1a85b600,
0xb60180b6,
0x98bb0284,
0x04e0b600,
0x1bf4efa4,
0xf89fb2ec,
/* 0x013d: mmctx_xfer */
0xf094bd00,
0x00800199,
0x09f60237,
0xbd04bd00,
0x05bbfd94,
0x800f0bf4,
0xf601c400,
0x04bd000b,
/* 0x015f: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0xc6008018,
0x000ef601,
0x008004bd,
0x0ff601c7,
0xf004bd00,
/* 0x017a: mmctx_multi_disabled */
0xabc80199,
0x10b4b600,
0xc80cb9f0,
0xe4b601ae,
0x05befd11,
0x01c50080,
0xbd000bf6,
/* 0x0195: mmctx_exec_loop */
/* 0x0195: mmctx_wait_free */
0xc5008e04,
0x00eecf01,
0xf41fe4f0,
0xce98f60b,
0x05e9fd00,
0x01c80080,
0xbd000ef6,
0x04c0b604,
0x1bf4cda4,
0x02abc8df,
/* 0x01bf: mmctx_fini_wait */
0x8b1c1bf4,
0xcf01c500,
0xb4f000bb,
0x10b4b01f,
0x0af31bf4,
0x00b87e02,
0x250ef400,
/* 0x01d8: mmctx_stop */
0xb600abc8,
0xb9f010b4,
0x12b9f00c,
0x01c50080,
0xbd000bf6,
/* 0x01ed: mmctx_stop_wait */
0xc5008b04,
0x00bbcf01,
0xf412bbc8,
/* 0x01fa: mmctx_done */
0x94bdf61b,
0x800199f0,
0xf6021700,
0x04bd0009,
/* 0x020a: strand_wait */
0xa0f900f8,
0xb87e020a,
0xa0fc0000,
/* 0x0216: strand_pre */
0x0c0900f8,
0x024afc80,
0xbd0009f6,
0x020a7e04,
/* 0x0227: strand_post */
0x0900f800,
0x4afc800d,
0x0009f602,
0x0a7e04bd,
0x00f80002,
/* 0x0238: strand_set */
0xfc800f0c,
0x0cf6024f,
0x0c04bd00,
0x4afc800b,
0x000cf602,
0xfc8004bd,
0x0ef6024f,
0x0c04bd00,
0x4afc800a,
0x000cf602,
0x0a7e04bd,
0x00f80002,
/* 0x0268: strand_ctx_init */
0x99f094bd,
0x37008003,
0x0009f602,
0x167e04bd,
0x030e0002,
0x0002387e,
0xfc80c4bd,
0x0cf60247,
0x0c04bd00,
0x4afc8001,
0x000cf602,
0x0a7e04bd,
0x0c920002,
0x46fc8001,
0x000cf602,
0x020c04bd,
0x024afc80,
0xbd000cf6,
0x020a7e04,
0x02277e00,
0x42008800,
0x20008902,
0x0099cf02,
/* 0x02c7: ctx_init_strand_loop */
0xf608fe95,
0x8ef6008e,
0x808acf40,
0xb606a5b6,
0xeabb01a0,
0x0480b600,
0xf40192b6,
0xe4b6e81b,
0xf2efbc08,
0x99f094bd,
0x17008003,
0x0009f602,
0x00f804bd,
/* 0x02f8: error */
0xffb2e0f9,
0x4098148e,
0x00008f7e,
0xffb2010f,
0x409c1c8e,
0x00008f7e,
0x00f8e0fc,
/* 0x0314: init */
0x04fe04bd,
0x40020200,
0x02f61200,
0x4104bd00,
0x10fe0465,
0x07004000,
0xbd0000f6,
0x40040204,
0x02f60400,
0xf404bd00,
0x00821031,
0x22cf0182,
0xf0010300,
0x32bb1f24,
0x0132b604,
0xb50502b5,
0x00820603,
0x22cf0186,
0x0402b500,
0x500c308e,
0x34bd24bd,
/* 0x036a: init_unk_loop */
0x657e44bd,
0xf6b00000,
0x0e0bf400,
0xf2bb010f,
0x054ffd04,
/* 0x037f: init_unk_next */
0xb60130b6,
0xe0b60120,
0x0126b004,
/* 0x038b: init_unk_done */
0xb5e21bf4,
0x04b50703,
0x01008208,
0x0022cf02,
0x259534bd,
0xc0008008,
0x0005f601,
0x008004bd,
0x05f601c1,
0x9804bd00,
0x0f98000e,
0x01207e01,
0x002fbb00,
0x98003fbb,
0x0f98010e,
0x01207e02,
0x050e9800,
0xbb00effd,
0x3ebb002e,
0x020e9800,
0x7e030f98,
0x98000120,
0xeffd070e,
0x002ebb00,
0xb6003ebb,
0x00800235,
0x03f601d3,
0xb604bd00,
0x35b60825,
0x0120b606,
0xb60130b6,
0x34b60824,
0x7e2fb208,
0xbb000268,
0x0080003f,
0x03f60201,
0xbd04bd00,
0x1f29f024,
0x02300080,
0xbd0002f6,
/* 0x0429: main */
0x0031f404,
0x0d0028f4,
0x00377e24,
0xf401f400,
0xf404e4b0,
0x81fe1d18,
0xbd060201,
0x0412fd20,
0xfd01e4b6,
0x18fe051e,
0x04fc7e00,
0xd40ef400,
/* 0x0458: main_not_ctx_xfer */
0xf010ef94,
0xf87e01f5,
0x0ef40002,
/* 0x0465: ih */
0xfe80f9c7,
0x80f90188,
0xa0f990f9,
0xd0f9b0f9,
0xf0f9e0f9,
0x004a04bd,
0x00aacf02,
0xf404abc4,
0x240d1f0b,
0xcf1a004e,
0x004f00ee,
0x00ffcf19,
0x0000047e,
0x0040010e,
0x000ef61d,
/* 0x04a2: ih_no_fifo */
0x004004bd,
0x000af601,
0xf0fc04bd,
0xd0fce0fc,
0xa0fcb0fc,
0x80fc90fc,
0xfc0088fe,
0x0032f480,
/* 0x04c2: hub_barrier_done */
0x010f01f8,
0xbb040e98,
0xffb204fe,
0x4094188e,
0x00008f7e,
/* 0x04d6: ctx_redswitch */
0x200f00f8,
0x01850080,
0xbd000ff6,
/* 0x04e3: ctx_redswitch_delay */
0xb6080e04,
0x1bf401e2,
0x00f5f1fd,
0x00f5f108,
0x85008002,
0x000ff601,
0x00f804bd,
/* 0x04fc: ctx_xfer */
0x02810080,
0xbd000ff6,
0x0711f404,
0x0004d67e,
/* 0x050c: ctx_xfer_not_load */
0x0002167e,
0xfc8024bd,
0x02f60247,
0xf004bd00,
0x20b6012c,
0x4afc8003,
0x0002f602,
0xacf004bd,
0x02a5f001,
0x5000008b,
0xb6040c98,
0xbcbb0fc4,
0x000c9800,
0x0e010d98,
0x013d7e00,
0x01acf000,
0x5040008b,
0xb6040c98,
0xbcbb0fc4,
0x010c9800,
0x98020d98,
0x004e060f,
0x013d7e08,
0x01acf000,
0x8b04a5f0,
0x98503000,
0xc4b6040c,
0x00bcbb0f,
0x98020c98,
0x0f98030d,
0x02004e08,
0x00013d7e,
0x00020a7e,
0xf40601f4,
/* 0x0596: ctx_xfer_post */
0x277e0712,
/* 0x059a: ctx_xfer_done */
0xc27e0002,
0x00f80004,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
};
/*
* Copyright 2013 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs <bskeggs@redhat.com>
*/
#define CHIPSET GK208
#include "macros.fuc"
.section #nv108_grhub_data
#define INCLUDE_DATA
#include "com.fuc"
#include "hub.fuc"
#undef INCLUDE_DATA
.section #nv108_grhub_code
#define INCLUDE_CODE
bra #init
#include "com.fuc"
#include "hub.fuc"
.align 256
#undef INCLUDE_CODE
uint32_t nv108_grhub_data[] = {
/* 0x0000: hub_mmio_list_head */
0x00000300,
/* 0x0004: hub_mmio_list_tail */
0x00000304,
/* 0x0008: gpc_count */
0x00000000,
/* 0x000c: rop_count */
0x00000000,
/* 0x0010: cmd_queue */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x0058: ctx_current */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x0100: chan_data */
/* 0x0100: chan_mmio_count */
0x00000000,
/* 0x0104: chan_mmio_address */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x0200: xfer_data */
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
/* 0x0300: hub_mmio_list_base */
0x0417e91c,
};
uint32_t nv108_grhub_code[] = {
0x030e0ef5,
/* 0x0004: queue_put */
0x9800d898,
0x86f001d9,
0xf489a408,
0x020f0b1b,
0x0002f87e,
/* 0x001a: queue_put_next */
0x98c400f8,
0x0384b607,
0xb6008dbb,
0x8eb50880,
0x018fb500,
0xf00190b6,
0xd9b50f94,
/* 0x0037: queue_get */
0xf400f801,
0xd8980131,
0x01d99800,
0x0bf489a4,
0x0789c421,
0xbb0394b6,
0x90b6009d,
0x009e9808,
0xb6019f98,
0x84f00180,
0x00d8b50f,
/* 0x0063: queue_get_done */
0xf80132f4,
/* 0x0065: nv_rd32 */
0xf0ecb200,
0x00801fc9,
0x0cf601ca,
/* 0x0073: nv_rd32_wait */
0x8c04bd00,
0xcf01ca00,
0xccc800cc,
0xf61bf41f,
0xec7e060a,
0x008f0000,
0xffcf01cb,
/* 0x008f: nv_wr32 */
0x8000f800,
0xf601cc00,
0x04bd000f,
0xc9f0ecb2,
0x1ec9f01f,
0x01ca0080,
0xbd000cf6,
/* 0x00a9: nv_wr32_wait */
0xca008c04,
0x00cccf01,
0xf41fccc8,
0x00f8f61b,
/* 0x00b8: wait_donez */
0x99f094bd,
0x37008000,
0x0009f602,
0x008004bd,
0x0af60206,
/* 0x00cf: wait_donez_ne */
0x8804bd00,
0xcf010000,
0x8aff0088,
0xf61bf488,
0x99f094bd,
0x17008000,
0x0009f602,
0x00f804bd,
/* 0x00ec: wait_doneo */
0x99f094bd,
0x37008000,
0x0009f602,
0x008004bd,
0x0af60206,
/* 0x0103: wait_doneo_e */
0x8804bd00,
0xcf010000,
0x8aff0088,
0xf60bf488,
0x99f094bd,
0x17008000,
0x0009f602,
0x00f804bd,
/* 0x0120: mmctx_size */
/* 0x0122: nv_mmctx_size_loop */
0xe89894bd,
0x1a85b600,
0xb60180b6,
0x98bb0284,
0x04e0b600,
0x1bf4efa4,
0xf89fb2ec,
/* 0x013d: mmctx_xfer */
0xf094bd00,
0x00800199,
0x09f60237,
0xbd04bd00,
0x05bbfd94,
0x800f0bf4,
0xf601c400,
0x04bd000b,
/* 0x015f: mmctx_base_disabled */
0xfd0099f0,
0x0bf405ee,
0xc6008018,
0x000ef601,
0x008004bd,
0x0ff601c7,
0xf004bd00,
/* 0x017a: mmctx_multi_disabled */
0xabc80199,
0x10b4b600,
0xc80cb9f0,
0xe4b601ae,
0x05befd11,
0x01c50080,
0xbd000bf6,
/* 0x0195: mmctx_exec_loop */
/* 0x0195: mmctx_wait_free */
0xc5008e04,
0x00eecf01,
0xf41fe4f0,
0xce98f60b,
0x05e9fd00,
0x01c80080,
0xbd000ef6,
0x04c0b604,
0x1bf4cda4,
0x02abc8df,
/* 0x01bf: mmctx_fini_wait */
0x8b1c1bf4,
0xcf01c500,
0xb4f000bb,
0x10b4b01f,
0x0af31bf4,
0x00b87e02,
0x250ef400,
/* 0x01d8: mmctx_stop */
0xb600abc8,
0xb9f010b4,
0x12b9f00c,
0x01c50080,
0xbd000bf6,
/* 0x01ed: mmctx_stop_wait */
0xc5008b04,
0x00bbcf01,
0xf412bbc8,
/* 0x01fa: mmctx_done */
0x94bdf61b,
0x800199f0,
0xf6021700,
0x04bd0009,
/* 0x020a: strand_wait */
0xa0f900f8,
0xb87e020a,
0xa0fc0000,
/* 0x0216: strand_pre */
0x0c0900f8,
0x024afc80,
0xbd0009f6,
0x020a7e04,
/* 0x0227: strand_post */
0x0900f800,
0x4afc800d,
0x0009f602,
0x0a7e04bd,
0x00f80002,
/* 0x0238: strand_set */
0xfc800f0c,
0x0cf6024f,
0x0c04bd00,
0x4afc800b,
0x000cf602,
0xfc8004bd,
0x0ef6024f,
0x0c04bd00,
0x4afc800a,
0x000cf602,
0x0a7e04bd,
0x00f80002,
/* 0x0268: strand_ctx_init */
0x99f094bd,
0x37008003,
0x0009f602,
0x167e04bd,
0x030e0002,
0x0002387e,
0xfc80c4bd,
0x0cf60247,
0x0c04bd00,
0x4afc8001,
0x000cf602,
0x0a7e04bd,
0x0c920002,
0x46fc8001,
0x000cf602,
0x020c04bd,
0x024afc80,
0xbd000cf6,
0x020a7e04,
0x02277e00,
0x42008800,
0x20008902,
0x0099cf02,
/* 0x02c7: ctx_init_strand_loop */
0xf608fe95,
0x8ef6008e,
0x808acf40,
0xb606a5b6,
0xeabb01a0,
0x0480b600,
0xf40192b6,
0xe4b6e81b,
0xf2efbc08,
0x99f094bd,
0x17008003,
0x0009f602,
0x00f804bd,
/* 0x02f8: error */
0x02050080,
0xbd000ff6,
0x80010f04,
0xf6030700,
0x04bd000f,
/* 0x030e: init */
0x04bd00f8,
0xfe0004fe,
0x02020007,
0xf6120040,
0x04bd0002,
0xfe05a041,
0x24bd0010,
0xf6070040,
0x04bd0002,
0x80200342,
0xf6010100,
0x04bd0002,
0x80200442,
0xf6010104,
0x04bd0002,
0x80200b42,
0xf6010108,
0x04bd0002,
0x80200c42,
0xf601011c,
0x04bd0002,
0x80010392,
0xf6030900,
0x04bd0003,
0x40870442,
0x02f60400,
0x0204bd00,
0x03004004,
0xbd0002f6,
0x1031f404,
0x4096048e,
0x0000657e,
0xf1c7feb2,
0x0301b590,
0xb51ff4f0,
0x0101020f,
0xb6041fbb,
0x00800112,
0x01f60103,
0x8004bd00,
0xf6010400,
0x04bd0001,
0x98010041,
0x0f98000e,
0x01207e01,
0x08149500,
0x01c00080,
0xbd0004f6,
0xc1008004,
0x0004f601,
0x30b704bd,
0x1fbb1300,
0x02f5b600,
0x01d30080,
0xbd000ff6,
0x0815b604,
0xb60110b6,
0x1fb20814,
0x0002687e,
0x98001fbb,
0x00840203,
/* 0x0402: init_gpc */
0x4eb85020,
0xb2000804,
0x008f7e1f,
0x0c4eb800,
0xf4bd0001,
0x00008f7e,
0x01044eb8,
0x008f7e00,
0x004eb800,
0x020f0001,
0x00008f7e,
0x08004eb8,
/* 0x0431: init_gpc_wait */
0x00657e00,
0x1fffc800,
0xb8f90bf4,
0x0008044e,
0x0000657e,
0xb7001fbb,
0xb6800040,
0x1bf40132,
0x010080b4,
0x0001f602,
0x14bd04bd,
0x801f19f0,
0xf6023000,
0x04bd0001,
/* 0x0468: main */
0xf40031f4,
0x100d0028,
0x0000377e,
0xb1f401f4,
0xf54001e4,
0xbd00c71b,
0x0499f094,
0x02370080,
0xbd0009f6,
0xc0008104,
0x0011cf02,
0x02c10082,
0xc80022cf,
0x0bf41f13,
0x1f23c877,
0xf9550bf4,
0xbd12b220,
0x0799f094,
0x02370080,
0xbd0009f6,
0x0132f404,
0x7e0231f4,
0xbd0007ff,
0x0799f094,
0x02170080,
0xbd0009f6,
0xbd20fc04,
0x0699f094,
0x02370080,
0xbd0009f6,
0x0131f404,
0x0007ff7e,
0x99f094bd,
0x17008006,
0x0009f602,
0x0ef404bd,
/* 0x04f9: chsw_prev_no_next */
0xb220f92f,
0x0132f412,
0x7e0232f4,
0xfc0007ff,
0xc0008020,
0x0002f602,
0x0ef404bd,
/* 0x0515: chsw_no_prev */
0x1f23c813,
0xf40d0bf4,
0x32f40131,
0x07ff7e02,
/* 0x0525: chsw_done */
0x80010200,
0xf602c300,
0x04bd0002,
0x99f094bd,
0x17008004,
0x0009f602,
0x0ef504bd,
/* 0x0542: main_not_ctx_switch */
0xe4b0ff2a,
0x0c1bf401,
0x997ef2b2,
0x0ef40007,
/* 0x0551: main_not_ctx_chan */
0x02e4b040,
0xbd2c1bf4,
0x0799f094,
0x02370080,
0xbd0009f6,
0x0132f404,
0x7e0232f4,
0xbd0007ff,
0x0799f094,
0x02170080,
0xbd0009f6,
0x110ef404,
/* 0x0580: main_not_ctx_save */
0xf010ef94,
0xf87e01f5,
0x0ef50002,
/* 0x058e: main_done */
0x24bdfede,
0x801f29f0,
0xf6023000,
0x04bd0002,
0xfecc0ef5,
/* 0x05a0: ih */
0x88fe80f9,
0xf980f901,
0xf9a0f990,
0xf9d0f9b0,
0xbdf0f9e0,
0x02004a04,
0xc400aacf,
0x0bf404ab,
0x4e100d23,
0xeecf1a00,
0x19004f00,
0x7e00ffcf,
0xb7000004,
0x0e0400b0,
0x1d004001,
0xbd000ef6,
/* 0x05e1: ih_no_fifo */
0x00abe404,
0x0c0bf401,
0x014e100d,
0x00047e40,
/* 0x05f1: ih_no_ctxsw */
0x01044b00,
0xabffb0bd,
0x0c0bf4b4,
0x03070080,
0xbd000bf6,
/* 0x0605: ih_no_other */
0x01004004,
0xbd000af6,
0xfcf0fc04,
0xfcd0fce0,
0xfca0fcb0,
0xfe80fc90,
0x80fc0088,
0xf80032f4,
/* 0x0625: ctx_4170s */
0x10f5f001,
0x708effb2,
0x8f7e4041,
0x00f80000,
/* 0x0634: ctx_4170w */
0x4041708e,
0x0000657e,
0xf4f0ffb2,
0xf31bf410,
/* 0x0646: ctx_redswitch */
0x004e00f8,
0x40e5f002,
0xf020e5f0,
0x008010e5,
0x0ef60185,
0x0f04bd00,
/* 0x065d: ctx_redswitch_delay */
0x01f2b608,
0xf1fd1bf4,
0xf10400e5,
0x800100e5,
0xf6018500,
0x04bd000e,
/* 0x0676: ctx_86c */
0x008000f8,
0x0ff6021b,
0xb204bd00,
0x8a148eff,
0x008f7e40,
0x8effb200,
0x7e41a86c,
0xf800008f,
/* 0x0695: ctx_mem */
0x84008000,
0x000ff602,
/* 0x069e: ctx_mem_wait */
0x008f04bd,
0xffcf0284,
0x05fffd00,
0xf8f61bf4,
/* 0x06ad: ctx_load */
0xf094bd00,
0x00800599,
0x09f60237,
0x0a04bd00,
0x00b87e0c,
0x80f4bd00,
0xf6028900,
0x04bd000f,
0x02c10080,
0xbd0002f6,
0x83008004,
0x0002f602,
0x070f04bd,
0x0006957e,
0x02c00080,
0xbd0002f6,
0x000bfe04,
0xb61f2af0,
0x20b60424,
0xf094bd02,
0x00800899,
0x09f60237,
0x8004bd00,
0xf6028100,
0x04bd0002,
0x000000d2,
0x0225f080,
0x02880080,
0xbd0002f6,
0x42100104,
0x23f00200,
0x0512fa02,
0x94bd03f8,
0x800899f0,
0xf6021700,
0x04bd0009,
0xb6810198,
0x02981814,
0x0825b680,
0xb50512fd,
0x94bd1601,
0x800999f0,
0xf6023700,
0x04bd0009,
0x02810080,
0xbd0001f6,
0x80010204,
0xf6028800,
0x04bd0002,
0xf0010041,
0x01fa0613,
0xbd03f805,
0x0999f094,
0x02170080,
0xbd0009f6,
0xf094bd04,
0x00800599,
0x09f60217,
0xf804bd00,
/* 0x0799: ctx_chan */
0x06ad7e00,
0x7e0c0a00,
0x410000b8,
0x14b60a10,
0x7e050f06,
0xf8000695,
/* 0x07b1: ctx_mmio_exec */
0x41039800,
0x02810080,
0xbd0003f6,
/* 0x07bf: ctx_mmio_loop */
0xc434bd04,
0x1bf4ff34,
0x0200450e,
0xfa0653f0,
0x03f80535,
/* 0x07d0: ctx_mmio_pull */
0x98804e98,
0x8f7e814f,
0x30b60000,
0x0112b608,
/* 0x07e3: ctx_mmio_done */
0x98df1bf4,
0x00801603,
0x03f60281,
0xb504bd00,
0x00414000,
0x0613f001,
0xf80601fa,
/* 0x07ff: ctx_xfer */
0x0e00f803,
0x02008004,
0x000ef603,
/* 0x080a: ctx_xfer_idle */
0x008e04bd,
0xeecf0300,
0x00e4f100,
0xf51bf420,
0xf40611f4,
/* 0x081e: ctx_xfer_pre */
0x100f0c02,
0x0006767e,
/* 0x0827: ctx_xfer_pre_load */
0x0f1b11f4,
0x06257e02,
0x06347e00,
0x06467e00,
0x7ef4bd00,
0x7e000625,
/* 0x083f: ctx_xfer_exec */
0x980006ad,
0x24bd1601,
0x01050080,
0xbd0002f6,
0x8e1fb204,
0x7e41a500,
0xf000008f,
0x2cf001fc,
0x0124b602,
0xb205f2fd,
0xa5048eff,
0x008f7e41,
0x02167e00,
0x8024bd00,
0xf60247fc,
0x04bd0002,
0xb6012cf0,
0xfc800320,
0x02f6024a,
0xf004bd00,
0xa5f001ac,
0x98000b06,
0x0d98000c,
0x7e000e01,
0x0a00013d,
0x00ec7e08,
0x020a7e00,
0x1201f400,
0xb87e0c0a,
0x050f0000,
0x0006957e,
/* 0x08bb: ctx_xfer_post */
0x0f2d02f4,
0x06257e02,
0x7ef4bd00,
0x7e000676,
0x7e000227,
0xbd000634,
0x06257ef4,
0x1011f400,
0xfd400198,
0x0bf40511,
0x07b17e07,
/* 0x08e5: ctx_xfer_no_post_mmio */
/* 0x08e5: ctx_xfer_done */
0x0000f800,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
0x00000000,
};
/*
* Copyright 2013 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs <bskeggs@redhat.com>
*/
#include "nvc0.h"
/*******************************************************************************
* Graphics object classes
******************************************************************************/
static struct nouveau_oclass
nv108_graph_sclass[] = {
{ 0x902d, &nouveau_object_ofuncs },
{ 0xa140, &nouveau_object_ofuncs },
{ 0xa197, &nouveau_object_ofuncs },
{ 0xa1c0, &nouveau_object_ofuncs },
{}
};
/*******************************************************************************
* PGRAPH engine/subdev functions
******************************************************************************/
static struct nvc0_graph_init
nv108_graph_init_regs[] = {
{ 0x400080, 1, 0x04, 0x003083c2 },
{ 0x400088, 1, 0x04, 0x0001bfe7 },
{ 0x40008c, 1, 0x04, 0x00000000 },
{ 0x400090, 1, 0x04, 0x00000030 },
{ 0x40013c, 1, 0x04, 0x003901f7 },
{ 0x400140, 1, 0x04, 0x00000100 },
{ 0x400144, 1, 0x04, 0x00000000 },
{ 0x400148, 1, 0x04, 0x00000110 },
{ 0x400138, 1, 0x04, 0x00000000 },
{ 0x400130, 2, 0x04, 0x00000000 },
{ 0x400124, 1, 0x04, 0x00000002 },
{}
};
struct nvc0_graph_init
nv108_graph_init_unk58xx[] = {
{ 0x405844, 1, 0x04, 0x00ffffff },
{ 0x405850, 1, 0x04, 0x00000000 },
{ 0x405900, 1, 0x04, 0x00000000 },
{ 0x405908, 1, 0x04, 0x00000000 },
{ 0x405928, 1, 0x04, 0x00000000 },
{ 0x40592c, 1, 0x04, 0x00000000 },
{}
};
static struct nvc0_graph_init
nv108_graph_init_gpc[] = {
{ 0x418408, 1, 0x04, 0x00000000 },
{ 0x4184a0, 3, 0x04, 0x00000000 },
{ 0x418604, 1, 0x04, 0x00000000 },
{ 0x418680, 1, 0x04, 0x00000000 },
{ 0x418714, 1, 0x04, 0x00000000 },
{ 0x418384, 2, 0x04, 0x00000000 },
{ 0x418814, 3, 0x04, 0x00000000 },
{ 0x418b04, 1, 0x04, 0x00000000 },
{ 0x4188c8, 2, 0x04, 0x00000000 },
{ 0x4188d0, 1, 0x04, 0x00010000 },
{ 0x4188d4, 1, 0x04, 0x00000201 },
{ 0x418910, 1, 0x04, 0x00010001 },
{ 0x418914, 1, 0x04, 0x00000301 },
{ 0x418918, 1, 0x04, 0x00800000 },
{ 0x418980, 1, 0x04, 0x77777770 },
{ 0x418984, 3, 0x04, 0x77777777 },
{ 0x418c04, 1, 0x04, 0x00000000 },
{ 0x418c64, 2, 0x04, 0x00000000 },
{ 0x418c88, 1, 0x04, 0x00000000 },
{ 0x418cb4, 2, 0x04, 0x00000000 },
{ 0x418d00, 1, 0x04, 0x00000000 },
{ 0x418d28, 2, 0x04, 0x00000000 },
{ 0x418f00, 1, 0x04, 0x00000400 },
{ 0x418f08, 1, 0x04, 0x00000000 },
{ 0x418f20, 2, 0x04, 0x00000000 },
{ 0x418e00, 1, 0x04, 0x00000000 },
{ 0x418e08, 1, 0x04, 0x00000000 },
{ 0x418e1c, 2, 0x04, 0x00000000 },
{ 0x41900c, 1, 0x04, 0x00000000 },
{ 0x419018, 1, 0x04, 0x00000000 },
{}
};
static struct nvc0_graph_init
nv108_graph_init_tpc[] = {
{ 0x419d0c, 1, 0x04, 0x00000000 },
{ 0x419d10, 1, 0x04, 0x00000014 },
{ 0x419ab0, 1, 0x04, 0x00000000 },
{ 0x419ac8, 1, 0x04, 0x00000000 },
{ 0x419ab8, 1, 0x04, 0x000000e7 },
{ 0x419abc, 2, 0x04, 0x00000000 },
{ 0x419ab4, 1, 0x04, 0x00000000 },
{ 0x419aa8, 2, 0x04, 0x00000000 },
{ 0x41980c, 1, 0x04, 0x00000010 },
{ 0x419844, 1, 0x04, 0x00000000 },
{ 0x419850, 1, 0x04, 0x00000004 },
{ 0x419854, 2, 0x04, 0x00000000 },
{ 0x419c98, 1, 0x04, 0x00000000 },
{ 0x419ca8, 1, 0x04, 0x00000000 },
{ 0x419cb0, 1, 0x04, 0x01000000 },
{ 0x419cb4, 1, 0x04, 0x00000000 },
{ 0x419cb8, 1, 0x04, 0x00b08bea },
{ 0x419c84, 1, 0x04, 0x00010384 },
{ 0x419cbc, 1, 0x04, 0x281b3646 },
{ 0x419cc0, 2, 0x04, 0x00000000 },
{ 0x419c80, 1, 0x04, 0x00000230 },
{ 0x419ccc, 2, 0x04, 0x00000000 },
{ 0x419c0c, 1, 0x04, 0x00000000 },
{ 0x419e00, 1, 0x04, 0x00000080 },
{ 0x419ea0, 1, 0x04, 0x00000000 },
{ 0x419ee4, 1, 0x04, 0x00000000 },
{ 0x419ea4, 1, 0x04, 0x00000100 },
{ 0x419ea8, 1, 0x04, 0x00000000 },
{ 0x419eb4, 1, 0x04, 0x00000000 },
{ 0x419ebc, 2, 0x04, 0x00000000 },
{ 0x419edc, 1, 0x04, 0x00000000 },
{ 0x419f00, 1, 0x04, 0x00000000 },
{ 0x419ed0, 1, 0x04, 0x00003234 },
{ 0x419f74, 1, 0x04, 0x00015555 },
{ 0x419f80, 4, 0x04, 0x00000000 },
{}
};
static int
nv108_graph_fini(struct nouveau_object *object, bool suspend)
{
struct nvc0_graph_priv *priv = (void *)object;
static const struct {
u32 addr;
u32 data;
} magic[] = {
{ 0x020520, 0xfffffffc },
{ 0x020524, 0xfffffffe },
{ 0x020524, 0xfffffffc },
{ 0x020524, 0xfffffff8 },
{ 0x020524, 0xffffffe0 },
{ 0x020530, 0xfffffffe },
{ 0x02052c, 0xfffffffa },
{ 0x02052c, 0xfffffff0 },
{ 0x02052c, 0xffffffc0 },
{ 0x02052c, 0xffffff00 },
{ 0x02052c, 0xfffffc00 },
{ 0x02052c, 0xfffcfc00 },
{ 0x02052c, 0xfff0fc00 },
{ 0x02052c, 0xff80fc00 },
{ 0x020528, 0xfffffffe },
{ 0x020528, 0xfffffffc },
};
int i;
nv_mask(priv, 0x000200, 0x08001000, 0x00000000);
nv_mask(priv, 0x0206b4, 0x00000000, 0x00000000);
for (i = 0; i < ARRAY_SIZE(magic); i++) {
nv_wr32(priv, magic[i].addr, magic[i].data);
nv_wait(priv, magic[i].addr, 0x80000000, 0x00000000);
}
return nouveau_graph_fini(&priv->base, suspend);
}
static struct nvc0_graph_init *
nv108_graph_init_mmio[] = {
nv108_graph_init_regs,
nvf0_graph_init_unk40xx,
nvc0_graph_init_unk44xx,
nvc0_graph_init_unk78xx,
nvc0_graph_init_unk60xx,
nvd9_graph_init_unk64xx,
nv108_graph_init_unk58xx,
nvc0_graph_init_unk80xx,
nvf0_graph_init_unk70xx,
nvf0_graph_init_unk5bxx,
nv108_graph_init_gpc,
nv108_graph_init_tpc,
nve4_graph_init_unk,
nve4_graph_init_unk88xx,
NULL
};
#include "fuc/hubnv108.fuc5.h"
static struct nvc0_graph_ucode
nv108_graph_fecs_ucode = {
.code.data = nv108_grhub_code,
.code.size = sizeof(nv108_grhub_code),
.data.data = nv108_grhub_data,
.data.size = sizeof(nv108_grhub_data),
};
#include "fuc/gpcnv108.fuc5.h"
static struct nvc0_graph_ucode
nv108_graph_gpccs_ucode = {
.code.data = nv108_grgpc_code,
.code.size = sizeof(nv108_grgpc_code),
.data.data = nv108_grgpc_data,
.data.size = sizeof(nv108_grgpc_data),
};
struct nouveau_oclass *
nv108_graph_oclass = &(struct nvc0_graph_oclass) {
.base.handle = NV_ENGINE(GR, 0x08),
.base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nvc0_graph_ctor,
.dtor = nvc0_graph_dtor,
.init = nve4_graph_init,
.fini = nv108_graph_fini,
},
.cclass = &nv108_grctx_oclass,
.sclass = nv108_graph_sclass,
.mmio = nv108_graph_init_mmio,
.fecs.ucode = 0 ? &nv108_graph_fecs_ucode : NULL,
.gpccs.ucode = &nv108_graph_gpccs_ucode,
}.base;
...@@ -901,6 +901,9 @@ nvc0_graph_init_ctxctl(struct nvc0_graph_priv *priv) ...@@ -901,6 +901,9 @@ nvc0_graph_init_ctxctl(struct nvc0_graph_priv *priv)
} }
return 0; return 0;
} else
if (!oclass->fecs.ucode) {
return -ENOSYS;
} }
/* load HUB microcode */ /* load HUB microcode */
......
...@@ -205,6 +205,11 @@ extern struct nvc0_graph_init nve4_graph_init_regs[]; ...@@ -205,6 +205,11 @@ extern struct nvc0_graph_init nve4_graph_init_regs[];
extern struct nvc0_graph_init nve4_graph_init_unk[]; extern struct nvc0_graph_init nve4_graph_init_unk[];
extern struct nvc0_graph_init nve4_graph_init_unk88xx[]; extern struct nvc0_graph_init nve4_graph_init_unk88xx[];
extern struct nvc0_graph_init nvf0_graph_init_unk40xx[];
extern struct nvc0_graph_init nvf0_graph_init_unk70xx[];
extern struct nvc0_graph_init nvf0_graph_init_unk5bxx[];
extern struct nvc0_graph_init nvf0_graph_init_tpc[];
int nvc0_grctx_generate(struct nvc0_graph_priv *); int nvc0_grctx_generate(struct nvc0_graph_priv *);
void nvc0_grctx_generate_main(struct nvc0_graph_priv *, struct nvc0_grctx *); void nvc0_grctx_generate_main(struct nvc0_graph_priv *, struct nvc0_grctx *);
void nvc0_grctx_generate_mods(struct nvc0_graph_priv *, struct nvc0_grctx *); void nvc0_grctx_generate_mods(struct nvc0_graph_priv *, struct nvc0_grctx *);
...@@ -266,6 +271,11 @@ extern struct nvc0_graph_init nve4_grctx_init_unk80xx[]; ...@@ -266,6 +271,11 @@ extern struct nvc0_graph_init nve4_grctx_init_unk80xx[];
extern struct nvc0_graph_init nve4_grctx_init_unk90xx[]; extern struct nvc0_graph_init nve4_grctx_init_unk90xx[];
extern struct nouveau_oclass *nvf0_grctx_oclass; extern struct nouveau_oclass *nvf0_grctx_oclass;
extern struct nvc0_graph_init nvf0_grctx_init_unk44xx[];
extern struct nvc0_graph_init nvf0_grctx_init_unk5bxx[];
extern struct nvc0_graph_init nvf0_grctx_init_unk60xx[];
extern struct nouveau_oclass *nv108_grctx_oclass;
#define mmio_data(s,a,p) do { \ #define mmio_data(s,a,p) do { \
info->buffer[info->buffer_nr] = round_up(info->addr, (a)); \ info->buffer[info->buffer_nr] = round_up(info->addr, (a)); \
......
...@@ -41,7 +41,7 @@ nvf0_graph_sclass[] = { ...@@ -41,7 +41,7 @@ nvf0_graph_sclass[] = {
* PGRAPH engine/subdev functions * PGRAPH engine/subdev functions
******************************************************************************/ ******************************************************************************/
static struct nvc0_graph_init struct nvc0_graph_init
nvf0_graph_init_unk40xx[] = { nvf0_graph_init_unk40xx[] = {
{ 0x40415c, 1, 0x04, 0x00000000 }, { 0x40415c, 1, 0x04, 0x00000000 },
{ 0x404170, 1, 0x04, 0x00000000 }, { 0x404170, 1, 0x04, 0x00000000 },
...@@ -60,7 +60,7 @@ nvf0_graph_init_unk58xx[] = { ...@@ -60,7 +60,7 @@ nvf0_graph_init_unk58xx[] = {
{} {}
}; };
static struct nvc0_graph_init struct nvc0_graph_init
nvf0_graph_init_unk70xx[] = { nvf0_graph_init_unk70xx[] = {
{ 0x407010, 1, 0x04, 0x00000000 }, { 0x407010, 1, 0x04, 0x00000000 },
{ 0x407040, 1, 0x04, 0x80440424 }, { 0x407040, 1, 0x04, 0x80440424 },
...@@ -68,7 +68,7 @@ nvf0_graph_init_unk70xx[] = { ...@@ -68,7 +68,7 @@ nvf0_graph_init_unk70xx[] = {
{} {}
}; };
static struct nvc0_graph_init struct nvc0_graph_init
nvf0_graph_init_unk5bxx[] = { nvf0_graph_init_unk5bxx[] = {
{ 0x405b44, 1, 0x04, 0x00000000 }, { 0x405b44, 1, 0x04, 0x00000000 },
{ 0x405b50, 1, 0x04, 0x00000000 }, { 0x405b50, 1, 0x04, 0x00000000 },
...@@ -114,7 +114,7 @@ nvf0_graph_init_gpc[] = { ...@@ -114,7 +114,7 @@ nvf0_graph_init_gpc[] = {
{} {}
}; };
static struct nvc0_graph_init struct nvc0_graph_init
nvf0_graph_init_tpc[] = { nvf0_graph_init_tpc[] = {
{ 0x419d0c, 1, 0x04, 0x00000000 }, { 0x419d0c, 1, 0x04, 0x00000000 },
{ 0x419d10, 1, 0x04, 0x00000014 }, { 0x419d10, 1, 0x04, 0x00000014 },
......
...@@ -69,6 +69,7 @@ extern struct nouveau_oclass *nvd7_graph_oclass; ...@@ -69,6 +69,7 @@ extern struct nouveau_oclass *nvd7_graph_oclass;
extern struct nouveau_oclass *nvd9_graph_oclass; extern struct nouveau_oclass *nvd9_graph_oclass;
extern struct nouveau_oclass *nve4_graph_oclass; extern struct nouveau_oclass *nve4_graph_oclass;
extern struct nouveau_oclass *nvf0_graph_oclass; extern struct nouveau_oclass *nvf0_graph_oclass;
extern struct nouveau_oclass *nv108_graph_oclass;
extern const struct nouveau_bitfield nv04_graph_nsource[]; extern const struct nouveau_bitfield nv04_graph_nsource[];
extern struct nouveau_ofuncs nv04_graph_ofuncs; extern struct nouveau_ofuncs nv04_graph_ofuncs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment