summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/regops_gk20a.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/regops_gk20a.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/regops_gk20a.h50
1 files changed, 48 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/regops_gk20a.h b/drivers/gpu/nvgpu/gk20a/regops_gk20a.h
index 4db79397..236fb52c 100644
--- a/drivers/gpu/nvgpu/gk20a/regops_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/regops_gk20a.h
@@ -24,17 +24,63 @@
24#ifndef REGOPS_GK20A_H 24#ifndef REGOPS_GK20A_H
25#define REGOPS_GK20A_H 25#define REGOPS_GK20A_H
26 26
27/*
28 * Register operations
29 * All operations are targeted towards first channel
30 * attached to debug session
31 */
32/* valid op values */
33#define NVGPU_DBG_REG_OP_READ_32 (0x00000000)
34#define NVGPU_DBG_REG_OP_WRITE_32 (0x00000001)
35#define NVGPU_DBG_REG_OP_READ_64 (0x00000002)
36#define NVGPU_DBG_REG_OP_WRITE_64 (0x00000003)
37/* note: 8b ops are unsupported */
38#define NVGPU_DBG_REG_OP_READ_08 (0x00000004)
39#define NVGPU_DBG_REG_OP_WRITE_08 (0x00000005)
40
41/* valid type values */
42#define NVGPU_DBG_REG_OP_TYPE_GLOBAL (0x00000000)
43#define NVGPU_DBG_REG_OP_TYPE_GR_CTX (0x00000001)
44#define NVGPU_DBG_REG_OP_TYPE_GR_CTX_TPC (0x00000002)
45#define NVGPU_DBG_REG_OP_TYPE_GR_CTX_SM (0x00000004)
46#define NVGPU_DBG_REG_OP_TYPE_GR_CTX_CROP (0x00000008)
47#define NVGPU_DBG_REG_OP_TYPE_GR_CTX_ZROP (0x00000010)
48/*#define NVGPU_DBG_REG_OP_TYPE_FB (0x00000020)*/
49#define NVGPU_DBG_REG_OP_TYPE_GR_CTX_QUAD (0x00000040)
50
51/* valid status values */
52#define NVGPU_DBG_REG_OP_STATUS_SUCCESS (0x00000000)
53#define NVGPU_DBG_REG_OP_STATUS_INVALID_OP (0x00000001)
54#define NVGPU_DBG_REG_OP_STATUS_INVALID_TYPE (0x00000002)
55#define NVGPU_DBG_REG_OP_STATUS_INVALID_OFFSET (0x00000004)
56#define NVGPU_DBG_REG_OP_STATUS_UNSUPPORTED_OP (0x00000008)
57#define NVGPU_DBG_REG_OP_STATUS_INVALID_MASK (0x00000010)
58
59struct nvgpu_dbg_reg_op {
60 __u8 op;
61 __u8 type;
62 __u8 status;
63 __u8 quad;
64 __u32 group_mask;
65 __u32 sub_group_mask;
66 __u32 offset;
67 __u32 value_lo;
68 __u32 value_hi;
69 __u32 and_n_mask_lo;
70 __u32 and_n_mask_hi;
71};
72
27struct regop_offset_range { 73struct regop_offset_range {
28 u32 base:24; 74 u32 base:24;
29 u32 count:8; 75 u32 count:8;
30}; 76};
31 77
32int exec_regops_gk20a(struct dbg_session_gk20a *dbg_s, 78int exec_regops_gk20a(struct dbg_session_gk20a *dbg_s,
33 struct nvgpu_dbg_gpu_reg_op *ops, 79 struct nvgpu_dbg_reg_op *ops,
34 u64 num_ops); 80 u64 num_ops);
35 81
36/* turn seriously unwieldy names -> something shorter */ 82/* turn seriously unwieldy names -> something shorter */
37#define REGOP(x) NVGPU_DBG_GPU_REG_OP_##x 83#define REGOP(x) NVGPU_DBG_REG_OP_##x
38 84
39bool reg_op_is_gr_ctx(u8 type); 85bool reg_op_is_gr_ctx(u8 type);
40bool reg_op_is_read(u8 op); 86bool reg_op_is_read(u8 op);