mirror of
https://github.com/torvalds/linux.git
synced 2024-11-17 01:22:07 +00:00
drm/nv108/gr: initial support (need external fuc)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
daa9ab5821
commit
96616b4caf
@ -243,6 +243,7 @@ nouveau-y += core/engine/graph/ctxnvd7.o
|
||||
nouveau-y += core/engine/graph/ctxnvd9.o
|
||||
nouveau-y += core/engine/graph/ctxnve4.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/nv10.o
|
||||
nouveau-y += core/engine/graph/nv20.o
|
||||
@ -261,6 +262,7 @@ nouveau-y += core/engine/graph/nvd7.o
|
||||
nouveau-y += core/engine/graph/nvd9.o
|
||||
nouveau-y += core/engine/graph/nve4.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/nv40.o
|
||||
nouveau-y += core/engine/mpeg/nv44.o
|
||||
|
@ -213,10 +213,8 @@ nve0_identify(struct nouveau_device *device)
|
||||
device->oclass[NVDEV_SUBDEV_VOLT ] = &nv40_volt_oclass;
|
||||
device->oclass[NVDEV_ENGINE_DMAOBJ ] = &nvd0_dmaeng_oclass;
|
||||
device->oclass[NVDEV_ENGINE_FIFO ] = nv108_fifo_oclass;
|
||||
#if 0
|
||||
device->oclass[NVDEV_ENGINE_SW ] = nvc0_software_oclass;
|
||||
device->oclass[NVDEV_ENGINE_GR ] = nvf0_graph_oclass;
|
||||
#endif
|
||||
device->oclass[NVDEV_ENGINE_GR ] = nv108_graph_oclass;
|
||||
device->oclass[NVDEV_ENGINE_DISP ] = &nvf0_disp_oclass;
|
||||
device->oclass[NVDEV_ENGINE_COPY0 ] = &nve0_copy0_oclass;
|
||||
device->oclass[NVDEV_ENGINE_COPY1 ] = &nve0_copy1_oclass;
|
||||
|
1408
drivers/gpu/drm/nouveau/core/engine/graph/ctxnv108.c
Normal file
1408
drivers/gpu/drm/nouveau/core/engine/graph/ctxnv108.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -50,7 +50,7 @@ nvf0_grctx_init_unk40xx[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static struct nvc0_graph_init
|
||||
struct nvc0_graph_init
|
||||
nvf0_grctx_init_unk44xx[] = {
|
||||
{ 0x404404, 12, 0x04, 0x00000000 },
|
||||
{ 0x404438, 1, 0x04, 0x00000000 },
|
||||
@ -62,7 +62,7 @@ nvf0_grctx_init_unk44xx[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static struct nvc0_graph_init
|
||||
struct nvc0_graph_init
|
||||
nvf0_grctx_init_unk5bxx[] = {
|
||||
{ 0x405b00, 1, 0x04, 0x00000000 },
|
||||
{ 0x405b10, 1, 0x04, 0x00001000 },
|
||||
@ -70,7 +70,7 @@ nvf0_grctx_init_unk5bxx[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static struct nvc0_graph_init
|
||||
struct nvc0_graph_init
|
||||
nvf0_grctx_init_unk60xx[] = {
|
||||
{ 0x406020, 1, 0x04, 0x034103c1 },
|
||||
{ 0x406028, 4, 0x04, 0x00000001 },
|
||||
|
42
drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5
Normal file
42
drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5
Normal file
@ -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 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
|
473
drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h
Normal file
473
drivers/gpu/drm/nouveau/core/engine/graph/fuc/gpcnv108.fuc5.h
Normal file
@ -0,0 +1,473 @@
|
||||
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,
|
||||
};
|
40
drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5
Normal file
40
drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5
Normal file
@ -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 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
|
851
drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
Normal file
851
drivers/gpu/drm/nouveau/core/engine/graph/fuc/hubnv108.fuc5.h
Normal file
@ -0,0 +1,851 @@
|
||||
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,
|
||||
};
|
236
drivers/gpu/drm/nouveau/core/engine/graph/nv108.c
Normal file
236
drivers/gpu/drm/nouveau/core/engine/graph/nv108.c
Normal file
@ -0,0 +1,236 @@
|
||||
/*
|
||||
* 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)
|
||||
}
|
||||
|
||||
return 0;
|
||||
} else
|
||||
if (!oclass->fecs.ucode) {
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
/* load HUB microcode */
|
||||
|
@ -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_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 *);
|
||||
void nvc0_grctx_generate_main(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[];
|
||||
extern struct nvc0_graph_init nve4_grctx_init_unk90xx[];
|
||||
|
||||
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 { \
|
||||
info->buffer[info->buffer_nr] = round_up(info->addr, (a)); \
|
||||
|
@ -41,7 +41,7 @@ nvf0_graph_sclass[] = {
|
||||
* PGRAPH engine/subdev functions
|
||||
******************************************************************************/
|
||||
|
||||
static struct nvc0_graph_init
|
||||
struct nvc0_graph_init
|
||||
nvf0_graph_init_unk40xx[] = {
|
||||
{ 0x40415c, 1, 0x04, 0x00000000 },
|
||||
{ 0x404170, 1, 0x04, 0x00000000 },
|
||||
@ -60,7 +60,7 @@ nvf0_graph_init_unk58xx[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static struct nvc0_graph_init
|
||||
struct nvc0_graph_init
|
||||
nvf0_graph_init_unk70xx[] = {
|
||||
{ 0x407010, 1, 0x04, 0x00000000 },
|
||||
{ 0x407040, 1, 0x04, 0x80440424 },
|
||||
@ -68,7 +68,7 @@ nvf0_graph_init_unk70xx[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static struct nvc0_graph_init
|
||||
struct nvc0_graph_init
|
||||
nvf0_graph_init_unk5bxx[] = {
|
||||
{ 0x405b44, 1, 0x04, 0x00000000 },
|
||||
{ 0x405b50, 1, 0x04, 0x00000000 },
|
||||
@ -114,7 +114,7 @@ nvf0_graph_init_gpc[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static struct nvc0_graph_init
|
||||
struct nvc0_graph_init
|
||||
nvf0_graph_init_tpc[] = {
|
||||
{ 0x419d0c, 1, 0x04, 0x00000000 },
|
||||
{ 0x419d10, 1, 0x04, 0x00000014 },
|
||||
|
@ -69,6 +69,7 @@ extern struct nouveau_oclass *nvd7_graph_oclass;
|
||||
extern struct nouveau_oclass *nvd9_graph_oclass;
|
||||
extern struct nouveau_oclass *nve4_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 struct nouveau_ofuncs nv04_graph_ofuncs;
|
||||
|
Loading…
Reference in New Issue
Block a user