drm/nvf0/gr: build cs ucode for GK110
authorBen Skeggs <bskeggs@redhat.com>
Thu, 4 Jul 2013 03:03:59 +0000 (13:03 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 5 Jul 2013 03:44:16 +0000 (13:44 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc [new file with mode: 0644]
drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc [new file with mode: 0644]
drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h [new file with mode: 0644]
drivers/gpu/drm/nouveau/core/engine/graph/fuc/macros.fuc
drivers/gpu/drm/nouveau/core/engine/graph/nvf0.c

diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc
new file mode 100644 (file)
index 0000000..90bbe52
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * 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                                     0x00000002
+
+#define CHIPSET GK110
+#include "macros.fuc"
+
+.section #nvf0_grgpc_data
+#define INCLUDE_DATA
+#include "com.fuc"
+#include "gpc.fuc"
+#undef INCLUDE_DATA
+
+.section #nvf0_grgpc_code
+#define INCLUDE_CODE
+bra #init
+#include "com.fuc"
+#include "gpc.fuc"
+.align 256
+#undef INCLUDE_CODE
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnvf0.fuc.h
new file mode 100644 (file)
index 0000000..ecf9a5f
--- /dev/null
@@ -0,0 +1,472 @@
+uint32_t nvf0_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 */
+       0x00000001,
+/* 0x0020: unk_mask */
+       0x00000001,
+/* 0x0024: cmd_queue */
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+};
+
+uint32_t nvf0_grgpc_code[] = {
+       0x03060ef5,
+/* 0x0004: queue_put */
+       0x9800d898,
+       0x86f001d9,
+       0x0489b808,
+       0xf00c1bf4,
+       0x21f502f7,
+       0x00f802ec,
+/* 0x001c: queue_put_next */
+       0xb60798c4,
+       0x8dbb0384,
+       0x0880b600,
+       0x80008e80,
+       0x90b6018f,
+       0x0f94f001,
+       0xf801d980,
+/* 0x0039: queue_get */
+       0x0131f400,
+       0x9800d898,
+       0x89b801d9,
+       0x210bf404,
+       0xb60789c4,
+       0x9dbb0394,
+       0x0890b600,
+       0x98009e98,
+       0x80b6019f,
+       0x0f84f001,
+       0xf400d880,
+/* 0x0066: queue_get_done */
+       0x00f80132,
+/* 0x0068: nv_rd32 */
+       0x0728b7f1,
+       0xb906b4b6,
+       0xc9f002ec,
+       0x00bcd01f,
+/* 0x0078: nv_rd32_wait */
+       0xc800bccf,
+       0x1bf41fcc,
+       0x06a7f0fa,
+       0x010321f5,
+       0xf840bfcf,
+/* 0x008d: nv_wr32 */
+       0x28b7f100,
+       0x06b4b607,
+       0xb980bfd0,
+       0xc9f002ec,
+       0x1ec9f01f,
+/* 0x00a3: nv_wr32_wait */
+       0xcf00bcd0,
+       0xccc800bc,
+       0xfa1bf41f,
+/* 0x00ae: watchdog_reset */
+       0x87f100f8,
+       0x84b60430,
+       0x1ff9f006,
+       0xf8008fd0,
+/* 0x00bd: watchdog_clear */
+       0x3087f100,
+       0x0684b604,
+       0xf80080d0,
+/* 0x00c9: wait_donez */
+       0x3c87f100,
+       0x0684b608,
+       0x99f094bd,
+       0x0089d000,
+       0x081887f1,
+       0xd00684b6,
+/* 0x00e2: wait_donez_ne */
+       0x87f1008a,
+       0x84b60400,
+       0x0088cf06,
+       0xf4888aff,
+       0x87f1f31b,
+       0x84b6085c,
+       0xf094bd06,
+       0x89d00099,
+/* 0x0103: wait_doneo */
+       0xf100f800,
+       0xb6083c87,
+       0x94bd0684,
+       0xd00099f0,
+       0x87f10089,
+       0x84b60818,
+       0x008ad006,
+/* 0x011c: wait_doneo_e */
+       0x040087f1,
+       0xcf0684b6,
+       0x8aff0088,
+       0xf30bf488,
+       0x085c87f1,
+       0xbd0684b6,
+       0x0099f094,
+       0xf80089d0,
+/* 0x013d: mmctx_size */
+/* 0x013f: nv_mmctx_size_loop */
+       0x9894bd00,
+       0x85b600e8,
+       0x0180b61a,
+       0xbb0284b6,
+       0xe0b60098,
+       0x04efb804,
+       0xb9eb1bf4,
+       0x00f8029f,
+/* 0x015c: mmctx_xfer */
+       0x083c87f1,
+       0xbd0684b6,
+       0x0199f094,
+       0xf10089d0,
+       0xb6071087,
+       0x94bd0684,
+       0xf405bbfd,
+       0x8bd0090b,
+       0x0099f000,
+/* 0x0180: mmctx_base_disabled */
+       0xf405eefd,
+       0x8ed00c0b,
+       0xc08fd080,
+/* 0x018f: mmctx_multi_disabled */
+       0xb70199f0,
+       0xc8010080,
+       0xb4b600ab,
+       0x0cb9f010,
+       0xb601aec8,
+       0xbefd11e4,
+       0x008bd005,
+/* 0x01a8: mmctx_exec_loop */
+/* 0x01a8: mmctx_wait_free */
+       0xf0008ecf,
+       0x0bf41fe4,
+       0x00ce98fa,
+       0xd005e9fd,
+       0xc0b6c08e,
+       0x04cdb804,
+       0xc8e81bf4,
+       0x1bf402ab,
+/* 0x01c9: mmctx_fini_wait */
+       0x008bcf18,
+       0xb01fb4f0,
+       0x1bf410b4,
+       0x02a7f0f7,
+       0xf4c921f4,
+/* 0x01de: mmctx_stop */
+       0xabc81b0e,
+       0x10b4b600,
+       0xf00cb9f0,
+       0x8bd012b9,
+/* 0x01ed: mmctx_stop_wait */
+       0x008bcf00,
+       0xf412bbc8,
+/* 0x01f6: mmctx_done */
+       0x87f1fa1b,
+       0x84b6085c,
+       0xf094bd06,
+       0x89d00199,
+/* 0x0207: strand_wait */
+       0xf900f800,
+       0x02a7f0a0,
+       0xfcc921f4,
+/* 0x0213: strand_pre */
+       0xf100f8a0,
+       0xf04afc87,
+       0x97f00283,
+       0x0089d00c,
+       0x020721f5,
+/* 0x0226: strand_post */
+       0x87f100f8,
+       0x83f04afc,
+       0x0d97f002,
+       0xf50089d0,
+       0xf8020721,
+/* 0x0239: strand_set */
+       0xfca7f100,
+       0x02a3f04f,
+       0x0500aba2,
+       0xd00fc7f0,
+       0xc7f000ac,
+       0x00bcd00b,
+       0x020721f5,
+       0xf000aed0,
+       0xbcd00ac7,
+       0x0721f500,
+/* 0x0263: strand_ctx_init */
+       0xf100f802,
+       0xb6083c87,
+       0x94bd0684,
+       0xd00399f0,
+       0x21f50089,
+       0xe7f00213,
+       0x3921f503,
+       0xfca7f102,
+       0x02a3f046,
+       0x0400aba0,
+       0xf040a0d0,
+       0xbcd001c7,
+       0x0721f500,
+       0x010c9202,
+       0xf000acd0,
+       0xbcd002c7,
+       0x0721f500,
+       0x2621f502,
+       0x8087f102,
+       0x0684b608,
+       0xb70089cf,
+       0x95220080,
+/* 0x02ba: ctx_init_strand_loop */
+       0x8ed008fe,
+       0x408ed000,
+       0xb6808acf,
+       0xa0b606a5,
+       0x00eabb01,
+       0xb60480b6,
+       0x1bf40192,
+       0x08e4b6e8,
+       0xf1f2efbc,
+       0xb6085c87,
+       0x94bd0684,
+       0xd00399f0,
+       0x00f80089,
+/* 0x02ec: error */
+       0xe7f1e0f9,
+       0xe3f09814,
+       0x8d21f440,
+       0x041ce0b7,
+       0xf401f7f0,
+       0xe0fc8d21,
+/* 0x0306: init */
+       0x04bd00f8,
+       0xf10004fe,
+       0xf0120017,
+       0x12d00227,
+       0x2317f100,
+       0x0010fe04,
+       0x040017f1,
+       0xf0c010d0,
+       0x12d00427,
+       0x1031f400,
+       0x060817f1,
+       0xcf0614b6,
+       0x37f00012,
+       0x1f24f001,
+       0xb60432bb,
+       0x02800132,
+       0x06038005,
+       0x040010b7,
+       0x800012cf,
+       0x27f10402,
+       0x24b60800,
+       0x4022cf06,
+       0x47f134bd,
+       0x44b60700,
+       0x08259506,
+       0xd00045d0,
+       0x0e984045,
+       0x010f9800,
+       0x013d21f5,
+       0xbb002fbb,
+       0x0e98003f,
+       0x020f9801,
+       0x013d21f5,
+       0xfd050e98,
+       0x2ebb00ef,
+       0x003ebb00,
+       0x98020e98,
+       0x21f5030f,
+       0x0e98013d,
+       0x00effd07,
+       0xbb002ebb,
+       0x40b7003e,
+       0x35b61300,
+       0x0043d002,
+       0xb60825b6,
+       0x20b60635,
+       0x0130b601,
+       0xb60824b6,
+       0x2fb90834,
+       0x6321f502,
+       0x003fbb02,
+       0x080017f1,
+       0xd00614b6,
+       0x10b74013,
+       0x24bd0800,
+       0xd01f29f0,
+/* 0x03e6: main */
+       0x31f40012,
+       0x0028f400,
+       0xf424d7f0,
+       0x01f43921,
+       0x04e4b0f4,
+       0xfe1e18f4,
+       0x27f00181,
+       0xfd20bd06,
+       0xe4b60412,
+       0x051efd01,
+       0xf50018fe,
+       0xf404a821,
+/* 0x0416: main_not_ctx_xfer */
+       0xef94d30e,
+       0x01f5f010,
+       0x02ec21f5,
+/* 0x0423: ih */
+       0xf9c60ef4,
+       0x0188fe80,
+       0x90f980f9,
+       0xb0f9a0f9,
+       0xe0f9d0f9,
+       0x0acff0f9,
+       0x04abc480,
+       0xf11d0bf4,
+       0xf01900b7,
+       0xbecf24d7,
+       0x00bfcf40,
+       0xb70421f4,
+       0xf00400b0,
+       0xbed001e7,
+/* 0x0459: ih_no_fifo */
+       0x400ad000,
+       0xe0fcf0fc,
+       0xb0fcd0fc,
+       0x90fca0fc,
+       0x88fe80fc,
+       0xf480fc00,
+       0x01f80032,
+/* 0x0474: hub_barrier_done */
+       0x9801f7f0,
+       0xfebb040e,
+       0x18e7f104,
+       0x40e3f094,
+       0xf88d21f4,
+/* 0x0489: ctx_redswitch */
+       0x14e7f100,
+       0x06e4b606,
+       0xd020f7f0,
+       0xf7f000ef,
+/* 0x0499: ctx_redswitch_delay */
+       0x01f2b608,
+       0xf1fd1bf4,
+       0xd00a20f7,
+       0x00f800ef,
+/* 0x04a8: ctx_xfer */
+       0x0a0417f1,
+       0xd00614b6,
+       0x11f4001f,
+       0x8921f507,
+/* 0x04b9: ctx_xfer_not_load */
+       0xfc17f104,
+       0x0213f04a,
+       0xd00c27f0,
+       0x21f50012,
+       0x27f10207,
+       0x23f047fc,
+       0x0020d002,
+       0xb6012cf0,
+       0x12d00320,
+       0x01acf000,
+       0xf002a5f0,
+       0xb3f000b7,
+       0x040c9850,
+       0xbb0fc4b6,
+       0x0c9800bc,
+       0x010d9800,
+       0xf500e7f0,
+       0xf0015c21,
+       0xb7f101ac,
+       0xb3f04000,
+       0x040c9850,
+       0xbb0fc4b6,
+       0x0c9800bc,
+       0x020d9801,
+       0xf1060f98,
+       0xf50800e7,
+       0xf0015c21,
+       0xa5f001ac,
+       0x00b7f104,
+       0x50b3f030,
+       0xb6040c98,
+       0xbcbb0fc4,
+       0x020c9800,
+       0x98030d98,
+       0xe7f1080f,
+       0x21f50200,
+       0x21f5015c,
+       0x01f40207,
+       0x1412f406,
+/* 0x0554: ctx_xfer_post */
+       0x4afc17f1,
+       0xf00213f0,
+       0x12d00d27,
+       0x0721f500,
+/* 0x0565: ctx_xfer_done */
+       0x7421f502,
+       0x0000f804,
+       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,
+};
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc
new file mode 100644 (file)
index 0000000..ec42ed2
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * 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 GK110
+#include "macros.fuc"
+
+.section #nvf0_grhub_data
+#define INCLUDE_DATA
+#include "com.fuc"
+#include "hub.fuc"
+#undef INCLUDE_DATA
+
+.section #nvf0_grhub_code
+#define INCLUDE_CODE
+bra #init
+#include "com.fuc"
+#include "hub.fuc"
+.align 256
+#undef INCLUDE_CODE
diff --git a/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h b/drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnvf0.fuc.h
new file mode 100644 (file)
index 0000000..1b64fe5
--- /dev/null
@@ -0,0 +1,854 @@
+uint32_t nvf0_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 nvf0_grhub_code[] = {
+       0x03090ef5,
+/* 0x0004: queue_put */
+       0x9800d898,
+       0x86f001d9,
+       0x0489b808,
+       0xf00c1bf4,
+       0x21f502f7,
+       0x00f802ec,
+/* 0x001c: queue_put_next */
+       0xb60798c4,
+       0x8dbb0384,
+       0x0880b600,
+       0x80008e80,
+       0x90b6018f,
+       0x0f94f001,
+       0xf801d980,
+/* 0x0039: queue_get */
+       0x0131f400,
+       0x9800d898,
+       0x89b801d9,
+       0x210bf404,
+       0xb60789c4,
+       0x9dbb0394,
+       0x0890b600,
+       0x98009e98,
+       0x80b6019f,
+       0x0f84f001,
+       0xf400d880,
+/* 0x0066: queue_get_done */
+       0x00f80132,
+/* 0x0068: nv_rd32 */
+       0x0728b7f1,
+       0xb906b4b6,
+       0xc9f002ec,
+       0x00bcd01f,
+/* 0x0078: nv_rd32_wait */
+       0xc800bccf,
+       0x1bf41fcc,
+       0x06a7f0fa,
+       0x010321f5,
+       0xf840bfcf,
+/* 0x008d: nv_wr32 */
+       0x28b7f100,
+       0x06b4b607,
+       0xb980bfd0,
+       0xc9f002ec,
+       0x1ec9f01f,
+/* 0x00a3: nv_wr32_wait */
+       0xcf00bcd0,
+       0xccc800bc,
+       0xfa1bf41f,
+/* 0x00ae: watchdog_reset */
+       0x87f100f8,
+       0x84b60430,
+       0x1ff9f006,
+       0xf8008fd0,
+/* 0x00bd: watchdog_clear */
+       0x3087f100,
+       0x0684b604,
+       0xf80080d0,
+/* 0x00c9: wait_donez */
+       0x3c87f100,
+       0x0684b608,
+       0x99f094bd,
+       0x0089d000,
+       0x081887f1,
+       0xd00684b6,
+/* 0x00e2: wait_donez_ne */
+       0x87f1008a,
+       0x84b60400,
+       0x0088cf06,
+       0xf4888aff,
+       0x87f1f31b,
+       0x84b6085c,
+       0xf094bd06,
+       0x89d00099,
+/* 0x0103: wait_doneo */
+       0xf100f800,
+       0xb6083c87,
+       0x94bd0684,
+       0xd00099f0,
+       0x87f10089,
+       0x84b60818,
+       0x008ad006,
+/* 0x011c: wait_doneo_e */
+       0x040087f1,
+       0xcf0684b6,
+       0x8aff0088,
+       0xf30bf488,
+       0x085c87f1,
+       0xbd0684b6,
+       0x0099f094,
+       0xf80089d0,
+/* 0x013d: mmctx_size */
+/* 0x013f: nv_mmctx_size_loop */
+       0x9894bd00,
+       0x85b600e8,
+       0x0180b61a,
+       0xbb0284b6,
+       0xe0b60098,
+       0x04efb804,
+       0xb9eb1bf4,
+       0x00f8029f,
+/* 0x015c: mmctx_xfer */
+       0x083c87f1,
+       0xbd0684b6,
+       0x0199f094,
+       0xf10089d0,
+       0xb6071087,
+       0x94bd0684,
+       0xf405bbfd,
+       0x8bd0090b,
+       0x0099f000,
+/* 0x0180: mmctx_base_disabled */
+       0xf405eefd,
+       0x8ed00c0b,
+       0xc08fd080,
+/* 0x018f: mmctx_multi_disabled */
+       0xb70199f0,
+       0xc8010080,
+       0xb4b600ab,
+       0x0cb9f010,
+       0xb601aec8,
+       0xbefd11e4,
+       0x008bd005,
+/* 0x01a8: mmctx_exec_loop */
+/* 0x01a8: mmctx_wait_free */
+       0xf0008ecf,
+       0x0bf41fe4,
+       0x00ce98fa,
+       0xd005e9fd,
+       0xc0b6c08e,
+       0x04cdb804,
+       0xc8e81bf4,
+       0x1bf402ab,
+/* 0x01c9: mmctx_fini_wait */
+       0x008bcf18,
+       0xb01fb4f0,
+       0x1bf410b4,
+       0x02a7f0f7,
+       0xf4c921f4,
+/* 0x01de: mmctx_stop */
+       0xabc81b0e,
+       0x10b4b600,
+       0xf00cb9f0,
+       0x8bd012b9,
+/* 0x01ed: mmctx_stop_wait */
+       0x008bcf00,
+       0xf412bbc8,
+/* 0x01f6: mmctx_done */
+       0x87f1fa1b,
+       0x84b6085c,
+       0xf094bd06,
+       0x89d00199,
+/* 0x0207: strand_wait */
+       0xf900f800,
+       0x02a7f0a0,
+       0xfcc921f4,
+/* 0x0213: strand_pre */
+       0xf100f8a0,
+       0xf04afc87,
+       0x97f00283,
+       0x0089d00c,
+       0x020721f5,
+/* 0x0226: strand_post */
+       0x87f100f8,
+       0x83f04afc,
+       0x0d97f002,
+       0xf50089d0,
+       0xf8020721,
+/* 0x0239: strand_set */
+       0xfca7f100,
+       0x02a3f04f,
+       0x0500aba2,
+       0xd00fc7f0,
+       0xc7f000ac,
+       0x00bcd00b,
+       0x020721f5,
+       0xf000aed0,
+       0xbcd00ac7,
+       0x0721f500,
+/* 0x0263: strand_ctx_init */
+       0xf100f802,
+       0xb6083c87,
+       0x94bd0684,
+       0xd00399f0,
+       0x21f50089,
+       0xe7f00213,
+       0x3921f503,
+       0xfca7f102,
+       0x02a3f046,
+       0x0400aba0,
+       0xf040a0d0,
+       0xbcd001c7,
+       0x0721f500,
+       0x010c9202,
+       0xf000acd0,
+       0xbcd002c7,
+       0x0721f500,
+       0x2621f502,
+       0x8087f102,
+       0x0684b608,
+       0xb70089cf,
+       0x95220080,
+/* 0x02ba: ctx_init_strand_loop */
+       0x8ed008fe,
+       0x408ed000,
+       0xb6808acf,
+       0xa0b606a5,
+       0x00eabb01,
+       0xb60480b6,
+       0x1bf40192,
+       0x08e4b6e8,
+       0xf1f2efbc,
+       0xb6085c87,
+       0x94bd0684,
+       0xd00399f0,
+       0x00f80089,
+/* 0x02ec: error */
+       0xe7f1e0f9,
+       0xe4b60814,
+       0x00efd006,
+       0x0c1ce7f1,
+       0xf006e4b6,
+       0xefd001f7,
+       0xf8e0fc00,
+/* 0x0309: init */
+       0xfe04bd00,
+       0x07fe0004,
+       0x0017f100,
+       0x0227f012,
+       0xf10012d0,
+       0xfe058517,
+       0x17f10010,
+       0x10d00400,
+       0x0437f1c0,
+       0x0634b604,
+       0x200327f1,
+       0xf10032d0,
+       0xd0200427,
+       0x27f10132,
+       0x32d0200b,
+       0x0c27f102,
+       0x0732d020,
+       0x0c2427f1,
+       0xb90624b6,
+       0x23d00003,
+       0x0427f100,
+       0x0023f087,
+       0xb70012d0,
+       0xf0010012,
+       0x12d00427,
+       0x1031f400,
+       0x9604e7f1,
+       0xf440e3f0,
+       0xf1c76821,
+       0x03018090,
+       0x801ff4f0,
+       0x17f0020f,
+       0x041fbb01,
+       0xf10112b6,
+       0xb6040c27,
+       0x21d00624,
+       0x4021d000,
+       0x010017f1,
+       0x98000e98,
+       0x21f5010f,
+       0x37f1013d,
+       0x34b60700,
+       0x08149506,
+       0xd00034d0,
+       0x30b74034,
+       0x1fbb1300,
+       0x02f5b600,
+       0xb6003fd0,
+       0x10b60815,
+       0x0814b601,
+       0xf5021fb9,
+       0xbb026321,
+       0x0398001f,
+       0x0047f102,
+       0x5043f020,
+/* 0x03e4: init_gpc */
+       0x08044ea0,
+       0xf4021fb9,
+       0x4ea08d21,
+       0xf4bd010c,
+       0xa08d21f4,
+       0xf401044e,
+       0x4ea08d21,
+       0xf7f00100,
+       0x8d21f402,
+       0x08004ea0,
+/* 0x040c: init_gpc_wait */
+       0xc86821f4,
+       0x0bf41fff,
+       0x044ea0fa,
+       0x6821f408,
+       0xb7001fbb,
+       0xb6800040,
+       0x1bf40132,
+       0x0027f1be,
+       0x0624b608,
+       0xb74021d0,
+       0xbd080020,
+       0x1f19f014,
+/* 0x043f: main */
+       0xf40021d0,
+       0x28f40031,
+       0x10d7f000,
+       0xf43921f4,
+       0xe4b1f401,
+       0x1bf54001,
+       0x87f100d1,
+       0x84b6083c,
+       0xf094bd06,
+       0x89d00499,
+       0x0017f100,
+       0x0614b60b,
+       0xcf4012cf,
+       0x13c80011,
+       0x7e0bf41f,
+       0xf41f23c8,
+       0x20f95a0b,
+       0xf10212b9,
+       0xb6083c87,
+       0x94bd0684,
+       0xd00799f0,
+       0x32f40089,
+       0x0231f401,
+       0x07c721f5,
+       0x085c87f1,
+       0xbd0684b6,
+       0x0799f094,
+       0xfc0089d0,
+       0x3c87f120,
+       0x0684b608,
+       0x99f094bd,
+       0x0089d006,
+       0xf50131f4,
+       0xf107c721,
+       0xb6085c87,
+       0x94bd0684,
+       0xd00699f0,
+       0x0ef40089,
+/* 0x04d5: chsw_prev_no_next */
+       0xb920f931,
+       0x32f40212,
+       0x0232f401,
+       0x07c721f5,
+       0x17f120fc,
+       0x14b60b00,
+       0x0012d006,
+/* 0x04f3: chsw_no_prev */
+       0xc8130ef4,
+       0x0bf41f23,
+       0x0131f40d,
+       0xf50232f4,
+/* 0x0503: chsw_done */
+       0xf107c721,
+       0xb60b0c17,
+       0x27f00614,
+       0x0012d001,
+       0x085c87f1,
+       0xbd0684b6,
+       0x0499f094,
+       0xf50089d0,
+/* 0x0523: main_not_ctx_switch */
+       0xb0ff200e,
+       0x1bf401e4,
+       0x02f2b90d,
+       0x075b21f5,
+/* 0x0533: main_not_ctx_chan */
+       0xb0420ef4,
+       0x1bf402e4,
+       0x3c87f12e,
+       0x0684b608,
+       0x99f094bd,
+       0x0089d007,
+       0xf40132f4,
+       0x21f50232,
+       0x87f107c7,
+       0x84b6085c,
+       0xf094bd06,
+       0x89d00799,
+       0x110ef400,
+/* 0x0564: main_not_ctx_save */
+       0xf010ef94,
+       0x21f501f5,
+       0x0ef502ec,
+/* 0x0572: main_done */
+       0x17f1fed1,
+       0x14b60820,
+       0xf024bd06,
+       0x12d01f29,
+       0xbe0ef500,
+/* 0x0585: ih */
+       0xfe80f9fe,
+       0x80f90188,
+       0xa0f990f9,
+       0xd0f9b0f9,
+       0xf0f9e0f9,
+       0xc4800acf,
+       0x0bf404ab,
+       0x00b7f11d,
+       0x10d7f019,
+       0xcf40becf,
+       0x21f400bf,
+       0x00b0b704,
+       0x01e7f004,
+/* 0x05bb: ih_no_fifo */
+       0xe400bed0,
+       0xf40100ab,
+       0xd7f00d0b,
+       0x01e7f110,
+       0x0421f440,
+/* 0x05cc: ih_no_ctxsw */
+       0x0104b7f1,
+       0xabffb0bd,
+       0x0d0bf4b4,
+       0x0c1ca7f1,
+       0xd006a4b6,
+/* 0x05e2: ih_no_other */
+       0x0ad000ab,
+       0xfcf0fc40,
+       0xfcd0fce0,
+       0xfca0fcb0,
+       0xfe80fc90,
+       0x80fc0088,
+       0xf80032f4,
+/* 0x05fd: ctx_4170s */
+       0x70e7f101,
+       0x40e3f041,
+       0xf410f5f0,
+       0x00f88d21,
+/* 0x060c: ctx_4170w */
+       0x4170e7f1,
+       0xf440e3f0,
+       0xf4f06821,
+       0xf31bf410,
+/* 0x061e: ctx_redswitch */
+       0xe7f100f8,
+       0xe4b60614,
+       0x70f7f106,
+       0x00efd002,
+/* 0x062f: ctx_redswitch_delay */
+       0xb608f7f0,
+       0x1bf401f2,
+       0x70f7f1fd,
+       0x00efd007,
+/* 0x063e: ctx_86c */
+       0xe7f100f8,
+       0xe4b6086c,
+       0x00efd006,
+       0x8a14e7f1,
+       0xf440e3f0,
+       0xe7f18d21,
+       0xe3f0a86c,
+       0x8d21f441,
+/* 0x065e: ctx_load */
+       0x87f100f8,
+       0x84b6083c,
+       0xf094bd06,
+       0x89d00599,
+       0x0ca7f000,
+       0xf1c921f4,
+       0xb60a2417,
+       0x10d00614,
+       0x0037f100,
+       0x0634b60b,
+       0xf14032d0,
+       0xb60a0c17,
+       0x47f00614,
+       0x0012d007,
+/* 0x0697: ctx_chan_wait_0 */
+       0xcf4014d0,
+       0x44f04014,
+       0xfa1bf41f,
+       0xfe0032d0,
+       0x2af0000b,
+       0x0424b61f,
+       0xf10220b6,
+       0xb6083c87,
+       0x94bd0684,
+       0xd00899f0,
+       0x17f10089,
+       0x14b60a04,
+       0x0012d006,
+       0x0a2017f1,
+       0xf00614b6,
+       0x23f10227,
+       0x12d08000,
+       0x1017f000,
+       0x020027f1,
+       0xfa0223f0,
+       0x03f80512,
+       0x085c87f1,
+       0xbd0684b6,
+       0x0899f094,
+       0x980089d0,
+       0x14b68101,
+       0x80029818,
+       0xfd0825b6,
+       0x01800512,
+       0x3c87f116,
+       0x0684b608,
+       0x99f094bd,
+       0x0089d009,
+       0x0a0427f1,
+       0xd00624b6,
+       0x27f00021,
+       0x2017f101,
+       0x0614b60a,
+       0xf10012d0,
+       0xf0010017,
+       0x01fa0613,
+       0xf103f805,
+       0xb6085c87,
+       0x94bd0684,
+       0xd00999f0,
+       0x87f10089,
+       0x84b6085c,
+       0xf094bd06,
+       0x89d00599,
+/* 0x075b: ctx_chan */
+       0xf500f800,
+       0xf0065e21,
+       0x21f40ca7,
+       0x1017f1c9,
+       0x0614b60a,
+       0xd00527f0,
+/* 0x0772: ctx_chan_wait */
+       0x12cf0012,
+       0x0522fd00,
+       0xf8fa1bf4,
+/* 0x077d: ctx_mmio_exec */
+       0x41039800,
+       0x0a0427f1,
+       0xd00624b6,
+       0x34bd0023,
+/* 0x078c: ctx_mmio_loop */
+       0xf4ff34c4,
+       0x57f10f1b,
+       0x53f00200,
+       0x0535fa06,
+/* 0x079e: ctx_mmio_pull */
+       0x4e9803f8,
+       0x814f9880,
+       0xb68d21f4,
+       0x12b60830,
+       0xdf1bf401,
+/* 0x07b0: ctx_mmio_done */
+       0xd0160398,
+       0x00800023,
+       0x0017f140,
+       0x0613f001,
+       0xf80601fa,
+/* 0x07c7: ctx_xfer */
+       0xf100f803,
+       0xb60c00f7,
+       0xe7f006f4,
+       0x80fed004,
+/* 0x07d4: ctx_xfer_idle */
+       0xf100fecf,
+       0xf42000e4,
+       0x11f4f91b,
+       0x0d02f406,
+/* 0x07e4: ctx_xfer_pre */
+       0xf510f7f0,
+       0xf4063e21,
+/* 0x07ee: ctx_xfer_pre_load */
+       0xf7f01c11,
+       0xfd21f502,
+       0x0c21f505,
+       0x1e21f506,
+       0xf5f4bd06,
+       0xf505fd21,
+/* 0x0807: ctx_xfer_exec */
+       0x98065e21,
+       0x27f11601,
+       0x24b60414,
+       0x0020d006,
+       0xa500e7f1,
+       0xb941e3f0,
+       0x21f4021f,
+       0x04e0b68d,
+       0xf001fcf0,
+       0x24b6022c,
+       0x05f2fd01,
+       0xf18d21f4,
+       0xf04afc17,
+       0x27f00213,
+       0x0012d00c,
+       0x020721f5,
+       0x47fc27f1,
+       0xd00223f0,
+       0x2cf00020,
+       0x0320b601,
+       0xf00012d0,
+       0xa5f001ac,
+       0x00b7f006,
+       0x98000c98,
+       0xe7f0010d,
+       0x5c21f500,
+       0x08a7f001,
+       0x010321f5,
+       0x020721f5,
+       0xf02201f4,
+       0x21f40ca7,
+       0x1017f1c9,
+       0x0614b60a,
+       0xd00527f0,
+/* 0x088e: ctx_xfer_post_save_wait */
+       0x12cf0012,
+       0x0522fd00,
+       0xf4fa1bf4,
+/* 0x089a: ctx_xfer_post */
+       0xf7f02e02,
+       0xfd21f502,
+       0xf5f4bd05,
+       0xf5063e21,
+       0xf5022621,
+       0xbd060c21,
+       0xfd21f5f4,
+       0x1011f405,
+       0xfd400198,
+       0x0bf40511,
+       0x7d21f507,
+/* 0x08c5: ctx_xfer_no_post_mmio */
+/* 0x08c5: ctx_xfer_done */
+       0x0000f807,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+};
index f73cf3e..c746428 100644 (file)
@@ -27,6 +27,7 @@
 #define GF100 0xc0
 #define GF117 0xd7
 #define GK100 0xe0
+#define GK110 0xf0
 
 #define mmctx_data(r,c) .b32 (((c - 1) << 26) | r)
 #define queue_init      .skip 72 // (2 * 4) + ((8 * 4) * 2)
index 01294b0..2f0ac78 100644 (file)
@@ -211,6 +211,26 @@ nvf0_graph_init_mmio[] = {
        NULL
 };
 
+#include "fuc/hubnvf0.fuc.h"
+
+static struct nvc0_graph_ucode
+nvf0_graph_fecs_ucode = {
+       .code.data = nvf0_grhub_code,
+       .code.size = sizeof(nvf0_grhub_code),
+       .data.data = nvf0_grhub_data,
+       .data.size = sizeof(nvf0_grhub_data),
+};
+
+#include "fuc/gpcnvf0.fuc.h"
+
+static struct nvc0_graph_ucode
+nvf0_graph_gpccs_ucode = {
+       .code.data = nvf0_grgpc_code,
+       .code.size = sizeof(nvf0_grgpc_code),
+       .data.data = nvf0_grgpc_data,
+       .data.size = sizeof(nvf0_grgpc_data),
+};
+
 struct nouveau_oclass *
 nvf0_graph_oclass = &(struct nvc0_graph_oclass) {
        .base.handle = NV_ENGINE(GR, 0xf0),
@@ -223,4 +243,6 @@ nvf0_graph_oclass = &(struct nvc0_graph_oclass) {
        .cclass = &nvf0_grctx_oclass,
        .sclass =  nvf0_graph_sclass,
        .mmio = nvf0_graph_init_mmio,
+       .fecs.ucode = 0 ? &nvf0_graph_fecs_ucode : NULL,
+       .gpccs.ucode = &nvf0_graph_gpccs_ucode,
 }.base;