Rosenblatt Phase-2: userspace regcmd builder — U3 wrapper + CNA stage (4a)
- librocket.{c,h}: thin ioctl wrapper over the rocket accel uAPI (open + CREATE_BO/
SUBMIT/PREP_BO/FINI_BO + mmap). Compiles with -I/usr/include/drm.
- rkt_matmul_cna.{c,h} + cna_defs.h: CNA-stage regcmd emit for an INT8 matmul-as-
1x1-conv, faithful port of Mesa rocket fill_first_regcmd's CNA section. Compiles
clean (-Wall -Wextra), 85 emits. Cross-validated: two independent ports (dspark
Montessori-scaffolded + big-pickle autonomous) agree at the emit level.
- rkt_matmul_coredpu.{c,h} + coredpu_defs.h: CORE+DPU+PC scaffold (empty body,
@@INSERT@@ marker). Params struct incl. float scales + 3 DMA-addr fields.
Body port is WIP: 82 DPU emits + float requant + PC tail remain (needs slicing).
- *_reference.txt: curated Mesa rocket emit excerpts + register defines (implementer
reference bundles).
Implementer: dspark (DeepSeek-V4-Flash NVFP4, local) via Montessori scaffolding;
autonomous CNA also produced by opencode/big-pickle. Multi-model benchmark in
claude-memory reference_dspark_implementer. NOT golden-verified (faithful-to-Mesa;
needs a Mesa build or NPU hardware to byte-check).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWpfhDgYNA21tETDP9ueBE
This commit is contained in:
@@ -0,0 +1 @@
|
||||
*.o
|
||||
@@ -0,0 +1,532 @@
|
||||
#ifndef CNA_DEFS_H
|
||||
#define CNA_DEFS_H
|
||||
|
||||
#define REG_CNA_S_STATUS 0x00001000
|
||||
#define CNA_S_STATUS_RESERVED_0__MASK 0xfffc0000
|
||||
#define CNA_S_STATUS_RESERVED_0__SHIFT 18
|
||||
#define CNA_S_STATUS_STATUS_1__MASK 0x00030000
|
||||
#define CNA_S_STATUS_STATUS_1__SHIFT 16
|
||||
#define CNA_S_STATUS_RESERVED_1__MASK 0x0000fffc
|
||||
#define CNA_S_STATUS_RESERVED_1__SHIFT 2
|
||||
#define CNA_S_STATUS_STATUS_0__MASK 0x00000003
|
||||
#define CNA_S_STATUS_STATUS_0__SHIFT 0
|
||||
#define REG_CNA_S_POINTER 0x00001004
|
||||
#define CNA_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define CNA_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define CNA_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define CNA_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define CNA_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define CNA_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define CNA_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define CNA_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define CNA_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define CNA_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define CNA_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define CNA_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define CNA_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define CNA_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define CNA_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define CNA_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define CNA_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define CNA_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_CNA_OPERATION_ENABLE 0x00001008
|
||||
#define CNA_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define CNA_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define CNA_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define CNA_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_CNA_CONV_CON1 0x0000100c
|
||||
#define CNA_CONV_CON1_RESERVED_0__MASK 0x80000000
|
||||
#define CNA_CONV_CON1_RESERVED_0__SHIFT 31
|
||||
#define CNA_CONV_CON1_NONALIGN_DMA__MASK 0x40000000
|
||||
#define CNA_CONV_CON1_NONALIGN_DMA__SHIFT 30
|
||||
#define CNA_CONV_CON1_GROUP_LINE_OFF__MASK 0x20000000
|
||||
#define CNA_CONV_CON1_GROUP_LINE_OFF__SHIFT 29
|
||||
#define CNA_CONV_CON1_RESERVED_1__MASK 0x1ffe0000
|
||||
#define CNA_CONV_CON1_RESERVED_1__SHIFT 17
|
||||
#define CNA_CONV_CON1_DECONV__MASK 0x00010000
|
||||
#define CNA_CONV_CON1_DECONV__SHIFT 16
|
||||
#define CNA_CONV_CON1_ARGB_IN__MASK 0x0000f000
|
||||
#define CNA_CONV_CON1_ARGB_IN__SHIFT 12
|
||||
#define CNA_CONV_CON1_RESERVED_2__MASK 0x00000c00
|
||||
#define CNA_CONV_CON1_RESERVED_2__SHIFT 10
|
||||
#define CNA_CONV_CON1_PROC_PRECISION__MASK 0x00000380
|
||||
#define CNA_CONV_CON1_PROC_PRECISION__SHIFT 7
|
||||
#define CNA_CONV_CON1_IN_PRECISION__MASK 0x00000070
|
||||
#define CNA_CONV_CON1_IN_PRECISION__SHIFT 4
|
||||
#define CNA_CONV_CON1_CONV_MODE__MASK 0x0000000f
|
||||
#define CNA_CONV_CON1_CONV_MODE__SHIFT 0
|
||||
#define REG_CNA_CONV_CON2 0x00001010
|
||||
#define CNA_CONV_CON2_RESERVED_0__MASK 0xff000000
|
||||
#define CNA_CONV_CON2_RESERVED_0__SHIFT 24
|
||||
#define CNA_CONV_CON2_KERNEL_GROUP__MASK 0x00ff0000
|
||||
#define CNA_CONV_CON2_KERNEL_GROUP__SHIFT 16
|
||||
#define CNA_CONV_CON2_RESERVED_1__MASK 0x0000c000
|
||||
#define CNA_CONV_CON2_RESERVED_1__SHIFT 14
|
||||
#define CNA_CONV_CON2_FEATURE_GRAINS__MASK 0x00003ff0
|
||||
#define CNA_CONV_CON2_FEATURE_GRAINS__SHIFT 4
|
||||
#define CNA_CONV_CON2_RESERVED_2__MASK 0x00000008
|
||||
#define CNA_CONV_CON2_RESERVED_2__SHIFT 3
|
||||
#define CNA_CONV_CON2_CSC_WO_EN__MASK 0x00000004
|
||||
#define CNA_CONV_CON2_CSC_WO_EN__SHIFT 2
|
||||
#define CNA_CONV_CON2_CSC_DO_EN__MASK 0x00000002
|
||||
#define CNA_CONV_CON2_CSC_DO_EN__SHIFT 1
|
||||
#define CNA_CONV_CON2_CMD_FIFO_SRST__MASK 0x00000001
|
||||
#define CNA_CONV_CON2_CMD_FIFO_SRST__SHIFT 0
|
||||
#define REG_CNA_CONV_CON3 0x00001014
|
||||
#define CNA_CONV_CON3_RESERVED_0__MASK 0x80000000
|
||||
#define CNA_CONV_CON3_RESERVED_0__SHIFT 31
|
||||
#define CNA_CONV_CON3_NN_MODE__MASK 0x70000000
|
||||
#define CNA_CONV_CON3_NN_MODE__SHIFT 28
|
||||
#define CNA_CONV_CON3_RESERVED_1__MASK 0x0c000000
|
||||
#define CNA_CONV_CON3_RESERVED_1__SHIFT 26
|
||||
#define CNA_CONV_CON3_ATROUS_Y_DILATION__MASK 0x03e00000
|
||||
#define CNA_CONV_CON3_ATROUS_Y_DILATION__SHIFT 21
|
||||
#define CNA_CONV_CON3_ATROUS_X_DILATION__MASK 0x001f0000
|
||||
#define CNA_CONV_CON3_ATROUS_X_DILATION__SHIFT 16
|
||||
#define CNA_CONV_CON3_RESERVED_2__MASK 0x0000c000
|
||||
#define CNA_CONV_CON3_RESERVED_2__SHIFT 14
|
||||
#define CNA_CONV_CON3_DECONV_Y_STRIDE__MASK 0x00003800
|
||||
#define CNA_CONV_CON3_DECONV_Y_STRIDE__SHIFT 11
|
||||
#define CNA_CONV_CON3_DECONV_X_STRIDE__MASK 0x00000700
|
||||
#define CNA_CONV_CON3_DECONV_X_STRIDE__SHIFT 8
|
||||
#define CNA_CONV_CON3_RESERVED_3__MASK 0x000000c0
|
||||
#define CNA_CONV_CON3_RESERVED_3__SHIFT 6
|
||||
#define CNA_CONV_CON3_CONV_Y_STRIDE__MASK 0x00000038
|
||||
#define CNA_CONV_CON3_CONV_Y_STRIDE__SHIFT 3
|
||||
#define CNA_CONV_CON3_CONV_X_STRIDE__MASK 0x00000007
|
||||
#define CNA_CONV_CON3_CONV_X_STRIDE__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE0 0x00001020
|
||||
#define CNA_DATA_SIZE0_RESERVED_0__MASK 0xf8000000
|
||||
#define CNA_DATA_SIZE0_RESERVED_0__SHIFT 27
|
||||
#define CNA_DATA_SIZE0_DATAIN_WIDTH__MASK 0x07ff0000
|
||||
#define CNA_DATA_SIZE0_DATAIN_WIDTH__SHIFT 16
|
||||
#define CNA_DATA_SIZE0_RESERVED_1__MASK 0x0000f800
|
||||
#define CNA_DATA_SIZE0_RESERVED_1__SHIFT 11
|
||||
#define CNA_DATA_SIZE0_DATAIN_HEIGHT__MASK 0x000007ff
|
||||
#define CNA_DATA_SIZE0_DATAIN_HEIGHT__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE1 0x00001024
|
||||
#define CNA_DATA_SIZE1_RESERVED_0__MASK 0xc0000000
|
||||
#define CNA_DATA_SIZE1_RESERVED_0__SHIFT 30
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL_REAL__MASK 0x3fff0000
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL_REAL__SHIFT 16
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL__MASK 0x0000ffff
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE2 0x00001028
|
||||
#define CNA_DATA_SIZE2_RESERVED_0__MASK 0xfffff800
|
||||
#define CNA_DATA_SIZE2_RESERVED_0__SHIFT 11
|
||||
#define CNA_DATA_SIZE2_DATAOUT_WIDTH__MASK 0x000007ff
|
||||
#define CNA_DATA_SIZE2_DATAOUT_WIDTH__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE3 0x0000102c
|
||||
#define CNA_DATA_SIZE3_RESERVED_0__MASK 0xff000000
|
||||
#define CNA_DATA_SIZE3_RESERVED_0__SHIFT 24
|
||||
#define CNA_DATA_SIZE3_SURF_MODE__MASK 0x00c00000
|
||||
#define CNA_DATA_SIZE3_SURF_MODE__SHIFT 22
|
||||
#define CNA_DATA_SIZE3_DATAOUT_ATOMICS__MASK 0x003fffff
|
||||
#define CNA_DATA_SIZE3_DATAOUT_ATOMICS__SHIFT 0
|
||||
#define REG_CNA_WEIGHT_SIZE0 0x00001030
|
||||
#define CNA_WEIGHT_SIZE0_WEIGHT_BYTES__MASK 0xffffffff
|
||||
#define CNA_WEIGHT_SIZE0_WEIGHT_BYTES__SHIFT 0
|
||||
#define REG_CNA_WEIGHT_SIZE1 0x00001034
|
||||
#define CNA_WEIGHT_SIZE1_RESERVED_0__MASK 0xfff80000
|
||||
#define CNA_WEIGHT_SIZE1_RESERVED_0__SHIFT 19
|
||||
#define CNA_WEIGHT_SIZE1_WEIGHT_BYTES_PER_KERNEL__MASK 0x0007ffff
|
||||
#define CNA_WEIGHT_SIZE1_WEIGHT_BYTES_PER_KERNEL__SHIFT 0
|
||||
#define REG_CNA_WEIGHT_SIZE2 0x00001038
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_0__MASK 0xe0000000
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_0__SHIFT 29
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_WIDTH__MASK 0x1f000000
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_WIDTH__SHIFT 24
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_1__MASK 0x00e00000
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_1__SHIFT 21
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_HEIGHT__MASK 0x001f0000
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_HEIGHT__SHIFT 16
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_2__MASK 0x0000c000
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_2__SHIFT 14
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_KERNELS__MASK 0x00003fff
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_KERNELS__SHIFT 0
|
||||
#define REG_CNA_CBUF_CON0 0x00001040
|
||||
#define CNA_CBUF_CON0_RESERVED_0__MASK 0xffffc000
|
||||
#define CNA_CBUF_CON0_RESERVED_0__SHIFT 14
|
||||
#define CNA_CBUF_CON0_WEIGHT_REUSE__MASK 0x00002000
|
||||
#define CNA_CBUF_CON0_WEIGHT_REUSE__SHIFT 13
|
||||
#define CNA_CBUF_CON0_DATA_REUSE__MASK 0x00001000
|
||||
#define CNA_CBUF_CON0_DATA_REUSE__SHIFT 12
|
||||
#define CNA_CBUF_CON0_RESERVED_1__MASK 0x00000800
|
||||
#define CNA_CBUF_CON0_RESERVED_1__SHIFT 11
|
||||
#define CNA_CBUF_CON0_FC_DATA_BANK__MASK 0x00000700
|
||||
#define CNA_CBUF_CON0_FC_DATA_BANK__SHIFT 8
|
||||
#define CNA_CBUF_CON0_WEIGHT_BANK__MASK 0x000000f0
|
||||
#define CNA_CBUF_CON0_WEIGHT_BANK__SHIFT 4
|
||||
#define CNA_CBUF_CON0_DATA_BANK__MASK 0x0000000f
|
||||
#define CNA_CBUF_CON0_DATA_BANK__SHIFT 0
|
||||
#define REG_CNA_CBUF_CON1 0x00001044
|
||||
#define CNA_CBUF_CON1_RESERVED_0__MASK 0xffffc000
|
||||
#define CNA_CBUF_CON1_RESERVED_0__SHIFT 14
|
||||
#define CNA_CBUF_CON1_DATA_ENTRIES__MASK 0x00003fff
|
||||
#define CNA_CBUF_CON1_DATA_ENTRIES__SHIFT 0
|
||||
#define REG_CNA_CVT_CON0 0x0000104c
|
||||
#define CNA_CVT_CON0_RESERVED_0__MASK 0xf0000000
|
||||
#define CNA_CVT_CON0_RESERVED_0__SHIFT 28
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_3__MASK 0x0fc00000
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_3__SHIFT 22
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_2__MASK 0x003f0000
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_2__SHIFT 16
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_1__MASK 0x0000fc00
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_1__SHIFT 10
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_0__MASK 0x000003f0
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_0__SHIFT 4
|
||||
#define CNA_CVT_CON0_DATA_SIGN__MASK 0x00000008
|
||||
#define CNA_CVT_CON0_DATA_SIGN__SHIFT 3
|
||||
#define CNA_CVT_CON0_ROUND_TYPE__MASK 0x00000004
|
||||
#define CNA_CVT_CON0_ROUND_TYPE__SHIFT 2
|
||||
#define CNA_CVT_CON0_CVT_TYPE__MASK 0x00000002
|
||||
#define CNA_CVT_CON0_CVT_TYPE__SHIFT 1
|
||||
#define CNA_CVT_CON0_CVT_BYPASS__MASK 0x00000001
|
||||
#define CNA_CVT_CON0_CVT_BYPASS__SHIFT 0
|
||||
#define REG_CNA_CVT_CON1 0x00001050
|
||||
#define CNA_CVT_CON1_CVT_SCALE0__MASK 0xffff0000
|
||||
#define CNA_CVT_CON1_CVT_SCALE0__SHIFT 16
|
||||
#define CNA_CVT_CON1_CVT_OFFSET0__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON1_CVT_OFFSET0__SHIFT 0
|
||||
#define REG_CNA_CVT_CON2 0x00001054
|
||||
#define CNA_CVT_CON2_CVT_SCALE1__MASK 0xffff0000
|
||||
#define CNA_CVT_CON2_CVT_SCALE1__SHIFT 16
|
||||
#define CNA_CVT_CON2_CVT_OFFSET1__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON2_CVT_OFFSET1__SHIFT 0
|
||||
#define REG_CNA_CVT_CON3 0x00001058
|
||||
#define CNA_CVT_CON3_CVT_SCALE2__MASK 0xffff0000
|
||||
#define CNA_CVT_CON3_CVT_SCALE2__SHIFT 16
|
||||
#define CNA_CVT_CON3_CVT_OFFSET2__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON3_CVT_OFFSET2__SHIFT 0
|
||||
#define REG_CNA_CVT_CON4 0x0000105c
|
||||
#define CNA_CVT_CON4_CVT_SCALE3__MASK 0xffff0000
|
||||
#define CNA_CVT_CON4_CVT_SCALE3__SHIFT 16
|
||||
#define CNA_CVT_CON4_CVT_OFFSET3__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON4_CVT_OFFSET3__SHIFT 0
|
||||
#define REG_CNA_FC_CON0 0x00001060
|
||||
#define CNA_FC_CON0_FC_SKIP_DATA__MASK 0xffff0000
|
||||
#define CNA_FC_CON0_FC_SKIP_DATA__SHIFT 16
|
||||
#define CNA_FC_CON0_RESERVED_0__MASK 0x0000fffe
|
||||
#define CNA_FC_CON0_RESERVED_0__SHIFT 1
|
||||
#define CNA_FC_CON0_FC_SKIP_EN__MASK 0x00000001
|
||||
#define CNA_FC_CON0_FC_SKIP_EN__SHIFT 0
|
||||
#define REG_CNA_FC_CON1 0x00001064
|
||||
#define CNA_FC_CON1_RESERVED_0__MASK 0xfffe0000
|
||||
#define CNA_FC_CON1_RESERVED_0__SHIFT 17
|
||||
#define CNA_FC_CON1_DATA_OFFSET__MASK 0x0001ffff
|
||||
#define CNA_FC_CON1_DATA_OFFSET__SHIFT 0
|
||||
#define REG_CNA_PAD_CON0 0x00001068
|
||||
#define CNA_PAD_CON0_RESERVED_0__MASK 0xffffff00
|
||||
#define CNA_PAD_CON0_RESERVED_0__SHIFT 8
|
||||
#define CNA_PAD_CON0_PAD_LEFT__MASK 0x000000f0
|
||||
#define CNA_PAD_CON0_PAD_LEFT__SHIFT 4
|
||||
#define CNA_PAD_CON0_PAD_TOP__MASK 0x0000000f
|
||||
#define CNA_PAD_CON0_PAD_TOP__SHIFT 0
|
||||
#define REG_CNA_FEATURE_DATA_ADDR 0x00001070
|
||||
#define CNA_FEATURE_DATA_ADDR_FEATURE_BASE_ADDR__MASK 0xffffffff
|
||||
#define CNA_FEATURE_DATA_ADDR_FEATURE_BASE_ADDR__SHIFT 0
|
||||
#define REG_CNA_FC_CON2 0x00001074
|
||||
#define CNA_FC_CON2_RESERVED_0__MASK 0xfffe0000
|
||||
#define CNA_FC_CON2_RESERVED_0__SHIFT 17
|
||||
#define CNA_FC_CON2_WEIGHT_OFFSET__MASK 0x0001ffff
|
||||
#define CNA_FC_CON2_WEIGHT_OFFSET__SHIFT 0
|
||||
#define REG_CNA_DMA_CON0 0x00001078
|
||||
#define CNA_DMA_CON0_OV4K_BYPASS__MASK 0x80000000
|
||||
#define CNA_DMA_CON0_OV4K_BYPASS__SHIFT 31
|
||||
#define CNA_DMA_CON0_RESERVED_0__MASK 0x7ff00000
|
||||
#define CNA_DMA_CON0_RESERVED_0__SHIFT 20
|
||||
#define CNA_DMA_CON0_WEIGHT_BURST_LEN__MASK 0x000f0000
|
||||
#define CNA_DMA_CON0_WEIGHT_BURST_LEN__SHIFT 16
|
||||
#define CNA_DMA_CON0_RESERVED_1__MASK 0x0000fff0
|
||||
#define CNA_DMA_CON0_RESERVED_1__SHIFT 4
|
||||
#define CNA_DMA_CON0_DATA_BURST_LEN__MASK 0x0000000f
|
||||
#define CNA_DMA_CON0_DATA_BURST_LEN__SHIFT 0
|
||||
#define REG_CNA_DMA_CON1 0x0000107c
|
||||
#define CNA_DMA_CON1_RESERVED_0__MASK 0xf0000000
|
||||
#define CNA_DMA_CON1_RESERVED_0__SHIFT 28
|
||||
#define CNA_DMA_CON1_LINE_STRIDE__MASK 0x0fffffff
|
||||
#define CNA_DMA_CON1_LINE_STRIDE__SHIFT 0
|
||||
#define REG_CNA_DMA_CON2 0x00001080
|
||||
#define CNA_DMA_CON2_RESERVED_0__MASK 0xf0000000
|
||||
#define CNA_DMA_CON2_RESERVED_0__SHIFT 28
|
||||
#define CNA_DMA_CON2_SURF_STRIDE__MASK 0x0fffffff
|
||||
#define CNA_DMA_CON2_SURF_STRIDE__SHIFT 0
|
||||
#define REG_CNA_FC_DATA_SIZE0 0x00001084
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_0__MASK 0xc0000000
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_0__SHIFT 30
|
||||
#define CNA_FC_DATA_SIZE0_DMA_WIDTH__MASK 0x3fff0000
|
||||
#define CNA_FC_DATA_SIZE0_DMA_WIDTH__SHIFT 16
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_1__MASK 0x0000f800
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_1__SHIFT 11
|
||||
#define CNA_FC_DATA_SIZE0_DMA_HEIGHT__MASK 0x000007ff
|
||||
#define CNA_FC_DATA_SIZE0_DMA_HEIGHT__SHIFT 0
|
||||
#define REG_CNA_FC_DATA_SIZE1 0x00001088
|
||||
#define CNA_FC_DATA_SIZE1_RESERVED_0__MASK 0xffff0000
|
||||
#define CNA_FC_DATA_SIZE1_RESERVED_0__SHIFT 16
|
||||
#define CNA_FC_DATA_SIZE1_DMA_CHANNEL__MASK 0x0000ffff
|
||||
#define CNA_FC_DATA_SIZE1_DMA_CHANNEL__SHIFT 0
|
||||
#define REG_CNA_CLK_GATE 0x00001090
|
||||
#define CNA_CLK_GATE_RESERVED_0__MASK 0xffffffe0
|
||||
#define CNA_CLK_GATE_RESERVED_0__SHIFT 5
|
||||
#define CNA_CLK_GATE_CBUF_CS_DISABLE_CLKGATE__MASK 0x00000010
|
||||
#define CNA_CLK_GATE_CBUF_CS_DISABLE_CLKGATE__SHIFT 4
|
||||
#define CNA_CLK_GATE_RESERVED_1__MASK 0x00000008
|
||||
#define CNA_CLK_GATE_RESERVED_1__SHIFT 3
|
||||
#define CNA_CLK_GATE_CSC_DISABLE_CLKGATE__MASK 0x00000004
|
||||
#define CNA_CLK_GATE_CSC_DISABLE_CLKGATE__SHIFT 2
|
||||
#define CNA_CLK_GATE_CNA_WEIGHT_DISABLE_CLKGATE__MASK 0x00000002
|
||||
#define CNA_CLK_GATE_CNA_WEIGHT_DISABLE_CLKGATE__SHIFT 1
|
||||
#define CNA_CLK_GATE_CNA_FEATURE_DISABLE_CLKGATE__MASK 0x00000001
|
||||
#define CNA_CLK_GATE_CNA_FEATURE_DISABLE_CLKGATE__SHIFT 0
|
||||
#define REG_CNA_DCOMP_CTRL 0x00001100
|
||||
#define CNA_DCOMP_CTRL_RESERVED_0__MASK 0xfffffff0
|
||||
#define CNA_DCOMP_CTRL_RESERVED_0__SHIFT 4
|
||||
#define CNA_DCOMP_CTRL_WT_DEC_BYPASS__MASK 0x00000008
|
||||
#define CNA_DCOMP_CTRL_WT_DEC_BYPASS__SHIFT 3
|
||||
#define CNA_DCOMP_CTRL_DECOMP_CONTROL__MASK 0x00000007
|
||||
#define CNA_DCOMP_CTRL_DECOMP_CONTROL__SHIFT 0
|
||||
#define REG_CNA_DCOMP_REGNUM 0x00001104
|
||||
#define CNA_DCOMP_REGNUM_DCOMP_REGNUM__MASK 0xffffffff
|
||||
#define CNA_DCOMP_REGNUM_DCOMP_REGNUM__SHIFT 0
|
||||
#define REG_CNA_DCOMP_ADDR0 0x00001110
|
||||
#define CNA_DCOMP_ADDR0_DECOMPRESS_ADDR0__MASK 0xffffffff
|
||||
#define CNA_DCOMP_ADDR0_DECOMPRESS_ADDR0__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT0 0x00001140
|
||||
#define CNA_DCOMP_AMOUNT0_DCOMP_AMOUNT0__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT0_DCOMP_AMOUNT0__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT1 0x00001144
|
||||
#define CNA_DCOMP_AMOUNT1_DCOMP_AMOUNT1__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT1_DCOMP_AMOUNT1__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT2 0x00001148
|
||||
#define CNA_DCOMP_AMOUNT2_DCOMP_AMOUNT2__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT2_DCOMP_AMOUNT2__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT3 0x0000114c
|
||||
#define CNA_DCOMP_AMOUNT3_DCOMP_AMOUNT3__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT3_DCOMP_AMOUNT3__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT4 0x00001150
|
||||
#define CNA_DCOMP_AMOUNT4_DCOMP_AMOUNT4__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT4_DCOMP_AMOUNT4__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT5 0x00001154
|
||||
#define CNA_DCOMP_AMOUNT5_DCOMP_AMOUNT5__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT5_DCOMP_AMOUNT5__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT6 0x00001158
|
||||
#define CNA_DCOMP_AMOUNT6_DCOMP_AMOUNT6__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT6_DCOMP_AMOUNT6__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT7 0x0000115c
|
||||
#define CNA_DCOMP_AMOUNT7_DCOMP_AMOUNT7__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT7_DCOMP_AMOUNT7__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT8 0x00001160
|
||||
#define CNA_DCOMP_AMOUNT8_DCOMP_AMOUNT8__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT8_DCOMP_AMOUNT8__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT9 0x00001164
|
||||
#define CNA_DCOMP_AMOUNT9_DCOMP_AMOUNT9__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT9_DCOMP_AMOUNT9__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT10 0x00001168
|
||||
#define CNA_DCOMP_AMOUNT10_DCOMP_AMOUNT10__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT10_DCOMP_AMOUNT10__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT11 0x0000116c
|
||||
#define CNA_DCOMP_AMOUNT11_DCOMP_AMOUNT11__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT11_DCOMP_AMOUNT11__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT12 0x00001170
|
||||
#define CNA_DCOMP_AMOUNT12_DCOMP_AMOUNT12__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT12_DCOMP_AMOUNT12__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT13 0x00001174
|
||||
#define CNA_DCOMP_AMOUNT13_DCOMP_AMOUNT13__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT13_DCOMP_AMOUNT13__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT14 0x00001178
|
||||
#define CNA_DCOMP_AMOUNT14_DCOMP_AMOUNT14__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT14_DCOMP_AMOUNT14__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT15 0x0000117c
|
||||
#define CNA_DCOMP_AMOUNT15_DCOMP_AMOUNT15__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT15_DCOMP_AMOUNT15__SHIFT 0
|
||||
#define REG_CNA_CVT_CON5 0x00001180
|
||||
#define CNA_CVT_CON5_PER_CHANNEL_CVT_EN__MASK 0xffffffff
|
||||
#define CNA_CVT_CON5_PER_CHANNEL_CVT_EN__SHIFT 0
|
||||
#define REG_CNA_PAD_CON1 0x00001184
|
||||
#define CNA_PAD_CON1_PAD_VALUE__MASK 0xffffffff
|
||||
#define CNA_PAD_CON1_PAD_VALUE__SHIFT 0
|
||||
#define REG_DPU_S_POINTER 0x00004004
|
||||
#define DPU_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define DPU_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define DPU_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define DPU_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define DPU_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define DPU_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define DPU_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define DPU_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define DPU_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define DPU_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define DPU_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define DPU_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define DPU_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define DPU_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define DPU_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define DPU_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define DPU_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define DPU_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_S_STATUS 0x00005000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_0__SHIFT 18
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_1__MASK 0x00030000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_1__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_1__MASK 0x0000fffc
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_1__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_0__MASK 0x00000003
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_S_POINTER 0x00005004
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_OPERATION_ENABLE 0x00005008
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_WIDTH 0x0000500c
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_RESERVED_0__MASK 0xffffe000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_RESERVED_0__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_WIDTH__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_WIDTH__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_HEIGHT 0x00005010
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_0__MASK 0xe0000000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_0__SHIFT 29
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_EW_LINE_NOTCH_ADDR__MASK 0x1fff0000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_EW_LINE_NOTCH_ADDR__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_1__MASK 0x0000e000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_1__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_HEIGHT__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_HEIGHT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_CHANNEL 0x00005014
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_RESERVED_0__MASK 0xffffe000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_RESERVED_0__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_CHANNEL__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_CHANNEL__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SRC_BASE_ADDR 0x00005018
|
||||
#define DPU_RDMA_RDMA_SRC_BASE_ADDR_SRC_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_SRC_BASE_ADDR_SRC_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BRDMA_CFG 0x0000501c
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_0__MASK 0xffffffe0
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_0__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_BRDMA_DATA_USE__MASK 0x0000001e
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_BRDMA_DATA_USE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_1__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_1__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BS_BASE_ADDR 0x00005020
|
||||
#define DPU_RDMA_RDMA_BS_BASE_ADDR_BS_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_BS_BASE_ADDR_BS_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_NRDMA_CFG 0x00005028
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_0__MASK 0xffffffe0
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_0__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_NRDMA_DATA_USE__MASK 0x0000001e
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_NRDMA_DATA_USE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_1__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_1__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BN_BASE_ADDR 0x0000502c
|
||||
#define DPU_RDMA_RDMA_BN_BASE_ADDR_BN_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_BN_BASE_ADDR_BN_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_ERDMA_CFG 0x00005034
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_MODE__MASK 0xc0000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_MODE__SHIFT 30
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_SURF_MODE__MASK 0x20000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_SURF_MODE__SHIFT 29
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_NONALIGN__MASK 0x10000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_NONALIGN__SHIFT 28
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_RESERVED_0__MASK 0x0ffffff0
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_RESERVED_0__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_SIZE__MASK 0x0000000c
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_SIZE__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_OV4K_BYPASS__MASK 0x00000002
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_OV4K_BYPASS__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DISABLE__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DISABLE__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_BASE_ADDR 0x00005038
|
||||
#define DPU_RDMA_RDMA_EW_BASE_ADDR_EW_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_EW_BASE_ADDR_EW_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_SURF_STRIDE 0x00005040
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_EW_SURF_STRIDE__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_EW_SURF_STRIDE__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_FEATURE_MODE_CFG 0x00005044
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_RESERVED_0__SHIFT 18
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_IN_PRECISION__MASK 0x00038000
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_IN_PRECISION__SHIFT 15
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_BURST_LEN__MASK 0x00007800
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_BURST_LEN__SHIFT 11
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_COMB_USE__MASK 0x00000700
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_COMB_USE__SHIFT 8
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_PROC_PRECISION__MASK 0x000000e0
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_PROC_PRECISION__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_DISABLE__MASK 0x00000010
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_DISABLE__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_FP16TOFP32_EN__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_FP16TOFP32_EN__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_CONV_MODE__MASK 0x00000006
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_CONV_MODE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_FLYING_MODE__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_FLYING_MODE__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SRC_DMA_CFG 0x00005048
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_LINE_NOTCH_ADDR__MASK 0xfff80000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_LINE_NOTCH_ADDR__SHIFT 19
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_RESERVED_0__MASK 0x0007c000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_RESERVED_0__SHIFT 14
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_POOLING_METHOD__MASK 0x00002000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_POOLING_METHOD__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_UNPOOLING_EN__MASK 0x00001000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_UNPOOLING_EN__SHIFT 12
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_HEIGHT__MASK 0x00000e00
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_HEIGHT__SHIFT 9
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_WIDTH__MASK 0x000001c0
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_WIDTH__SHIFT 6
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_HEIGHT__MASK 0x00000038
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_HEIGHT__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_WIDTH__MASK 0x00000007
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_WIDTH__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SURF_NOTCH 0x0000504c
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_SURF_NOTCH_ADDR__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_SURF_NOTCH_ADDR__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_PAD_CFG 0x00005064
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_VALUE__MASK 0xffff0000
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_VALUE__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_0__MASK 0x0000ff80
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_0__SHIFT 7
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_TOP__MASK 0x00000070
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_TOP__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_1__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_1__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_LEFT__MASK 0x00000007
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_LEFT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_WEIGHT 0x00005068
|
||||
#define DPU_RDMA_RDMA_WEIGHT_E_WEIGHT__MASK 0xff000000
|
||||
#define DPU_RDMA_RDMA_WEIGHT_E_WEIGHT__SHIFT 24
|
||||
#define DPU_RDMA_RDMA_WEIGHT_N_WEIGHT__MASK 0x00ff0000
|
||||
#define DPU_RDMA_RDMA_WEIGHT_N_WEIGHT__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_WEIGHT_B_WEIGHT__MASK 0x0000ff00
|
||||
#define DPU_RDMA_RDMA_WEIGHT_B_WEIGHT__SHIFT 8
|
||||
#define DPU_RDMA_RDMA_WEIGHT_M_WEIGHT__MASK 0x000000ff
|
||||
#define DPU_RDMA_RDMA_WEIGHT_M_WEIGHT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_SURF_NOTCH 0x0000506c
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_EW_SURF_NOTCH__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_EW_SURF_NOTCH__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_RESERVED_0__SHIFT 0
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,704 @@
|
||||
// ============ REGCMD PACKING ============
|
||||
// Each register command is one uint64_t: (target<<48) | (value<<16) | reg
|
||||
// where target = block_enum + 1. Block enums:
|
||||
// PC=0x100 CNA=0x200 CORE=0x800 DPU=0x1000
|
||||
// So CNA registers pack with target 0x201, DPU registers with target 0x1001.
|
||||
// A field is set as: (value << FIELD__SHIFT) & FIELD__MASK and OR'd together.
|
||||
|
||||
// ============ REGISTER + FIELD DEFINES (from Mesa rkt_registers.h) ============
|
||||
#define REG_CNA_S_STATUS 0x00001000
|
||||
#define CNA_S_STATUS_RESERVED_0__MASK 0xfffc0000
|
||||
#define CNA_S_STATUS_RESERVED_0__SHIFT 18
|
||||
#define CNA_S_STATUS_STATUS_1__MASK 0x00030000
|
||||
#define CNA_S_STATUS_STATUS_1__SHIFT 16
|
||||
#define CNA_S_STATUS_RESERVED_1__MASK 0x0000fffc
|
||||
#define CNA_S_STATUS_RESERVED_1__SHIFT 2
|
||||
#define CNA_S_STATUS_STATUS_0__MASK 0x00000003
|
||||
#define CNA_S_STATUS_STATUS_0__SHIFT 0
|
||||
#define REG_CNA_S_POINTER 0x00001004
|
||||
#define CNA_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define CNA_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define CNA_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define CNA_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define CNA_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define CNA_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define CNA_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define CNA_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define CNA_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define CNA_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define CNA_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define CNA_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define CNA_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define CNA_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define CNA_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define CNA_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define CNA_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define CNA_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_CNA_OPERATION_ENABLE 0x00001008
|
||||
#define CNA_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define CNA_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define CNA_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define CNA_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_CNA_CONV_CON1 0x0000100c
|
||||
#define CNA_CONV_CON1_RESERVED_0__MASK 0x80000000
|
||||
#define CNA_CONV_CON1_RESERVED_0__SHIFT 31
|
||||
#define CNA_CONV_CON1_NONALIGN_DMA__MASK 0x40000000
|
||||
#define CNA_CONV_CON1_NONALIGN_DMA__SHIFT 30
|
||||
#define CNA_CONV_CON1_GROUP_LINE_OFF__MASK 0x20000000
|
||||
#define CNA_CONV_CON1_GROUP_LINE_OFF__SHIFT 29
|
||||
#define CNA_CONV_CON1_RESERVED_1__MASK 0x1ffe0000
|
||||
#define CNA_CONV_CON1_RESERVED_1__SHIFT 17
|
||||
#define CNA_CONV_CON1_DECONV__MASK 0x00010000
|
||||
#define CNA_CONV_CON1_DECONV__SHIFT 16
|
||||
#define CNA_CONV_CON1_ARGB_IN__MASK 0x0000f000
|
||||
#define CNA_CONV_CON1_ARGB_IN__SHIFT 12
|
||||
#define CNA_CONV_CON1_RESERVED_2__MASK 0x00000c00
|
||||
#define CNA_CONV_CON1_RESERVED_2__SHIFT 10
|
||||
#define CNA_CONV_CON1_PROC_PRECISION__MASK 0x00000380
|
||||
#define CNA_CONV_CON1_PROC_PRECISION__SHIFT 7
|
||||
#define CNA_CONV_CON1_IN_PRECISION__MASK 0x00000070
|
||||
#define CNA_CONV_CON1_IN_PRECISION__SHIFT 4
|
||||
#define CNA_CONV_CON1_CONV_MODE__MASK 0x0000000f
|
||||
#define CNA_CONV_CON1_CONV_MODE__SHIFT 0
|
||||
#define REG_CNA_CONV_CON2 0x00001010
|
||||
#define CNA_CONV_CON2_RESERVED_0__MASK 0xff000000
|
||||
#define CNA_CONV_CON2_RESERVED_0__SHIFT 24
|
||||
#define CNA_CONV_CON2_KERNEL_GROUP__MASK 0x00ff0000
|
||||
#define CNA_CONV_CON2_KERNEL_GROUP__SHIFT 16
|
||||
#define CNA_CONV_CON2_RESERVED_1__MASK 0x0000c000
|
||||
#define CNA_CONV_CON2_RESERVED_1__SHIFT 14
|
||||
#define CNA_CONV_CON2_FEATURE_GRAINS__MASK 0x00003ff0
|
||||
#define CNA_CONV_CON2_FEATURE_GRAINS__SHIFT 4
|
||||
#define CNA_CONV_CON2_RESERVED_2__MASK 0x00000008
|
||||
#define CNA_CONV_CON2_RESERVED_2__SHIFT 3
|
||||
#define CNA_CONV_CON2_CSC_WO_EN__MASK 0x00000004
|
||||
#define CNA_CONV_CON2_CSC_WO_EN__SHIFT 2
|
||||
#define CNA_CONV_CON2_CSC_DO_EN__MASK 0x00000002
|
||||
#define CNA_CONV_CON2_CSC_DO_EN__SHIFT 1
|
||||
#define CNA_CONV_CON2_CMD_FIFO_SRST__MASK 0x00000001
|
||||
#define CNA_CONV_CON2_CMD_FIFO_SRST__SHIFT 0
|
||||
#define REG_CNA_CONV_CON3 0x00001014
|
||||
#define CNA_CONV_CON3_RESERVED_0__MASK 0x80000000
|
||||
#define CNA_CONV_CON3_RESERVED_0__SHIFT 31
|
||||
#define CNA_CONV_CON3_NN_MODE__MASK 0x70000000
|
||||
#define CNA_CONV_CON3_NN_MODE__SHIFT 28
|
||||
#define CNA_CONV_CON3_RESERVED_1__MASK 0x0c000000
|
||||
#define CNA_CONV_CON3_RESERVED_1__SHIFT 26
|
||||
#define CNA_CONV_CON3_ATROUS_Y_DILATION__MASK 0x03e00000
|
||||
#define CNA_CONV_CON3_ATROUS_Y_DILATION__SHIFT 21
|
||||
#define CNA_CONV_CON3_ATROUS_X_DILATION__MASK 0x001f0000
|
||||
#define CNA_CONV_CON3_ATROUS_X_DILATION__SHIFT 16
|
||||
#define CNA_CONV_CON3_RESERVED_2__MASK 0x0000c000
|
||||
#define CNA_CONV_CON3_RESERVED_2__SHIFT 14
|
||||
#define CNA_CONV_CON3_DECONV_Y_STRIDE__MASK 0x00003800
|
||||
#define CNA_CONV_CON3_DECONV_Y_STRIDE__SHIFT 11
|
||||
#define CNA_CONV_CON3_DECONV_X_STRIDE__MASK 0x00000700
|
||||
#define CNA_CONV_CON3_DECONV_X_STRIDE__SHIFT 8
|
||||
#define CNA_CONV_CON3_RESERVED_3__MASK 0x000000c0
|
||||
#define CNA_CONV_CON3_RESERVED_3__SHIFT 6
|
||||
#define CNA_CONV_CON3_CONV_Y_STRIDE__MASK 0x00000038
|
||||
#define CNA_CONV_CON3_CONV_Y_STRIDE__SHIFT 3
|
||||
#define CNA_CONV_CON3_CONV_X_STRIDE__MASK 0x00000007
|
||||
#define CNA_CONV_CON3_CONV_X_STRIDE__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE0 0x00001020
|
||||
#define CNA_DATA_SIZE0_RESERVED_0__MASK 0xf8000000
|
||||
#define CNA_DATA_SIZE0_RESERVED_0__SHIFT 27
|
||||
#define CNA_DATA_SIZE0_DATAIN_WIDTH__MASK 0x07ff0000
|
||||
#define CNA_DATA_SIZE0_DATAIN_WIDTH__SHIFT 16
|
||||
#define CNA_DATA_SIZE0_RESERVED_1__MASK 0x0000f800
|
||||
#define CNA_DATA_SIZE0_RESERVED_1__SHIFT 11
|
||||
#define CNA_DATA_SIZE0_DATAIN_HEIGHT__MASK 0x000007ff
|
||||
#define CNA_DATA_SIZE0_DATAIN_HEIGHT__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE1 0x00001024
|
||||
#define CNA_DATA_SIZE1_RESERVED_0__MASK 0xc0000000
|
||||
#define CNA_DATA_SIZE1_RESERVED_0__SHIFT 30
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL_REAL__MASK 0x3fff0000
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL_REAL__SHIFT 16
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL__MASK 0x0000ffff
|
||||
#define CNA_DATA_SIZE1_DATAIN_CHANNEL__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE2 0x00001028
|
||||
#define CNA_DATA_SIZE2_RESERVED_0__MASK 0xfffff800
|
||||
#define CNA_DATA_SIZE2_RESERVED_0__SHIFT 11
|
||||
#define CNA_DATA_SIZE2_DATAOUT_WIDTH__MASK 0x000007ff
|
||||
#define CNA_DATA_SIZE2_DATAOUT_WIDTH__SHIFT 0
|
||||
#define REG_CNA_DATA_SIZE3 0x0000102c
|
||||
#define CNA_DATA_SIZE3_RESERVED_0__MASK 0xff000000
|
||||
#define CNA_DATA_SIZE3_RESERVED_0__SHIFT 24
|
||||
#define CNA_DATA_SIZE3_SURF_MODE__MASK 0x00c00000
|
||||
#define CNA_DATA_SIZE3_SURF_MODE__SHIFT 22
|
||||
#define CNA_DATA_SIZE3_DATAOUT_ATOMICS__MASK 0x003fffff
|
||||
#define CNA_DATA_SIZE3_DATAOUT_ATOMICS__SHIFT 0
|
||||
#define REG_CNA_WEIGHT_SIZE0 0x00001030
|
||||
#define CNA_WEIGHT_SIZE0_WEIGHT_BYTES__MASK 0xffffffff
|
||||
#define CNA_WEIGHT_SIZE0_WEIGHT_BYTES__SHIFT 0
|
||||
#define REG_CNA_WEIGHT_SIZE1 0x00001034
|
||||
#define CNA_WEIGHT_SIZE1_RESERVED_0__MASK 0xfff80000
|
||||
#define CNA_WEIGHT_SIZE1_RESERVED_0__SHIFT 19
|
||||
#define CNA_WEIGHT_SIZE1_WEIGHT_BYTES_PER_KERNEL__MASK 0x0007ffff
|
||||
#define CNA_WEIGHT_SIZE1_WEIGHT_BYTES_PER_KERNEL__SHIFT 0
|
||||
#define REG_CNA_WEIGHT_SIZE2 0x00001038
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_0__MASK 0xe0000000
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_0__SHIFT 29
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_WIDTH__MASK 0x1f000000
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_WIDTH__SHIFT 24
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_1__MASK 0x00e00000
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_1__SHIFT 21
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_HEIGHT__MASK 0x001f0000
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_HEIGHT__SHIFT 16
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_2__MASK 0x0000c000
|
||||
#define CNA_WEIGHT_SIZE2_RESERVED_2__SHIFT 14
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_KERNELS__MASK 0x00003fff
|
||||
#define CNA_WEIGHT_SIZE2_WEIGHT_KERNELS__SHIFT 0
|
||||
#define REG_CNA_CBUF_CON0 0x00001040
|
||||
#define CNA_CBUF_CON0_RESERVED_0__MASK 0xffffc000
|
||||
#define CNA_CBUF_CON0_RESERVED_0__SHIFT 14
|
||||
#define CNA_CBUF_CON0_WEIGHT_REUSE__MASK 0x00002000
|
||||
#define CNA_CBUF_CON0_WEIGHT_REUSE__SHIFT 13
|
||||
#define CNA_CBUF_CON0_DATA_REUSE__MASK 0x00001000
|
||||
#define CNA_CBUF_CON0_DATA_REUSE__SHIFT 12
|
||||
#define CNA_CBUF_CON0_RESERVED_1__MASK 0x00000800
|
||||
#define CNA_CBUF_CON0_RESERVED_1__SHIFT 11
|
||||
#define CNA_CBUF_CON0_FC_DATA_BANK__MASK 0x00000700
|
||||
#define CNA_CBUF_CON0_FC_DATA_BANK__SHIFT 8
|
||||
#define CNA_CBUF_CON0_WEIGHT_BANK__MASK 0x000000f0
|
||||
#define CNA_CBUF_CON0_WEIGHT_BANK__SHIFT 4
|
||||
#define CNA_CBUF_CON0_DATA_BANK__MASK 0x0000000f
|
||||
#define CNA_CBUF_CON0_DATA_BANK__SHIFT 0
|
||||
#define REG_CNA_CBUF_CON1 0x00001044
|
||||
#define CNA_CBUF_CON1_RESERVED_0__MASK 0xffffc000
|
||||
#define CNA_CBUF_CON1_RESERVED_0__SHIFT 14
|
||||
#define CNA_CBUF_CON1_DATA_ENTRIES__MASK 0x00003fff
|
||||
#define CNA_CBUF_CON1_DATA_ENTRIES__SHIFT 0
|
||||
#define REG_CNA_CVT_CON0 0x0000104c
|
||||
#define CNA_CVT_CON0_RESERVED_0__MASK 0xf0000000
|
||||
#define CNA_CVT_CON0_RESERVED_0__SHIFT 28
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_3__MASK 0x0fc00000
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_3__SHIFT 22
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_2__MASK 0x003f0000
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_2__SHIFT 16
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_1__MASK 0x0000fc00
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_1__SHIFT 10
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_0__MASK 0x000003f0
|
||||
#define CNA_CVT_CON0_CVT_TRUNCATE_0__SHIFT 4
|
||||
#define CNA_CVT_CON0_DATA_SIGN__MASK 0x00000008
|
||||
#define CNA_CVT_CON0_DATA_SIGN__SHIFT 3
|
||||
#define CNA_CVT_CON0_ROUND_TYPE__MASK 0x00000004
|
||||
#define CNA_CVT_CON0_ROUND_TYPE__SHIFT 2
|
||||
#define CNA_CVT_CON0_CVT_TYPE__MASK 0x00000002
|
||||
#define CNA_CVT_CON0_CVT_TYPE__SHIFT 1
|
||||
#define CNA_CVT_CON0_CVT_BYPASS__MASK 0x00000001
|
||||
#define CNA_CVT_CON0_CVT_BYPASS__SHIFT 0
|
||||
#define REG_CNA_CVT_CON1 0x00001050
|
||||
#define CNA_CVT_CON1_CVT_SCALE0__MASK 0xffff0000
|
||||
#define CNA_CVT_CON1_CVT_SCALE0__SHIFT 16
|
||||
#define CNA_CVT_CON1_CVT_OFFSET0__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON1_CVT_OFFSET0__SHIFT 0
|
||||
#define REG_CNA_CVT_CON2 0x00001054
|
||||
#define CNA_CVT_CON2_CVT_SCALE1__MASK 0xffff0000
|
||||
#define CNA_CVT_CON2_CVT_SCALE1__SHIFT 16
|
||||
#define CNA_CVT_CON2_CVT_OFFSET1__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON2_CVT_OFFSET1__SHIFT 0
|
||||
#define REG_CNA_CVT_CON3 0x00001058
|
||||
#define CNA_CVT_CON3_CVT_SCALE2__MASK 0xffff0000
|
||||
#define CNA_CVT_CON3_CVT_SCALE2__SHIFT 16
|
||||
#define CNA_CVT_CON3_CVT_OFFSET2__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON3_CVT_OFFSET2__SHIFT 0
|
||||
#define REG_CNA_CVT_CON4 0x0000105c
|
||||
#define CNA_CVT_CON4_CVT_SCALE3__MASK 0xffff0000
|
||||
#define CNA_CVT_CON4_CVT_SCALE3__SHIFT 16
|
||||
#define CNA_CVT_CON4_CVT_OFFSET3__MASK 0x0000ffff
|
||||
#define CNA_CVT_CON4_CVT_OFFSET3__SHIFT 0
|
||||
#define REG_CNA_FC_CON0 0x00001060
|
||||
#define CNA_FC_CON0_FC_SKIP_DATA__MASK 0xffff0000
|
||||
#define CNA_FC_CON0_FC_SKIP_DATA__SHIFT 16
|
||||
#define CNA_FC_CON0_RESERVED_0__MASK 0x0000fffe
|
||||
#define CNA_FC_CON0_RESERVED_0__SHIFT 1
|
||||
#define CNA_FC_CON0_FC_SKIP_EN__MASK 0x00000001
|
||||
#define CNA_FC_CON0_FC_SKIP_EN__SHIFT 0
|
||||
#define REG_CNA_FC_CON1 0x00001064
|
||||
#define CNA_FC_CON1_RESERVED_0__MASK 0xfffe0000
|
||||
#define CNA_FC_CON1_RESERVED_0__SHIFT 17
|
||||
#define CNA_FC_CON1_DATA_OFFSET__MASK 0x0001ffff
|
||||
#define CNA_FC_CON1_DATA_OFFSET__SHIFT 0
|
||||
#define REG_CNA_PAD_CON0 0x00001068
|
||||
#define CNA_PAD_CON0_RESERVED_0__MASK 0xffffff00
|
||||
#define CNA_PAD_CON0_RESERVED_0__SHIFT 8
|
||||
#define CNA_PAD_CON0_PAD_LEFT__MASK 0x000000f0
|
||||
#define CNA_PAD_CON0_PAD_LEFT__SHIFT 4
|
||||
#define CNA_PAD_CON0_PAD_TOP__MASK 0x0000000f
|
||||
#define CNA_PAD_CON0_PAD_TOP__SHIFT 0
|
||||
#define REG_CNA_FEATURE_DATA_ADDR 0x00001070
|
||||
#define CNA_FEATURE_DATA_ADDR_FEATURE_BASE_ADDR__MASK 0xffffffff
|
||||
#define CNA_FEATURE_DATA_ADDR_FEATURE_BASE_ADDR__SHIFT 0
|
||||
#define REG_CNA_FC_CON2 0x00001074
|
||||
#define CNA_FC_CON2_RESERVED_0__MASK 0xfffe0000
|
||||
#define CNA_FC_CON2_RESERVED_0__SHIFT 17
|
||||
#define CNA_FC_CON2_WEIGHT_OFFSET__MASK 0x0001ffff
|
||||
#define CNA_FC_CON2_WEIGHT_OFFSET__SHIFT 0
|
||||
#define REG_CNA_DMA_CON0 0x00001078
|
||||
#define CNA_DMA_CON0_OV4K_BYPASS__MASK 0x80000000
|
||||
#define CNA_DMA_CON0_OV4K_BYPASS__SHIFT 31
|
||||
#define CNA_DMA_CON0_RESERVED_0__MASK 0x7ff00000
|
||||
#define CNA_DMA_CON0_RESERVED_0__SHIFT 20
|
||||
#define CNA_DMA_CON0_WEIGHT_BURST_LEN__MASK 0x000f0000
|
||||
#define CNA_DMA_CON0_WEIGHT_BURST_LEN__SHIFT 16
|
||||
#define CNA_DMA_CON0_RESERVED_1__MASK 0x0000fff0
|
||||
#define CNA_DMA_CON0_RESERVED_1__SHIFT 4
|
||||
#define CNA_DMA_CON0_DATA_BURST_LEN__MASK 0x0000000f
|
||||
#define CNA_DMA_CON0_DATA_BURST_LEN__SHIFT 0
|
||||
#define REG_CNA_DMA_CON1 0x0000107c
|
||||
#define CNA_DMA_CON1_RESERVED_0__MASK 0xf0000000
|
||||
#define CNA_DMA_CON1_RESERVED_0__SHIFT 28
|
||||
#define CNA_DMA_CON1_LINE_STRIDE__MASK 0x0fffffff
|
||||
#define CNA_DMA_CON1_LINE_STRIDE__SHIFT 0
|
||||
#define REG_CNA_DMA_CON2 0x00001080
|
||||
#define CNA_DMA_CON2_RESERVED_0__MASK 0xf0000000
|
||||
#define CNA_DMA_CON2_RESERVED_0__SHIFT 28
|
||||
#define CNA_DMA_CON2_SURF_STRIDE__MASK 0x0fffffff
|
||||
#define CNA_DMA_CON2_SURF_STRIDE__SHIFT 0
|
||||
#define REG_CNA_FC_DATA_SIZE0 0x00001084
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_0__MASK 0xc0000000
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_0__SHIFT 30
|
||||
#define CNA_FC_DATA_SIZE0_DMA_WIDTH__MASK 0x3fff0000
|
||||
#define CNA_FC_DATA_SIZE0_DMA_WIDTH__SHIFT 16
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_1__MASK 0x0000f800
|
||||
#define CNA_FC_DATA_SIZE0_RESERVED_1__SHIFT 11
|
||||
#define CNA_FC_DATA_SIZE0_DMA_HEIGHT__MASK 0x000007ff
|
||||
#define CNA_FC_DATA_SIZE0_DMA_HEIGHT__SHIFT 0
|
||||
#define REG_CNA_FC_DATA_SIZE1 0x00001088
|
||||
#define CNA_FC_DATA_SIZE1_RESERVED_0__MASK 0xffff0000
|
||||
#define CNA_FC_DATA_SIZE1_RESERVED_0__SHIFT 16
|
||||
#define CNA_FC_DATA_SIZE1_DMA_CHANNEL__MASK 0x0000ffff
|
||||
#define CNA_FC_DATA_SIZE1_DMA_CHANNEL__SHIFT 0
|
||||
#define REG_CNA_CLK_GATE 0x00001090
|
||||
#define CNA_CLK_GATE_RESERVED_0__MASK 0xffffffe0
|
||||
#define CNA_CLK_GATE_RESERVED_0__SHIFT 5
|
||||
#define CNA_CLK_GATE_CBUF_CS_DISABLE_CLKGATE__MASK 0x00000010
|
||||
#define CNA_CLK_GATE_CBUF_CS_DISABLE_CLKGATE__SHIFT 4
|
||||
#define CNA_CLK_GATE_RESERVED_1__MASK 0x00000008
|
||||
#define CNA_CLK_GATE_RESERVED_1__SHIFT 3
|
||||
#define CNA_CLK_GATE_CSC_DISABLE_CLKGATE__MASK 0x00000004
|
||||
#define CNA_CLK_GATE_CSC_DISABLE_CLKGATE__SHIFT 2
|
||||
#define CNA_CLK_GATE_CNA_WEIGHT_DISABLE_CLKGATE__MASK 0x00000002
|
||||
#define CNA_CLK_GATE_CNA_WEIGHT_DISABLE_CLKGATE__SHIFT 1
|
||||
#define CNA_CLK_GATE_CNA_FEATURE_DISABLE_CLKGATE__MASK 0x00000001
|
||||
#define CNA_CLK_GATE_CNA_FEATURE_DISABLE_CLKGATE__SHIFT 0
|
||||
#define REG_CNA_DCOMP_CTRL 0x00001100
|
||||
#define CNA_DCOMP_CTRL_RESERVED_0__MASK 0xfffffff0
|
||||
#define CNA_DCOMP_CTRL_RESERVED_0__SHIFT 4
|
||||
#define CNA_DCOMP_CTRL_WT_DEC_BYPASS__MASK 0x00000008
|
||||
#define CNA_DCOMP_CTRL_WT_DEC_BYPASS__SHIFT 3
|
||||
#define CNA_DCOMP_CTRL_DECOMP_CONTROL__MASK 0x00000007
|
||||
#define CNA_DCOMP_CTRL_DECOMP_CONTROL__SHIFT 0
|
||||
#define REG_CNA_DCOMP_REGNUM 0x00001104
|
||||
#define CNA_DCOMP_REGNUM_DCOMP_REGNUM__MASK 0xffffffff
|
||||
#define CNA_DCOMP_REGNUM_DCOMP_REGNUM__SHIFT 0
|
||||
#define REG_CNA_DCOMP_ADDR0 0x00001110
|
||||
#define CNA_DCOMP_ADDR0_DECOMPRESS_ADDR0__MASK 0xffffffff
|
||||
#define CNA_DCOMP_ADDR0_DECOMPRESS_ADDR0__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT0 0x00001140
|
||||
#define CNA_DCOMP_AMOUNT0_DCOMP_AMOUNT0__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT0_DCOMP_AMOUNT0__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT1 0x00001144
|
||||
#define CNA_DCOMP_AMOUNT1_DCOMP_AMOUNT1__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT1_DCOMP_AMOUNT1__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT2 0x00001148
|
||||
#define CNA_DCOMP_AMOUNT2_DCOMP_AMOUNT2__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT2_DCOMP_AMOUNT2__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT3 0x0000114c
|
||||
#define CNA_DCOMP_AMOUNT3_DCOMP_AMOUNT3__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT3_DCOMP_AMOUNT3__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT4 0x00001150
|
||||
#define CNA_DCOMP_AMOUNT4_DCOMP_AMOUNT4__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT4_DCOMP_AMOUNT4__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT5 0x00001154
|
||||
#define CNA_DCOMP_AMOUNT5_DCOMP_AMOUNT5__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT5_DCOMP_AMOUNT5__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT6 0x00001158
|
||||
#define CNA_DCOMP_AMOUNT6_DCOMP_AMOUNT6__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT6_DCOMP_AMOUNT6__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT7 0x0000115c
|
||||
#define CNA_DCOMP_AMOUNT7_DCOMP_AMOUNT7__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT7_DCOMP_AMOUNT7__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT8 0x00001160
|
||||
#define CNA_DCOMP_AMOUNT8_DCOMP_AMOUNT8__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT8_DCOMP_AMOUNT8__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT9 0x00001164
|
||||
#define CNA_DCOMP_AMOUNT9_DCOMP_AMOUNT9__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT9_DCOMP_AMOUNT9__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT10 0x00001168
|
||||
#define CNA_DCOMP_AMOUNT10_DCOMP_AMOUNT10__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT10_DCOMP_AMOUNT10__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT11 0x0000116c
|
||||
#define CNA_DCOMP_AMOUNT11_DCOMP_AMOUNT11__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT11_DCOMP_AMOUNT11__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT12 0x00001170
|
||||
#define CNA_DCOMP_AMOUNT12_DCOMP_AMOUNT12__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT12_DCOMP_AMOUNT12__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT13 0x00001174
|
||||
#define CNA_DCOMP_AMOUNT13_DCOMP_AMOUNT13__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT13_DCOMP_AMOUNT13__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT14 0x00001178
|
||||
#define CNA_DCOMP_AMOUNT14_DCOMP_AMOUNT14__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT14_DCOMP_AMOUNT14__SHIFT 0
|
||||
#define REG_CNA_DCOMP_AMOUNT15 0x0000117c
|
||||
#define CNA_DCOMP_AMOUNT15_DCOMP_AMOUNT15__MASK 0xffffffff
|
||||
#define CNA_DCOMP_AMOUNT15_DCOMP_AMOUNT15__SHIFT 0
|
||||
#define REG_CNA_CVT_CON5 0x00001180
|
||||
#define CNA_CVT_CON5_PER_CHANNEL_CVT_EN__MASK 0xffffffff
|
||||
#define CNA_CVT_CON5_PER_CHANNEL_CVT_EN__SHIFT 0
|
||||
#define REG_CNA_PAD_CON1 0x00001184
|
||||
#define CNA_PAD_CON1_PAD_VALUE__MASK 0xffffffff
|
||||
#define CNA_PAD_CON1_PAD_VALUE__SHIFT 0
|
||||
#define REG_DPU_S_POINTER 0x00004004
|
||||
#define DPU_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define DPU_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define DPU_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define DPU_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define DPU_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define DPU_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define DPU_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define DPU_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define DPU_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define DPU_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define DPU_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define DPU_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define DPU_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define DPU_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define DPU_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define DPU_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define DPU_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define DPU_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_S_STATUS 0x00005000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_0__SHIFT 18
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_1__MASK 0x00030000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_1__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_1__MASK 0x0000fffc
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_1__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_0__MASK 0x00000003
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_S_POINTER 0x00005004
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_OPERATION_ENABLE 0x00005008
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_WIDTH 0x0000500c
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_RESERVED_0__MASK 0xffffe000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_RESERVED_0__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_WIDTH__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_WIDTH__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_HEIGHT 0x00005010
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_0__MASK 0xe0000000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_0__SHIFT 29
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_EW_LINE_NOTCH_ADDR__MASK 0x1fff0000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_EW_LINE_NOTCH_ADDR__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_1__MASK 0x0000e000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_1__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_HEIGHT__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_HEIGHT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_CHANNEL 0x00005014
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_RESERVED_0__MASK 0xffffe000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_RESERVED_0__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_CHANNEL__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_CHANNEL__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SRC_BASE_ADDR 0x00005018
|
||||
#define DPU_RDMA_RDMA_SRC_BASE_ADDR_SRC_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_SRC_BASE_ADDR_SRC_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BRDMA_CFG 0x0000501c
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_0__MASK 0xffffffe0
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_0__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_BRDMA_DATA_USE__MASK 0x0000001e
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_BRDMA_DATA_USE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_1__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_1__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BS_BASE_ADDR 0x00005020
|
||||
#define DPU_RDMA_RDMA_BS_BASE_ADDR_BS_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_BS_BASE_ADDR_BS_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_NRDMA_CFG 0x00005028
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_0__MASK 0xffffffe0
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_0__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_NRDMA_DATA_USE__MASK 0x0000001e
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_NRDMA_DATA_USE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_1__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_1__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BN_BASE_ADDR 0x0000502c
|
||||
#define DPU_RDMA_RDMA_BN_BASE_ADDR_BN_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_BN_BASE_ADDR_BN_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_ERDMA_CFG 0x00005034
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_MODE__MASK 0xc0000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_MODE__SHIFT 30
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_SURF_MODE__MASK 0x20000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_SURF_MODE__SHIFT 29
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_NONALIGN__MASK 0x10000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_NONALIGN__SHIFT 28
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_RESERVED_0__MASK 0x0ffffff0
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_RESERVED_0__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_SIZE__MASK 0x0000000c
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_SIZE__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_OV4K_BYPASS__MASK 0x00000002
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_OV4K_BYPASS__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DISABLE__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DISABLE__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_BASE_ADDR 0x00005038
|
||||
#define DPU_RDMA_RDMA_EW_BASE_ADDR_EW_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_EW_BASE_ADDR_EW_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_SURF_STRIDE 0x00005040
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_EW_SURF_STRIDE__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_EW_SURF_STRIDE__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_FEATURE_MODE_CFG 0x00005044
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_RESERVED_0__SHIFT 18
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_IN_PRECISION__MASK 0x00038000
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_IN_PRECISION__SHIFT 15
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_BURST_LEN__MASK 0x00007800
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_BURST_LEN__SHIFT 11
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_COMB_USE__MASK 0x00000700
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_COMB_USE__SHIFT 8
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_PROC_PRECISION__MASK 0x000000e0
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_PROC_PRECISION__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_DISABLE__MASK 0x00000010
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_DISABLE__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_FP16TOFP32_EN__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_FP16TOFP32_EN__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_CONV_MODE__MASK 0x00000006
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_CONV_MODE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_FLYING_MODE__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_FLYING_MODE__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SRC_DMA_CFG 0x00005048
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_LINE_NOTCH_ADDR__MASK 0xfff80000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_LINE_NOTCH_ADDR__SHIFT 19
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_RESERVED_0__MASK 0x0007c000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_RESERVED_0__SHIFT 14
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_POOLING_METHOD__MASK 0x00002000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_POOLING_METHOD__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_UNPOOLING_EN__MASK 0x00001000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_UNPOOLING_EN__SHIFT 12
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_HEIGHT__MASK 0x00000e00
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_HEIGHT__SHIFT 9
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_WIDTH__MASK 0x000001c0
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_WIDTH__SHIFT 6
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_HEIGHT__MASK 0x00000038
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_HEIGHT__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_WIDTH__MASK 0x00000007
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_WIDTH__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SURF_NOTCH 0x0000504c
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_SURF_NOTCH_ADDR__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_SURF_NOTCH_ADDR__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_PAD_CFG 0x00005064
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_VALUE__MASK 0xffff0000
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_VALUE__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_0__MASK 0x0000ff80
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_0__SHIFT 7
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_TOP__MASK 0x00000070
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_TOP__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_1__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_1__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_LEFT__MASK 0x00000007
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_LEFT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_WEIGHT 0x00005068
|
||||
#define DPU_RDMA_RDMA_WEIGHT_E_WEIGHT__MASK 0xff000000
|
||||
#define DPU_RDMA_RDMA_WEIGHT_E_WEIGHT__SHIFT 24
|
||||
#define DPU_RDMA_RDMA_WEIGHT_N_WEIGHT__MASK 0x00ff0000
|
||||
#define DPU_RDMA_RDMA_WEIGHT_N_WEIGHT__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_WEIGHT_B_WEIGHT__MASK 0x0000ff00
|
||||
#define DPU_RDMA_RDMA_WEIGHT_B_WEIGHT__SHIFT 8
|
||||
#define DPU_RDMA_RDMA_WEIGHT_M_WEIGHT__MASK 0x000000ff
|
||||
#define DPU_RDMA_RDMA_WEIGHT_M_WEIGHT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_SURF_NOTCH 0x0000506c
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_EW_SURF_NOTCH__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_EW_SURF_NOTCH__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_RESERVED_0__SHIFT 0
|
||||
|
||||
// ============ MESA CNA EMIT (fill_first_regcmd, CNA section) ============
|
||||
// This is the exact upstream code to port. 'regs' is the output array (util_dynarray);
|
||||
// EMIT(reg,val) => emit(regs,reg,val) => pack (target<<48)|(val<<16)|reg with target=block+1.
|
||||
// 'task->' and 'operation->' fields become explicit function parameters in your port.
|
||||
fill_first_regcmd(struct rkt_ml_subgraph *subgraph,
|
||||
const struct rkt_operation *operation,
|
||||
struct util_dynarray *regs, unsigned task_num)
|
||||
{
|
||||
struct split_task *task =
|
||||
util_dynarray_element(&operation->tasks, struct split_task, task_num);
|
||||
unsigned num_tasks =
|
||||
util_dynarray_num_elements(&operation->tasks, struct split_task);
|
||||
unsigned output_zero_point = task->output_zero_point;
|
||||
unsigned weights_zero_point = task->weights_zero_point;
|
||||
unsigned offset = output_zero_point - 0x80;
|
||||
|
||||
uint32_t con0 = CNA_CBUF_CON0_WEIGHT_BANK(task->weights_banks) |
|
||||
CNA_CBUF_CON0_DATA_BANK(task->input_banks);
|
||||
if (task_num > 0 && operation->reuse_weights_cbuf)
|
||||
con0 |= CNA_CBUF_CON0_WEIGHT_REUSE(1);
|
||||
|
||||
EMIT(REG_CNA_CBUF_CON0, con0);
|
||||
|
||||
EMIT(REG_CNA_DCOMP_REGNUM, 0);
|
||||
EMIT(REG_CNA_DCOMP_CTRL, 0);
|
||||
|
||||
uint32_t con1 = 0x0;
|
||||
if (task->input_channels_real == 1) {
|
||||
con1 |= CNA_CONV_CON1_NONALIGN_DMA(1) | CNA_CONV_CON1_GROUP_LINE_OFF(1) |
|
||||
CNA_CONV_CON1_ARGB_IN(8);
|
||||
}
|
||||
|
||||
if (operation->depthwise)
|
||||
con1 |= CNA_CONV_CON1_CONV_MODE(3);
|
||||
|
||||
EMIT(REG_CNA_CONV_CON1, con1);
|
||||
|
||||
EMIT(REG_DPU_S_POINTER, DPU_S_POINTER_POINTER_PP_MODE(1) |
|
||||
DPU_S_POINTER_EXECUTER_PP_EN(1) |
|
||||
DPU_S_POINTER_POINTER_PP_EN(1));
|
||||
EMIT(REG_DPU_RDMA_RDMA_S_POINTER,
|
||||
DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE(1) |
|
||||
DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN(1) |
|
||||
DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN(1));
|
||||
EMIT(REG_CNA_CONV_CON1, con1);
|
||||
EMIT(REG_CNA_CONV_CON2,
|
||||
CNA_CONV_CON2_FEATURE_GRAINS(
|
||||
50 + task->stride_y + 1)); /* Magic: Seems to pass the most tests */
|
||||
EMIT(REG_CNA_CONV_CON3, CNA_CONV_CON3_CONV_X_STRIDE(task->stride_x) |
|
||||
CNA_CONV_CON3_CONV_Y_STRIDE(task->stride_y));
|
||||
EMIT(REG_CNA_DATA_SIZE0,
|
||||
CNA_DATA_SIZE0_DATAIN_WIDTH(task->input_width) |
|
||||
CNA_DATA_SIZE0_DATAIN_HEIGHT(task->input_height));
|
||||
|
||||
EMIT(REG_CNA_DATA_SIZE1,
|
||||
CNA_DATA_SIZE1_DATAIN_CHANNEL_REAL(task->input_channels_real - 1) |
|
||||
CNA_DATA_SIZE1_DATAIN_CHANNEL(task->input_channels));
|
||||
|
||||
EMIT(REG_CNA_DATA_SIZE2, CNA_DATA_SIZE2_DATAOUT_WIDTH(task->output_width));
|
||||
EMIT(REG_CNA_DATA_SIZE3, CNA_DATA_SIZE3_DATAOUT_ATOMICS(task->atomic_count));
|
||||
EMIT(REG_CNA_WEIGHT_SIZE0, task->weights_width * task->weights_height *
|
||||
task->input_channels * task->weights_kernels);
|
||||
EMIT(REG_CNA_WEIGHT_SIZE1,
|
||||
task->weights_width * task->weights_height * task->input_channels);
|
||||
EMIT(REG_CNA_WEIGHT_SIZE2,
|
||||
CNA_WEIGHT_SIZE2_WEIGHT_WIDTH(task->weights_width) |
|
||||
CNA_WEIGHT_SIZE2_WEIGHT_HEIGHT(task->weights_height) |
|
||||
CNA_WEIGHT_SIZE2_WEIGHT_KERNELS(task->weights_kernels));
|
||||
|
||||
EMIT(REG_CNA_CBUF_CON0, con0);
|
||||
|
||||
EMIT(REG_CNA_CBUF_CON1, CNA_CBUF_CON1_DATA_ENTRIES(task->input_data_entries));
|
||||
|
||||
if (task->input_channels_real == 1) {
|
||||
unsigned truncate = 14;
|
||||
unsigned scale = 16384;
|
||||
unsigned offset = 65408;
|
||||
|
||||
if (operation->addition_input || operation->add_tensor != -1) {
|
||||
truncate = 15;
|
||||
scale = 32388;
|
||||
}
|
||||
|
||||
EMIT(REG_CNA_CVT_CON0, CNA_CVT_CON0_CVT_TRUNCATE_3(truncate) |
|
||||
CNA_CVT_CON0_CVT_TRUNCATE_2(truncate) |
|
||||
CNA_CVT_CON0_CVT_TRUNCATE_1(truncate) |
|
||||
CNA_CVT_CON0_CVT_TRUNCATE_0(truncate));
|
||||
EMIT(REG_CNA_CVT_CON1,
|
||||
CNA_CVT_CON1_CVT_SCALE0(scale) | CNA_CVT_CON1_CVT_OFFSET0(offset));
|
||||
EMIT(REG_CNA_CVT_CON2,
|
||||
CNA_CVT_CON2_CVT_SCALE1(scale) | CNA_CVT_CON2_CVT_OFFSET1(offset));
|
||||
EMIT(REG_CNA_CVT_CON3,
|
||||
CNA_CVT_CON3_CVT_SCALE2(scale) | CNA_CVT_CON3_CVT_OFFSET2(offset));
|
||||
EMIT(REG_CNA_CVT_CON4,
|
||||
CNA_CVT_CON4_CVT_SCALE3(scale) | CNA_CVT_CON4_CVT_OFFSET3(offset));
|
||||
} else {
|
||||
EMIT(REG_CNA_CVT_CON0, CNA_CVT_CON0_DATA_SIGN(1) |
|
||||
CNA_CVT_CON0_CVT_TYPE(1) |
|
||||
CNA_CVT_CON0_CVT_BYPASS(1));
|
||||
EMIT(REG_CNA_CVT_CON1, CNA_CVT_CON1_CVT_SCALE0(1));
|
||||
EMIT(REG_CNA_CVT_CON2, CNA_CVT_CON2_CVT_SCALE1(1));
|
||||
EMIT(REG_CNA_CVT_CON3, CNA_CVT_CON3_CVT_SCALE2(1));
|
||||
EMIT(REG_CNA_CVT_CON4, CNA_CVT_CON4_CVT_SCALE3(1));
|
||||
}
|
||||
|
||||
EMIT(REG_CNA_FC_CON0, 0);
|
||||
EMIT(REG_CNA_FC_CON1, 0);
|
||||
EMIT(REG_CNA_PAD_CON0, CNA_PAD_CON0_PAD_LEFT(task->pad_left) |
|
||||
CNA_PAD_CON0_PAD_TOP(task->pad_top));
|
||||
EMIT(REG_CNA_FEATURE_DATA_ADDR,
|
||||
rkt_get_tensor(subgraph, operation->input_index)->phys_addr +
|
||||
task->input_offset);
|
||||
EMIT(REG_CNA_FC_CON2, 0);
|
||||
EMIT(REG_CNA_DMA_CON0,
|
||||
CNA_DMA_CON0_WEIGHT_BURST_LEN(15) | CNA_DMA_CON0_DATA_BURST_LEN(15));
|
||||
EMIT(REG_CNA_DMA_CON1, CNA_DMA_CON1_LINE_STRIDE(task->input_line_stride));
|
||||
EMIT(REG_CNA_DMA_CON2, CNA_DMA_CON2_SURF_STRIDE(task->input_surface_stride));
|
||||
|
||||
EMIT(REG_CNA_FC_DATA_SIZE0,
|
||||
CNA_FC_DATA_SIZE0_DMA_WIDTH(operation->input_width) |
|
||||
CNA_FC_DATA_SIZE0_DMA_HEIGHT(task->input_height));
|
||||
|
||||
EMIT(REG_CNA_FC_DATA_SIZE1,
|
||||
CNA_FC_DATA_SIZE1_DMA_CHANNEL(task->input_channels));
|
||||
EMIT(REG_CNA_DCOMP_CTRL, 0);
|
||||
EMIT(REG_CNA_DCOMP_REGNUM, 0);
|
||||
EMIT(REG_CNA_DCOMP_ADDR0, rkt_resource(operation->weights)->phys_addr);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT0, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT1, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT2, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT3, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT4, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT5, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT6, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT7, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT8, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT9, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT10, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT11, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT12, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT13, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT14, 0);
|
||||
EMIT(REG_CNA_DCOMP_AMOUNT15, 0);
|
||||
|
||||
if (task->input_channels_real == 1) {
|
||||
EMIT(REG_CNA_CVT_CON5, 65535);
|
||||
} else {
|
||||
EMIT(REG_CNA_CVT_CON5, 0);
|
||||
}
|
||||
|
||||
int32_t pad_con1;
|
||||
if (task->weights_width >= 3 && task->input_zero_point == 0x0)
|
||||
pad_con1 = 0xffff8080;
|
||||
else
|
||||
pad_con1 = task->input_zero_point - 0x80;
|
||||
|
||||
if (operation->addition_input || operation->add_tensor != -1)
|
||||
pad_con1 = 0xffffff80;
|
||||
|
||||
if (operation->depthwise && task->input_zero_point == 0x8b)
|
||||
pad_con1 = 0x0b0b;
|
||||
|
||||
EMIT(REG_CNA_PAD_CON1, pad_con1);
|
||||
|
||||
uint32_t misc_cfg = CORE_MISC_CFG_QD_EN(1);
|
||||
if (operation->depthwise)
|
||||
misc_cfg |= CORE_MISC_CFG_DW_EN(1);
|
||||
|
||||
@@ -0,0 +1,769 @@
|
||||
#ifndef COREDPU_DEFS_H
|
||||
#define COREDPU_DEFS_H
|
||||
|
||||
#define REG_PC_VERSION 0x00000000
|
||||
#define PC_VERSION_VERSION__MASK 0xffffffff
|
||||
#define PC_VERSION_VERSION__SHIFT 0
|
||||
#define REG_PC_VERSION_NUM 0x00000004
|
||||
#define PC_VERSION_NUM_VERSION_NUM__MASK 0xffffffff
|
||||
#define PC_VERSION_NUM_VERSION_NUM__SHIFT 0
|
||||
#define REG_PC_OPERATION_ENABLE 0x00000008
|
||||
#define PC_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define PC_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define PC_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define PC_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_PC_BASE_ADDRESS 0x00000010
|
||||
#define PC_BASE_ADDRESS_PC_SOURCE_ADDR__MASK 0xfffffff0
|
||||
#define PC_BASE_ADDRESS_PC_SOURCE_ADDR__SHIFT 4
|
||||
#define PC_BASE_ADDRESS_RESERVED_0__MASK 0x0000000e
|
||||
#define PC_BASE_ADDRESS_RESERVED_0__SHIFT 1
|
||||
#define PC_BASE_ADDRESS_PC_SEL__MASK 0x00000001
|
||||
#define PC_BASE_ADDRESS_PC_SEL__SHIFT 0
|
||||
#define REG_PC_REGISTER_AMOUNTS 0x00000014
|
||||
#define PC_REGISTER_AMOUNTS_RESERVED_0__MASK 0xffff0000
|
||||
#define PC_REGISTER_AMOUNTS_RESERVED_0__SHIFT 16
|
||||
#define PC_REGISTER_AMOUNTS_PC_DATA_AMOUNT__MASK 0x0000ffff
|
||||
#define PC_REGISTER_AMOUNTS_PC_DATA_AMOUNT__SHIFT 0
|
||||
#define REG_PC_INTERRUPT_MASK 0x00000020
|
||||
#define PC_INTERRUPT_MASK_RESERVED_0__MASK 0xffffc000
|
||||
#define PC_INTERRUPT_MASK_RESERVED_0__SHIFT 14
|
||||
#define PC_INTERRUPT_MASK_DMA_WRITE_ERROR 0x00002000
|
||||
#define PC_INTERRUPT_MASK_DMA_READ_ERROR 0x00001000
|
||||
#define PC_INTERRUPT_MASK_PPU_1 0x00000800
|
||||
#define PC_INTERRUPT_MASK_PPU_0 0x00000400
|
||||
#define PC_INTERRUPT_MASK_DPU_1 0x00000200
|
||||
#define PC_INTERRUPT_MASK_DPU_0 0x00000100
|
||||
#define PC_INTERRUPT_MASK_CORE_1 0x00000080
|
||||
#define PC_INTERRUPT_MASK_CORE_0 0x00000040
|
||||
#define PC_INTERRUPT_MASK_CNA_CSC_1 0x00000020
|
||||
#define PC_INTERRUPT_MASK_CNA_CSC_0 0x00000010
|
||||
#define PC_INTERRUPT_MASK_CNA_WEIGHT_1 0x00000008
|
||||
#define PC_INTERRUPT_MASK_CNA_WEIGHT_0 0x00000004
|
||||
#define PC_INTERRUPT_MASK_CNA_FEATURE_1 0x00000002
|
||||
#define PC_INTERRUPT_MASK_CNA_FEATURE_0 0x00000001
|
||||
#define REG_PC_INTERRUPT_CLEAR 0x00000024
|
||||
#define PC_INTERRUPT_CLEAR_RESERVED_0__MASK 0xffffc000
|
||||
#define PC_INTERRUPT_CLEAR_RESERVED_0__SHIFT 14
|
||||
#define PC_INTERRUPT_CLEAR_DMA_WRITE_ERROR 0x00002000
|
||||
#define PC_INTERRUPT_CLEAR_DMA_READ_ERROR 0x00001000
|
||||
#define PC_INTERRUPT_CLEAR_PPU_1 0x00000800
|
||||
#define PC_INTERRUPT_CLEAR_PPU_0 0x00000400
|
||||
#define PC_INTERRUPT_CLEAR_DPU_1 0x00000200
|
||||
#define PC_INTERRUPT_CLEAR_DPU_0 0x00000100
|
||||
#define PC_INTERRUPT_CLEAR_CORE_1 0x00000080
|
||||
#define PC_INTERRUPT_CLEAR_CORE_0 0x00000040
|
||||
#define PC_INTERRUPT_CLEAR_CNA_CSC_1 0x00000020
|
||||
#define PC_INTERRUPT_CLEAR_CNA_CSC_0 0x00000010
|
||||
#define PC_INTERRUPT_CLEAR_CNA_WEIGHT_1 0x00000008
|
||||
#define PC_INTERRUPT_CLEAR_CNA_WEIGHT_0 0x00000004
|
||||
#define PC_INTERRUPT_CLEAR_CNA_FEATURE_1 0x00000002
|
||||
#define PC_INTERRUPT_CLEAR_CNA_FEATURE_0 0x00000001
|
||||
#define REG_PC_INTERRUPT_STATUS 0x00000028
|
||||
#define PC_INTERRUPT_STATUS_RESERVED_0__MASK 0xffffc000
|
||||
#define PC_INTERRUPT_STATUS_RESERVED_0__SHIFT 14
|
||||
#define PC_INTERRUPT_STATUS_DMA_WRITE_ERROR 0x00002000
|
||||
#define PC_INTERRUPT_STATUS_DMA_READ_ERROR 0x00001000
|
||||
#define PC_INTERRUPT_STATUS_PPU_1 0x00000800
|
||||
#define PC_INTERRUPT_STATUS_PPU_0 0x00000400
|
||||
#define PC_INTERRUPT_STATUS_DPU_1 0x00000200
|
||||
#define PC_INTERRUPT_STATUS_DPU_0 0x00000100
|
||||
#define PC_INTERRUPT_STATUS_CORE_1 0x00000080
|
||||
#define PC_INTERRUPT_STATUS_CORE_0 0x00000040
|
||||
#define PC_INTERRUPT_STATUS_CNA_CSC_1 0x00000020
|
||||
#define PC_INTERRUPT_STATUS_CNA_CSC_0 0x00000010
|
||||
#define PC_INTERRUPT_STATUS_CNA_WEIGHT_1 0x00000008
|
||||
#define PC_INTERRUPT_STATUS_CNA_WEIGHT_0 0x00000004
|
||||
#define PC_INTERRUPT_STATUS_CNA_FEATURE_1 0x00000002
|
||||
#define PC_INTERRUPT_STATUS_CNA_FEATURE_0 0x00000001
|
||||
#define REG_PC_INTERRUPT_RAW_STATUS 0x0000002c
|
||||
#define PC_INTERRUPT_RAW_STATUS_RESERVED_0__MASK 0xffffc000
|
||||
#define PC_INTERRUPT_RAW_STATUS_RESERVED_0__SHIFT 14
|
||||
#define PC_INTERRUPT_RAW_STATUS_DMA_WRITE_ERROR 0x00002000
|
||||
#define PC_INTERRUPT_RAW_STATUS_DMA_READ_ERROR 0x00001000
|
||||
#define PC_INTERRUPT_RAW_STATUS_PPU_1 0x00000800
|
||||
#define PC_INTERRUPT_RAW_STATUS_PPU_0 0x00000400
|
||||
#define PC_INTERRUPT_RAW_STATUS_DPU_1 0x00000200
|
||||
#define PC_INTERRUPT_RAW_STATUS_DPU_0 0x00000100
|
||||
#define PC_INTERRUPT_RAW_STATUS_CORE_1 0x00000080
|
||||
#define PC_INTERRUPT_RAW_STATUS_CORE_0 0x00000040
|
||||
#define PC_INTERRUPT_RAW_STATUS_CNA_CSC_1 0x00000020
|
||||
#define PC_INTERRUPT_RAW_STATUS_CNA_CSC_0 0x00000010
|
||||
#define PC_INTERRUPT_RAW_STATUS_CNA_WEIGHT_1 0x00000008
|
||||
#define PC_INTERRUPT_RAW_STATUS_CNA_WEIGHT_0 0x00000004
|
||||
#define PC_INTERRUPT_RAW_STATUS_CNA_FEATURE_1 0x00000002
|
||||
#define PC_INTERRUPT_RAW_STATUS_CNA_FEATURE_0 0x00000001
|
||||
#define REG_PC_TASK_CON 0x00000030
|
||||
#define PC_TASK_CON_RESERVED_0__MASK 0xffffc000
|
||||
#define PC_TASK_CON_RESERVED_0__SHIFT 14
|
||||
#define PC_TASK_CON_TASK_COUNT_CLEAR__MASK 0x00002000
|
||||
#define PC_TASK_CON_TASK_COUNT_CLEAR__SHIFT 13
|
||||
#define PC_TASK_CON_TASK_PP_EN__MASK 0x00001000
|
||||
#define PC_TASK_CON_TASK_PP_EN__SHIFT 12
|
||||
#define PC_TASK_CON_TASK_NUMBER__MASK 0x00000fff
|
||||
#define PC_TASK_CON_TASK_NUMBER__SHIFT 0
|
||||
#define REG_PC_TASK_DMA_BASE_ADDR 0x00000034
|
||||
#define PC_TASK_DMA_BASE_ADDR_DMA_BASE_ADDR__MASK 0xfffffff0
|
||||
#define PC_TASK_DMA_BASE_ADDR_DMA_BASE_ADDR__SHIFT 4
|
||||
#define PC_TASK_DMA_BASE_ADDR_RESERVED_0__MASK 0x0000000f
|
||||
#define PC_TASK_DMA_BASE_ADDR_RESERVED_0__SHIFT 0
|
||||
#define REG_PC_TASK_STATUS 0x0000003c
|
||||
#define PC_TASK_STATUS_RESERVED_0__MASK 0xf0000000
|
||||
#define PC_TASK_STATUS_RESERVED_0__SHIFT 28
|
||||
#define PC_TASK_STATUS_TASK_STATUS__MASK 0x0fffffff
|
||||
#define PC_TASK_STATUS_TASK_STATUS__SHIFT 0
|
||||
#define REG_CORE_S_STATUS 0x00003000
|
||||
#define CORE_S_STATUS_RESERVED_0__MASK 0xfffc0000
|
||||
#define CORE_S_STATUS_RESERVED_0__SHIFT 18
|
||||
#define CORE_S_STATUS_STATUS_1__MASK 0x00030000
|
||||
#define CORE_S_STATUS_STATUS_1__SHIFT 16
|
||||
#define CORE_S_STATUS_RESERVED_1__MASK 0x0000fffc
|
||||
#define CORE_S_STATUS_RESERVED_1__SHIFT 2
|
||||
#define CORE_S_STATUS_STATUS_0__MASK 0x00000003
|
||||
#define CORE_S_STATUS_STATUS_0__SHIFT 0
|
||||
#define REG_CORE_S_POINTER 0x00003004
|
||||
#define CORE_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define CORE_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define CORE_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define CORE_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define CORE_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define CORE_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define CORE_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define CORE_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define CORE_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define CORE_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define CORE_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define CORE_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define CORE_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define CORE_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define CORE_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define CORE_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define CORE_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define CORE_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_CORE_OPERATION_ENABLE 0x00003008
|
||||
#define CORE_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define CORE_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define CORE_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define CORE_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_CORE_MAC_GATING 0x0000300c
|
||||
#define CORE_MAC_GATING_RESERVED_0__MASK 0xf8000000
|
||||
#define CORE_MAC_GATING_RESERVED_0__SHIFT 27
|
||||
#define CORE_MAC_GATING_SLCG_OP_EN__MASK 0x07ffffff
|
||||
#define CORE_MAC_GATING_SLCG_OP_EN__SHIFT 0
|
||||
#define REG_CORE_MISC_CFG 0x00003010
|
||||
#define CORE_MISC_CFG_RESERVED_0__MASK 0xfff00000
|
||||
#define CORE_MISC_CFG_RESERVED_0__SHIFT 20
|
||||
#define CORE_MISC_CFG_SOFT_GATING__MASK 0x000fc000
|
||||
#define CORE_MISC_CFG_SOFT_GATING__SHIFT 14
|
||||
#define CORE_MISC_CFG_RESERVED_1__MASK 0x00003800
|
||||
#define CORE_MISC_CFG_RESERVED_1__SHIFT 11
|
||||
#define CORE_MISC_CFG_PROC_PRECISION__MASK 0x00000700
|
||||
#define CORE_MISC_CFG_PROC_PRECISION__SHIFT 8
|
||||
#define CORE_MISC_CFG_RESERVED_2__MASK 0x000000fc
|
||||
#define CORE_MISC_CFG_RESERVED_2__SHIFT 2
|
||||
#define CORE_MISC_CFG_DW_EN__MASK 0x00000002
|
||||
#define CORE_MISC_CFG_DW_EN__SHIFT 1
|
||||
#define CORE_MISC_CFG_QD_EN__MASK 0x00000001
|
||||
#define CORE_MISC_CFG_QD_EN__SHIFT 0
|
||||
#define REG_CORE_DATAOUT_SIZE_0 0x00003014
|
||||
#define CORE_DATAOUT_SIZE_0_DATAOUT_HEIGHT__MASK 0xffff0000
|
||||
#define CORE_DATAOUT_SIZE_0_DATAOUT_HEIGHT__SHIFT 16
|
||||
#define CORE_DATAOUT_SIZE_0_DATAOUT_WIDTH__MASK 0x0000ffff
|
||||
#define CORE_DATAOUT_SIZE_0_DATAOUT_WIDTH__SHIFT 0
|
||||
#define REG_CORE_DATAOUT_SIZE_1 0x00003018
|
||||
#define CORE_DATAOUT_SIZE_1_RESERVED_0__MASK 0xffff0000
|
||||
#define CORE_DATAOUT_SIZE_1_RESERVED_0__SHIFT 16
|
||||
#define CORE_DATAOUT_SIZE_1_DATAOUT_CHANNEL__MASK 0x0000ffff
|
||||
#define CORE_DATAOUT_SIZE_1_DATAOUT_CHANNEL__SHIFT 0
|
||||
#define REG_CORE_CLIP_TRUNCATE 0x0000301c
|
||||
#define CORE_CLIP_TRUNCATE_RESERVED_0__MASK 0xffffff80
|
||||
#define CORE_CLIP_TRUNCATE_RESERVED_0__SHIFT 7
|
||||
#define CORE_CLIP_TRUNCATE_ROUND_TYPE__MASK 0x00000040
|
||||
#define CORE_CLIP_TRUNCATE_ROUND_TYPE__SHIFT 6
|
||||
#define CORE_CLIP_TRUNCATE_RESERVED_1__MASK 0x00000020
|
||||
#define CORE_CLIP_TRUNCATE_RESERVED_1__SHIFT 5
|
||||
#define CORE_CLIP_TRUNCATE_CLIP_TRUNCATE__MASK 0x0000001f
|
||||
#define CORE_CLIP_TRUNCATE_CLIP_TRUNCATE__SHIFT 0
|
||||
#define REG_DPU_S_STATUS 0x00004000
|
||||
#define DPU_S_STATUS_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_S_STATUS_RESERVED_0__SHIFT 18
|
||||
#define DPU_S_STATUS_STATUS_1__MASK 0x00030000
|
||||
#define DPU_S_STATUS_STATUS_1__SHIFT 16
|
||||
#define DPU_S_STATUS_RESERVED_1__MASK 0x0000fffc
|
||||
#define DPU_S_STATUS_RESERVED_1__SHIFT 2
|
||||
#define DPU_S_STATUS_STATUS_0__MASK 0x00000003
|
||||
#define DPU_S_STATUS_STATUS_0__SHIFT 0
|
||||
#define REG_DPU_S_POINTER 0x00004004
|
||||
#define DPU_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define DPU_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define DPU_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define DPU_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define DPU_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define DPU_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define DPU_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define DPU_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define DPU_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define DPU_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define DPU_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define DPU_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define DPU_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define DPU_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define DPU_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define DPU_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define DPU_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define DPU_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_DPU_OPERATION_ENABLE 0x00004008
|
||||
#define DPU_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define DPU_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define DPU_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define DPU_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_DPU_FEATURE_MODE_CFG 0x0000400c
|
||||
#define DPU_FEATURE_MODE_CFG_COMB_USE__MASK 0x80000000
|
||||
#define DPU_FEATURE_MODE_CFG_COMB_USE__SHIFT 31
|
||||
#define DPU_FEATURE_MODE_CFG_TP_EN__MASK 0x40000000
|
||||
#define DPU_FEATURE_MODE_CFG_TP_EN__SHIFT 30
|
||||
#define DPU_FEATURE_MODE_CFG_RGP_TYPE__MASK 0x3c000000
|
||||
#define DPU_FEATURE_MODE_CFG_RGP_TYPE__SHIFT 26
|
||||
#define DPU_FEATURE_MODE_CFG_NONALIGN__MASK 0x02000000
|
||||
#define DPU_FEATURE_MODE_CFG_NONALIGN__SHIFT 25
|
||||
#define DPU_FEATURE_MODE_CFG_SURF_LEN__MASK 0x01fffe00
|
||||
#define DPU_FEATURE_MODE_CFG_SURF_LEN__SHIFT 9
|
||||
#define DPU_FEATURE_MODE_CFG_BURST_LEN__MASK 0x000001e0
|
||||
#define DPU_FEATURE_MODE_CFG_BURST_LEN__SHIFT 5
|
||||
#define DPU_FEATURE_MODE_CFG_CONV_MODE__MASK 0x00000018
|
||||
#define DPU_FEATURE_MODE_CFG_CONV_MODE__SHIFT 3
|
||||
#define DPU_FEATURE_MODE_CFG_OUTPUT_MODE__MASK 0x00000006
|
||||
#define DPU_FEATURE_MODE_CFG_OUTPUT_MODE__SHIFT 1
|
||||
#define DPU_FEATURE_MODE_CFG_FLYING_MODE__MASK 0x00000001
|
||||
#define DPU_FEATURE_MODE_CFG_FLYING_MODE__SHIFT 0
|
||||
#define REG_DPU_DATA_FORMAT 0x00004010
|
||||
#define DPU_DATA_FORMAT_OUT_PRECISION__MASK 0xe0000000
|
||||
#define DPU_DATA_FORMAT_OUT_PRECISION__SHIFT 29
|
||||
#define DPU_DATA_FORMAT_IN_PRECISION__MASK 0x1c000000
|
||||
#define DPU_DATA_FORMAT_IN_PRECISION__SHIFT 26
|
||||
#define DPU_DATA_FORMAT_EW_TRUNCATE_NEG__MASK 0x03ff0000
|
||||
#define DPU_DATA_FORMAT_EW_TRUNCATE_NEG__SHIFT 16
|
||||
#define DPU_DATA_FORMAT_BN_MUL_SHIFT_VALUE_NEG__MASK 0x0000fc00
|
||||
#define DPU_DATA_FORMAT_BN_MUL_SHIFT_VALUE_NEG__SHIFT 10
|
||||
#define DPU_DATA_FORMAT_BS_MUL_SHIFT_VALUE_NEG__MASK 0x000003f0
|
||||
#define DPU_DATA_FORMAT_BS_MUL_SHIFT_VALUE_NEG__SHIFT 4
|
||||
#define DPU_DATA_FORMAT_MC_SURF_OUT__MASK 0x00000008
|
||||
#define DPU_DATA_FORMAT_MC_SURF_OUT__SHIFT 3
|
||||
#define DPU_DATA_FORMAT_PROC_PRECISION__MASK 0x00000007
|
||||
#define DPU_DATA_FORMAT_PROC_PRECISION__SHIFT 0
|
||||
#define REG_DPU_OFFSET_PEND 0x00004014
|
||||
#define DPU_OFFSET_PEND_RESERVED_0__MASK 0xffff0000
|
||||
#define DPU_OFFSET_PEND_RESERVED_0__SHIFT 16
|
||||
#define DPU_OFFSET_PEND_OFFSET_PEND__MASK 0x0000ffff
|
||||
#define DPU_OFFSET_PEND_OFFSET_PEND__SHIFT 0
|
||||
#define REG_DPU_DST_BASE_ADDR 0x00004020
|
||||
#define DPU_DST_BASE_ADDR_DST_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_DST_BASE_ADDR_DST_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_DST_SURF_STRIDE 0x00004024
|
||||
#define DPU_DST_SURF_STRIDE_DST_SURF_STRIDE__MASK 0xfffffff0
|
||||
#define DPU_DST_SURF_STRIDE_DST_SURF_STRIDE__SHIFT 4
|
||||
#define DPU_DST_SURF_STRIDE_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_DST_SURF_STRIDE_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_DATA_CUBE_WIDTH 0x00004030
|
||||
#define DPU_DATA_CUBE_WIDTH_RESERVED_0__MASK 0xffffe000
|
||||
#define DPU_DATA_CUBE_WIDTH_RESERVED_0__SHIFT 13
|
||||
#define DPU_DATA_CUBE_WIDTH_WIDTH__MASK 0x00001fff
|
||||
#define DPU_DATA_CUBE_WIDTH_WIDTH__SHIFT 0
|
||||
#define REG_DPU_DATA_CUBE_HEIGHT 0x00004034
|
||||
#define DPU_DATA_CUBE_HEIGHT_RESERVED_0__MASK 0xfe000000
|
||||
#define DPU_DATA_CUBE_HEIGHT_RESERVED_0__SHIFT 25
|
||||
#define DPU_DATA_CUBE_HEIGHT_MINMAX_CTL__MASK 0x01c00000
|
||||
#define DPU_DATA_CUBE_HEIGHT_MINMAX_CTL__SHIFT 22
|
||||
#define DPU_DATA_CUBE_HEIGHT_RESERVED_1__MASK 0x003fe000
|
||||
#define DPU_DATA_CUBE_HEIGHT_RESERVED_1__SHIFT 13
|
||||
#define DPU_DATA_CUBE_HEIGHT_HEIGHT__MASK 0x00001fff
|
||||
#define DPU_DATA_CUBE_HEIGHT_HEIGHT__SHIFT 0
|
||||
#define REG_DPU_DATA_CUBE_NOTCH_ADDR 0x00004038
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_RESERVED_0__MASK 0xe0000000
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_RESERVED_0__SHIFT 29
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_NOTCH_ADDR_1__MASK 0x1fff0000
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_NOTCH_ADDR_1__SHIFT 16
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_RESERVED_1__MASK 0x0000e000
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_RESERVED_1__SHIFT 13
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_NOTCH_ADDR_0__MASK 0x00001fff
|
||||
#define DPU_DATA_CUBE_NOTCH_ADDR_NOTCH_ADDR_0__SHIFT 0
|
||||
#define REG_DPU_DATA_CUBE_CHANNEL 0x0000403c
|
||||
#define DPU_DATA_CUBE_CHANNEL_RESERVED_0__MASK 0xe0000000
|
||||
#define DPU_DATA_CUBE_CHANNEL_RESERVED_0__SHIFT 29
|
||||
#define DPU_DATA_CUBE_CHANNEL_ORIG_CHANNEL__MASK 0x1fff0000
|
||||
#define DPU_DATA_CUBE_CHANNEL_ORIG_CHANNEL__SHIFT 16
|
||||
#define DPU_DATA_CUBE_CHANNEL_RESERVED_1__MASK 0x0000e000
|
||||
#define DPU_DATA_CUBE_CHANNEL_RESERVED_1__SHIFT 13
|
||||
#define DPU_DATA_CUBE_CHANNEL_CHANNEL__MASK 0x00001fff
|
||||
#define DPU_DATA_CUBE_CHANNEL_CHANNEL__SHIFT 0
|
||||
#define REG_DPU_BS_CFG 0x00004040
|
||||
#define DPU_BS_CFG_RESERVED_0__MASK 0xfff00000
|
||||
#define DPU_BS_CFG_RESERVED_0__SHIFT 20
|
||||
#define DPU_BS_CFG_BS_ALU_ALGO__MASK 0x000f0000
|
||||
#define DPU_BS_CFG_BS_ALU_ALGO__SHIFT 16
|
||||
#define DPU_BS_CFG_RESERVED_1__MASK 0x0000fe00
|
||||
#define DPU_BS_CFG_RESERVED_1__SHIFT 9
|
||||
#define DPU_BS_CFG_BS_ALU_SRC__MASK 0x00000100
|
||||
#define DPU_BS_CFG_BS_ALU_SRC__SHIFT 8
|
||||
#define DPU_BS_CFG_BS_RELUX_EN__MASK 0x00000080
|
||||
#define DPU_BS_CFG_BS_RELUX_EN__SHIFT 7
|
||||
#define DPU_BS_CFG_BS_RELU_BYPASS__MASK 0x00000040
|
||||
#define DPU_BS_CFG_BS_RELU_BYPASS__SHIFT 6
|
||||
#define DPU_BS_CFG_BS_MUL_PRELU__MASK 0x00000020
|
||||
#define DPU_BS_CFG_BS_MUL_PRELU__SHIFT 5
|
||||
#define DPU_BS_CFG_BS_MUL_BYPASS__MASK 0x00000010
|
||||
#define DPU_BS_CFG_BS_MUL_BYPASS__SHIFT 4
|
||||
#define DPU_BS_CFG_RESERVED_2__MASK 0x0000000c
|
||||
#define DPU_BS_CFG_RESERVED_2__SHIFT 2
|
||||
#define DPU_BS_CFG_BS_ALU_BYPASS__MASK 0x00000002
|
||||
#define DPU_BS_CFG_BS_ALU_BYPASS__SHIFT 1
|
||||
#define DPU_BS_CFG_BS_BYPASS__MASK 0x00000001
|
||||
#define DPU_BS_CFG_BS_BYPASS__SHIFT 0
|
||||
#define REG_DPU_BS_ALU_CFG 0x00004044
|
||||
#define DPU_BS_ALU_CFG_BS_ALU_OPERAND__MASK 0xffffffff
|
||||
#define DPU_BS_ALU_CFG_BS_ALU_OPERAND__SHIFT 0
|
||||
#define REG_DPU_BS_MUL_CFG 0x00004048
|
||||
#define DPU_BS_MUL_CFG_BS_MUL_OPERAND__MASK 0xffff0000
|
||||
#define DPU_BS_MUL_CFG_BS_MUL_OPERAND__SHIFT 16
|
||||
#define DPU_BS_MUL_CFG_RESERVED_0__MASK 0x0000c000
|
||||
#define DPU_BS_MUL_CFG_RESERVED_0__SHIFT 14
|
||||
#define DPU_BS_MUL_CFG_BS_MUL_SHIFT_VALUE__MASK 0x00003f00
|
||||
#define DPU_BS_MUL_CFG_BS_MUL_SHIFT_VALUE__SHIFT 8
|
||||
#define DPU_BS_MUL_CFG_RESERVED_1__MASK 0x000000fc
|
||||
#define DPU_BS_MUL_CFG_RESERVED_1__SHIFT 2
|
||||
#define DPU_BS_MUL_CFG_BS_TRUNCATE_SRC__MASK 0x00000002
|
||||
#define DPU_BS_MUL_CFG_BS_TRUNCATE_SRC__SHIFT 1
|
||||
#define DPU_BS_MUL_CFG_BS_MUL_SRC__MASK 0x00000001
|
||||
#define DPU_BS_MUL_CFG_BS_MUL_SRC__SHIFT 0
|
||||
#define REG_DPU_BS_RELUX_CMP_VALUE 0x0000404c
|
||||
#define DPU_BS_RELUX_CMP_VALUE_BS_RELUX_CMP_DAT__MASK 0xffffffff
|
||||
#define DPU_BS_RELUX_CMP_VALUE_BS_RELUX_CMP_DAT__SHIFT 0
|
||||
#define REG_DPU_BS_OW_CFG 0x00004050
|
||||
#define DPU_BS_OW_CFG_RGP_CNTER__MASK 0xf0000000
|
||||
#define DPU_BS_OW_CFG_RGP_CNTER__SHIFT 28
|
||||
#define DPU_BS_OW_CFG_TP_ORG_EN__MASK 0x08000000
|
||||
#define DPU_BS_OW_CFG_TP_ORG_EN__SHIFT 27
|
||||
#define DPU_BS_OW_CFG_RESERVED_0__MASK 0x07fff800
|
||||
#define DPU_BS_OW_CFG_RESERVED_0__SHIFT 11
|
||||
#define DPU_BS_OW_CFG_SIZE_E_2__MASK 0x00000700
|
||||
#define DPU_BS_OW_CFG_SIZE_E_2__SHIFT 8
|
||||
#define DPU_BS_OW_CFG_SIZE_E_1__MASK 0x000000e0
|
||||
#define DPU_BS_OW_CFG_SIZE_E_1__SHIFT 5
|
||||
#define DPU_BS_OW_CFG_SIZE_E_0__MASK 0x0000001c
|
||||
#define DPU_BS_OW_CFG_SIZE_E_0__SHIFT 2
|
||||
#define DPU_BS_OW_CFG_OD_BYPASS__MASK 0x00000002
|
||||
#define DPU_BS_OW_CFG_OD_BYPASS__SHIFT 1
|
||||
#define DPU_BS_OW_CFG_OW_SRC__MASK 0x00000001
|
||||
#define DPU_BS_OW_CFG_OW_SRC__SHIFT 0
|
||||
#define REG_DPU_BS_OW_OP 0x00004054
|
||||
#define DPU_BS_OW_OP_RESERVED_0__MASK 0xffff0000
|
||||
#define DPU_BS_OW_OP_RESERVED_0__SHIFT 16
|
||||
#define DPU_BS_OW_OP_OW_OP__MASK 0x0000ffff
|
||||
#define DPU_BS_OW_OP_OW_OP__SHIFT 0
|
||||
#define REG_DPU_WDMA_SIZE_0 0x00004058
|
||||
#define DPU_WDMA_SIZE_0_RESERVED_0__MASK 0xf0000000
|
||||
#define DPU_WDMA_SIZE_0_RESERVED_0__SHIFT 28
|
||||
#define DPU_WDMA_SIZE_0_TP_PRECISION__MASK 0x08000000
|
||||
#define DPU_WDMA_SIZE_0_TP_PRECISION__SHIFT 27
|
||||
#define DPU_WDMA_SIZE_0_SIZE_C_WDMA__MASK 0x07ff0000
|
||||
#define DPU_WDMA_SIZE_0_SIZE_C_WDMA__SHIFT 16
|
||||
#define DPU_WDMA_SIZE_0_RESERVED_1__MASK 0x0000e000
|
||||
#define DPU_WDMA_SIZE_0_RESERVED_1__SHIFT 13
|
||||
#define DPU_WDMA_SIZE_0_CHANNEL_WDMA__MASK 0x00001fff
|
||||
#define DPU_WDMA_SIZE_0_CHANNEL_WDMA__SHIFT 0
|
||||
#define REG_DPU_WDMA_SIZE_1 0x0000405c
|
||||
#define DPU_WDMA_SIZE_1_RESERVED_0__MASK 0xe0000000
|
||||
#define DPU_WDMA_SIZE_1_RESERVED_0__SHIFT 29
|
||||
#define DPU_WDMA_SIZE_1_HEIGHT_WDMA__MASK 0x1fff0000
|
||||
#define DPU_WDMA_SIZE_1_HEIGHT_WDMA__SHIFT 16
|
||||
#define DPU_WDMA_SIZE_1_RESERVED_1__MASK 0x0000e000
|
||||
#define DPU_WDMA_SIZE_1_RESERVED_1__SHIFT 13
|
||||
#define DPU_WDMA_SIZE_1_WIDTH_WDMA__MASK 0x00001fff
|
||||
#define DPU_WDMA_SIZE_1_WIDTH_WDMA__SHIFT 0
|
||||
#define REG_DPU_BN_CFG 0x00004060
|
||||
#define DPU_BN_CFG_RESERVED_0__MASK 0xfff00000
|
||||
#define DPU_BN_CFG_RESERVED_0__SHIFT 20
|
||||
#define DPU_BN_CFG_BN_ALU_ALGO__MASK 0x000f0000
|
||||
#define DPU_BN_CFG_BN_ALU_ALGO__SHIFT 16
|
||||
#define DPU_BN_CFG_RESERVED_1__MASK 0x0000fe00
|
||||
#define DPU_BN_CFG_RESERVED_1__SHIFT 9
|
||||
#define DPU_BN_CFG_BN_ALU_SRC__MASK 0x00000100
|
||||
#define DPU_BN_CFG_BN_ALU_SRC__SHIFT 8
|
||||
#define DPU_BN_CFG_BN_RELUX_EN__MASK 0x00000080
|
||||
#define DPU_BN_CFG_BN_RELUX_EN__SHIFT 7
|
||||
#define DPU_BN_CFG_BN_RELU_BYPASS__MASK 0x00000040
|
||||
#define DPU_BN_CFG_BN_RELU_BYPASS__SHIFT 6
|
||||
#define DPU_BN_CFG_BN_MUL_PRELU__MASK 0x00000020
|
||||
#define DPU_BN_CFG_BN_MUL_PRELU__SHIFT 5
|
||||
#define DPU_BN_CFG_BN_MUL_BYPASS__MASK 0x00000010
|
||||
#define DPU_BN_CFG_BN_MUL_BYPASS__SHIFT 4
|
||||
#define DPU_BN_CFG_RESERVED_2__MASK 0x0000000c
|
||||
#define DPU_BN_CFG_RESERVED_2__SHIFT 2
|
||||
#define DPU_BN_CFG_BN_ALU_BYPASS__MASK 0x00000002
|
||||
#define DPU_BN_CFG_BN_ALU_BYPASS__SHIFT 1
|
||||
#define DPU_BN_CFG_BN_BYPASS__MASK 0x00000001
|
||||
#define DPU_BN_CFG_BN_BYPASS__SHIFT 0
|
||||
#define REG_DPU_BN_ALU_CFG 0x00004064
|
||||
#define DPU_BN_ALU_CFG_BN_ALU_OPERAND__MASK 0xffffffff
|
||||
#define DPU_BN_ALU_CFG_BN_ALU_OPERAND__SHIFT 0
|
||||
#define REG_DPU_BN_MUL_CFG 0x00004068
|
||||
#define DPU_BN_MUL_CFG_BN_MUL_OPERAND__MASK 0xffff0000
|
||||
#define DPU_BN_MUL_CFG_BN_MUL_OPERAND__SHIFT 16
|
||||
#define DPU_BN_MUL_CFG_RESERVED_0__MASK 0x0000c000
|
||||
#define DPU_BN_MUL_CFG_RESERVED_0__SHIFT 14
|
||||
#define DPU_BN_MUL_CFG_BN_MUL_SHIFT_VALUE__MASK 0x00003f00
|
||||
#define DPU_BN_MUL_CFG_BN_MUL_SHIFT_VALUE__SHIFT 8
|
||||
#define DPU_BN_MUL_CFG_RESERVED_1__MASK 0x000000fc
|
||||
#define DPU_BN_MUL_CFG_RESERVED_1__SHIFT 2
|
||||
#define DPU_BN_MUL_CFG_BN_TRUNCATE_SRC__MASK 0x00000002
|
||||
#define DPU_BN_MUL_CFG_BN_TRUNCATE_SRC__SHIFT 1
|
||||
#define DPU_BN_MUL_CFG_BN_MUL_SRC__MASK 0x00000001
|
||||
#define DPU_BN_MUL_CFG_BN_MUL_SRC__SHIFT 0
|
||||
#define REG_DPU_BN_RELUX_CMP_VALUE 0x0000406c
|
||||
#define DPU_BN_RELUX_CMP_VALUE_BN_RELUX_CMP_DAT__MASK 0xffffffff
|
||||
#define DPU_BN_RELUX_CMP_VALUE_BN_RELUX_CMP_DAT__SHIFT 0
|
||||
#define REG_DPU_EW_CFG 0x00004070
|
||||
#define DPU_EW_CFG_EW_CVT_TYPE__MASK 0x80000000
|
||||
#define DPU_EW_CFG_EW_CVT_TYPE__SHIFT 31
|
||||
#define DPU_EW_CFG_EW_CVT_ROUND__MASK 0x40000000
|
||||
#define DPU_EW_CFG_EW_CVT_ROUND__SHIFT 30
|
||||
#define DPU_EW_CFG_EW_DATA_MODE__MASK 0x30000000
|
||||
#define DPU_EW_CFG_EW_DATA_MODE__SHIFT 28
|
||||
#define DPU_EW_CFG_RESERVED_0__MASK 0x0f000000
|
||||
#define DPU_EW_CFG_RESERVED_0__SHIFT 24
|
||||
#define DPU_EW_CFG_EDATA_SIZE__MASK 0x00c00000
|
||||
#define DPU_EW_CFG_EDATA_SIZE__SHIFT 22
|
||||
#define DPU_EW_CFG_EW_EQUAL_EN__MASK 0x00200000
|
||||
#define DPU_EW_CFG_EW_EQUAL_EN__SHIFT 21
|
||||
#define DPU_EW_CFG_EW_BINARY_EN__MASK 0x00100000
|
||||
#define DPU_EW_CFG_EW_BINARY_EN__SHIFT 20
|
||||
#define DPU_EW_CFG_EW_ALU_ALGO__MASK 0x000f0000
|
||||
#define DPU_EW_CFG_EW_ALU_ALGO__SHIFT 16
|
||||
#define DPU_EW_CFG_RESERVED_1__MASK 0x0000f800
|
||||
#define DPU_EW_CFG_RESERVED_1__SHIFT 11
|
||||
#define DPU_EW_CFG_EW_RELUX_EN__MASK 0x00000400
|
||||
#define DPU_EW_CFG_EW_RELUX_EN__SHIFT 10
|
||||
#define DPU_EW_CFG_EW_RELU_BYPASS__MASK 0x00000200
|
||||
#define DPU_EW_CFG_EW_RELU_BYPASS__SHIFT 9
|
||||
#define DPU_EW_CFG_EW_OP_CVT_BYPASS__MASK 0x00000100
|
||||
#define DPU_EW_CFG_EW_OP_CVT_BYPASS__SHIFT 8
|
||||
#define DPU_EW_CFG_EW_LUT_BYPASS__MASK 0x00000080
|
||||
#define DPU_EW_CFG_EW_LUT_BYPASS__SHIFT 7
|
||||
#define DPU_EW_CFG_EW_OP_SRC__MASK 0x00000040
|
||||
#define DPU_EW_CFG_EW_OP_SRC__SHIFT 6
|
||||
#define DPU_EW_CFG_EW_MUL_PRELU__MASK 0x00000020
|
||||
#define DPU_EW_CFG_EW_MUL_PRELU__SHIFT 5
|
||||
#define DPU_EW_CFG_RESERVED_2__MASK 0x00000018
|
||||
#define DPU_EW_CFG_RESERVED_2__SHIFT 3
|
||||
#define DPU_EW_CFG_EW_OP_TYPE__MASK 0x00000004
|
||||
#define DPU_EW_CFG_EW_OP_TYPE__SHIFT 2
|
||||
#define DPU_EW_CFG_EW_OP_BYPASS__MASK 0x00000002
|
||||
#define DPU_EW_CFG_EW_OP_BYPASS__SHIFT 1
|
||||
#define DPU_EW_CFG_EW_BYPASS__MASK 0x00000001
|
||||
#define DPU_EW_CFG_EW_BYPASS__SHIFT 0
|
||||
#define REG_DPU_EW_CVT_OFFSET_VALUE 0x00004074
|
||||
#define DPU_EW_CVT_OFFSET_VALUE_EW_OP_CVT_OFFSET__MASK 0xffffffff
|
||||
#define DPU_EW_CVT_OFFSET_VALUE_EW_OP_CVT_OFFSET__SHIFT 0
|
||||
#define REG_DPU_EW_CVT_SCALE_VALUE 0x00004078
|
||||
#define DPU_EW_CVT_SCALE_VALUE_EW_TRUNCATE__MASK 0xffc00000
|
||||
#define DPU_EW_CVT_SCALE_VALUE_EW_TRUNCATE__SHIFT 22
|
||||
#define DPU_EW_CVT_SCALE_VALUE_EW_OP_CVT_SHIFT__MASK 0x003f0000
|
||||
#define DPU_EW_CVT_SCALE_VALUE_EW_OP_CVT_SHIFT__SHIFT 16
|
||||
#define DPU_EW_CVT_SCALE_VALUE_EW_OP_CVT_SCALE__MASK 0x0000ffff
|
||||
#define DPU_EW_CVT_SCALE_VALUE_EW_OP_CVT_SCALE__SHIFT 0
|
||||
#define REG_DPU_EW_RELUX_CMP_VALUE 0x0000407c
|
||||
#define DPU_EW_RELUX_CMP_VALUE_EW_RELUX_CMP_DAT__MASK 0xffffffff
|
||||
#define DPU_EW_RELUX_CMP_VALUE_EW_RELUX_CMP_DAT__SHIFT 0
|
||||
#define REG_DPU_OUT_CVT_OFFSET 0x00004080
|
||||
#define DPU_OUT_CVT_OFFSET_OUT_CVT_OFFSET__MASK 0xffffffff
|
||||
#define DPU_OUT_CVT_OFFSET_OUT_CVT_OFFSET__SHIFT 0
|
||||
#define REG_DPU_OUT_CVT_SCALE 0x00004084
|
||||
#define DPU_OUT_CVT_SCALE_RESERVED_0__MASK 0xfffe0000
|
||||
#define DPU_OUT_CVT_SCALE_RESERVED_0__SHIFT 17
|
||||
#define DPU_OUT_CVT_SCALE_FP32TOFP16_EN__MASK 0x00010000
|
||||
#define DPU_OUT_CVT_SCALE_FP32TOFP16_EN__SHIFT 16
|
||||
#define DPU_OUT_CVT_SCALE_OUT_CVT_SCALE__MASK 0x0000ffff
|
||||
#define DPU_OUT_CVT_SCALE_OUT_CVT_SCALE__SHIFT 0
|
||||
#define REG_DPU_OUT_CVT_SHIFT 0x00004088
|
||||
#define DPU_OUT_CVT_SHIFT_CVT_TYPE__MASK 0x80000000
|
||||
#define DPU_OUT_CVT_SHIFT_CVT_TYPE__SHIFT 31
|
||||
#define DPU_OUT_CVT_SHIFT_CVT_ROUND__MASK 0x40000000
|
||||
#define DPU_OUT_CVT_SHIFT_CVT_ROUND__SHIFT 30
|
||||
#define DPU_OUT_CVT_SHIFT_RESERVED_0__MASK 0x3ff00000
|
||||
#define DPU_OUT_CVT_SHIFT_RESERVED_0__SHIFT 20
|
||||
#define DPU_OUT_CVT_SHIFT_MINUS_EXP__MASK 0x000ff000
|
||||
#define DPU_OUT_CVT_SHIFT_MINUS_EXP__SHIFT 12
|
||||
#define DPU_OUT_CVT_SHIFT_OUT_CVT_SHIFT__MASK 0x00000fff
|
||||
#define DPU_OUT_CVT_SHIFT_OUT_CVT_SHIFT__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_0 0x00004090
|
||||
#define DPU_EW_OP_VALUE_0_EW_OPERAND_0__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_0_EW_OPERAND_0__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_1 0x00004094
|
||||
#define DPU_EW_OP_VALUE_1_EW_OPERAND_1__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_1_EW_OPERAND_1__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_2 0x00004098
|
||||
#define DPU_EW_OP_VALUE_2_EW_OPERAND_2__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_2_EW_OPERAND_2__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_3 0x0000409c
|
||||
#define DPU_EW_OP_VALUE_3_EW_OPERAND_3__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_3_EW_OPERAND_3__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_4 0x000040a0
|
||||
#define DPU_EW_OP_VALUE_4_EW_OPERAND_4__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_4_EW_OPERAND_4__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_5 0x000040a4
|
||||
#define DPU_EW_OP_VALUE_5_EW_OPERAND_5__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_5_EW_OPERAND_5__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_6 0x000040a8
|
||||
#define DPU_EW_OP_VALUE_6_EW_OPERAND_6__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_6_EW_OPERAND_6__SHIFT 0
|
||||
#define REG_DPU_EW_OP_VALUE_7 0x000040ac
|
||||
#define DPU_EW_OP_VALUE_7_EW_OPERAND_7__MASK 0xffffffff
|
||||
#define DPU_EW_OP_VALUE_7_EW_OPERAND_7__SHIFT 0
|
||||
#define REG_DPU_SURFACE_ADD 0x000040c0
|
||||
#define DPU_SURFACE_ADD_SURF_ADD__MASK 0xfffffff0
|
||||
#define DPU_SURFACE_ADD_SURF_ADD__SHIFT 4
|
||||
#define DPU_SURFACE_ADD_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_SURFACE_ADD_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_LUT_ACCESS_CFG 0x00004100
|
||||
#define DPU_LUT_ACCESS_CFG_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_LUT_ACCESS_CFG_RESERVED_0__SHIFT 18
|
||||
#define DPU_LUT_ACCESS_CFG_LUT_ACCESS_TYPE__MASK 0x00020000
|
||||
#define DPU_LUT_ACCESS_CFG_LUT_ACCESS_TYPE__SHIFT 17
|
||||
#define DPU_LUT_ACCESS_CFG_LUT_TABLE_ID__MASK 0x00010000
|
||||
#define DPU_LUT_ACCESS_CFG_LUT_TABLE_ID__SHIFT 16
|
||||
#define DPU_LUT_ACCESS_CFG_RESERVED_1__MASK 0x0000fc00
|
||||
#define DPU_LUT_ACCESS_CFG_RESERVED_1__SHIFT 10
|
||||
#define DPU_LUT_ACCESS_CFG_LUT_ADDR__MASK 0x000003ff
|
||||
#define DPU_LUT_ACCESS_CFG_LUT_ADDR__SHIFT 0
|
||||
#define REG_DPU_LUT_ACCESS_DATA 0x00004104
|
||||
#define DPU_LUT_ACCESS_DATA_RESERVED_0__MASK 0xffff0000
|
||||
#define DPU_LUT_ACCESS_DATA_RESERVED_0__SHIFT 16
|
||||
#define DPU_LUT_ACCESS_DATA_LUT_ACCESS_DATA__MASK 0x0000ffff
|
||||
#define DPU_LUT_ACCESS_DATA_LUT_ACCESS_DATA__SHIFT 0
|
||||
#define REG_DPU_LUT_CFG 0x00004108
|
||||
#define DPU_LUT_CFG_RESERVED_0__MASK 0xffffff00
|
||||
#define DPU_LUT_CFG_RESERVED_0__SHIFT 8
|
||||
#define DPU_LUT_CFG_LUT_CAL_SEL__MASK 0x00000080
|
||||
#define DPU_LUT_CFG_LUT_CAL_SEL__SHIFT 7
|
||||
#define DPU_LUT_CFG_LUT_HYBRID_PRIORITY__MASK 0x00000040
|
||||
#define DPU_LUT_CFG_LUT_HYBRID_PRIORITY__SHIFT 6
|
||||
#define DPU_LUT_CFG_LUT_OFLOW_PRIORITY__MASK 0x00000020
|
||||
#define DPU_LUT_CFG_LUT_OFLOW_PRIORITY__SHIFT 5
|
||||
#define DPU_LUT_CFG_LUT_UFLOW_PRIORITY__MASK 0x00000010
|
||||
#define DPU_LUT_CFG_LUT_UFLOW_PRIORITY__SHIFT 4
|
||||
#define DPU_LUT_CFG_LUT_LO_LE_MUX__MASK 0x0000000c
|
||||
#define DPU_LUT_CFG_LUT_LO_LE_MUX__SHIFT 2
|
||||
#define DPU_LUT_CFG_LUT_EXPAND_EN__MASK 0x00000002
|
||||
#define DPU_LUT_CFG_LUT_EXPAND_EN__SHIFT 1
|
||||
#define DPU_LUT_CFG_LUT_ROAD_SEL__MASK 0x00000001
|
||||
#define DPU_LUT_CFG_LUT_ROAD_SEL__SHIFT 0
|
||||
#define REG_DPU_LUT_INFO 0x0000410c
|
||||
#define DPU_LUT_INFO_RESERVED_0__MASK 0xff000000
|
||||
#define DPU_LUT_INFO_RESERVED_0__SHIFT 24
|
||||
#define DPU_LUT_INFO_LUT_LO_INDEX_SELECT__MASK 0x00ff0000
|
||||
#define DPU_LUT_INFO_LUT_LO_INDEX_SELECT__SHIFT 16
|
||||
#define DPU_LUT_INFO_LUT_LE_INDEX_SELECT__MASK 0x0000ff00
|
||||
#define DPU_LUT_INFO_LUT_LE_INDEX_SELECT__SHIFT 8
|
||||
#define DPU_LUT_INFO_RESERVED_1__MASK 0x000000ff
|
||||
#define DPU_LUT_INFO_RESERVED_1__SHIFT 0
|
||||
#define REG_DPU_LUT_LE_START 0x00004110
|
||||
#define DPU_LUT_LE_START_LUT_LE_START__MASK 0xffffffff
|
||||
#define DPU_LUT_LE_START_LUT_LE_START__SHIFT 0
|
||||
#define REG_DPU_LUT_LE_END 0x00004114
|
||||
#define DPU_LUT_LE_END_LUT_LE_END__MASK 0xffffffff
|
||||
#define DPU_LUT_LE_END_LUT_LE_END__SHIFT 0
|
||||
#define REG_DPU_LUT_LO_START 0x00004118
|
||||
#define DPU_LUT_LO_START_LUT_LO_START__MASK 0xffffffff
|
||||
#define DPU_LUT_LO_START_LUT_LO_START__SHIFT 0
|
||||
#define REG_DPU_LUT_LO_END 0x0000411c
|
||||
#define DPU_LUT_LO_END_LUT_LO_END__MASK 0xffffffff
|
||||
#define DPU_LUT_LO_END_LUT_LO_END__SHIFT 0
|
||||
#define REG_DPU_LUT_LE_SLOPE_SCALE 0x00004120
|
||||
#define DPU_LUT_LE_SLOPE_SCALE_LUT_LE_SLOPE_OFLOW_SCALE__MASK 0xffff0000
|
||||
#define DPU_LUT_LE_SLOPE_SCALE_LUT_LE_SLOPE_OFLOW_SCALE__SHIFT 16
|
||||
#define DPU_LUT_LE_SLOPE_SCALE_LUT_LE_SLOPE_UFLOW_SCALE__MASK 0x0000ffff
|
||||
#define DPU_LUT_LE_SLOPE_SCALE_LUT_LE_SLOPE_UFLOW_SCALE__SHIFT 0
|
||||
#define REG_DPU_LUT_LE_SLOPE_SHIFT 0x00004124
|
||||
#define DPU_LUT_LE_SLOPE_SHIFT_RESERVED_0__MASK 0xfffffc00
|
||||
#define DPU_LUT_LE_SLOPE_SHIFT_RESERVED_0__SHIFT 10
|
||||
#define DPU_LUT_LE_SLOPE_SHIFT_LUT_LE_SLOPE_OFLOW_SHIFT__MASK 0x000003e0
|
||||
#define DPU_LUT_LE_SLOPE_SHIFT_LUT_LE_SLOPE_OFLOW_SHIFT__SHIFT 5
|
||||
#define DPU_LUT_LE_SLOPE_SHIFT_LUT_LE_SLOPE_UFLOW_SHIFT__MASK 0x0000001f
|
||||
#define DPU_LUT_LE_SLOPE_SHIFT_LUT_LE_SLOPE_UFLOW_SHIFT__SHIFT 0
|
||||
#define REG_DPU_LUT_LO_SLOPE_SCALE 0x00004128
|
||||
#define DPU_LUT_LO_SLOPE_SCALE_LUT_LO_SLOPE_OFLOW_SCALE__MASK 0xffff0000
|
||||
#define DPU_LUT_LO_SLOPE_SCALE_LUT_LO_SLOPE_OFLOW_SCALE__SHIFT 16
|
||||
#define DPU_LUT_LO_SLOPE_SCALE_LUT_LO_SLOPE_UFLOW_SCALE__MASK 0x0000ffff
|
||||
#define DPU_LUT_LO_SLOPE_SCALE_LUT_LO_SLOPE_UFLOW_SCALE__SHIFT 0
|
||||
#define REG_DPU_LUT_LO_SLOPE_SHIFT 0x0000412c
|
||||
#define DPU_LUT_LO_SLOPE_SHIFT_RESERVED_0__MASK 0xfffffc00
|
||||
#define DPU_LUT_LO_SLOPE_SHIFT_RESERVED_0__SHIFT 10
|
||||
#define DPU_LUT_LO_SLOPE_SHIFT_LUT_LO_SLOPE_OFLOW_SHIFT__MASK 0x000003e0
|
||||
#define DPU_LUT_LO_SLOPE_SHIFT_LUT_LO_SLOPE_OFLOW_SHIFT__SHIFT 5
|
||||
#define DPU_LUT_LO_SLOPE_SHIFT_LUT_LO_SLOPE_UFLOW_SHIFT__MASK 0x0000001f
|
||||
#define DPU_LUT_LO_SLOPE_SHIFT_LUT_LO_SLOPE_UFLOW_SHIFT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_S_STATUS 0x00005000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_0__SHIFT 18
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_1__MASK 0x00030000
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_1__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_1__MASK 0x0000fffc
|
||||
#define DPU_RDMA_RDMA_S_STATUS_RESERVED_1__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_0__MASK 0x00000003
|
||||
#define DPU_RDMA_RDMA_S_STATUS_STATUS_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_S_POINTER 0x00005004
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_0__MASK 0xfffe0000
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_0__SHIFT 17
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER__MASK 0x00010000
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_1__MASK 0x0000ffc0
|
||||
#define DPU_RDMA_RDMA_S_POINTER_RESERVED_1__SHIFT 6
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_CLEAR__MASK 0x00000020
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_CLEAR__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_CLEAR__MASK 0x00000010
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_CLEAR__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN__MASK 0x00000004
|
||||
#define DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN__MASK 0x00000002
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_S_POINTER_POINTER__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_OPERATION_ENABLE 0x00005008
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_RESERVED_0__MASK 0xfffffffe
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_RESERVED_0__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_OP_EN__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_OPERATION_ENABLE_OP_EN__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_WIDTH 0x0000500c
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_RESERVED_0__MASK 0xffffe000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_RESERVED_0__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_WIDTH__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_WIDTH_WIDTH__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_HEIGHT 0x00005010
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_0__MASK 0xe0000000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_0__SHIFT 29
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_EW_LINE_NOTCH_ADDR__MASK 0x1fff0000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_EW_LINE_NOTCH_ADDR__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_1__MASK 0x0000e000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_RESERVED_1__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_HEIGHT__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_HEIGHT_HEIGHT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_DATA_CUBE_CHANNEL 0x00005014
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_RESERVED_0__MASK 0xffffe000
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_RESERVED_0__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_CHANNEL__MASK 0x00001fff
|
||||
#define DPU_RDMA_RDMA_DATA_CUBE_CHANNEL_CHANNEL__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SRC_BASE_ADDR 0x00005018
|
||||
#define DPU_RDMA_RDMA_SRC_BASE_ADDR_SRC_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_SRC_BASE_ADDR_SRC_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BRDMA_CFG 0x0000501c
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_0__MASK 0xffffffe0
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_0__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_BRDMA_DATA_USE__MASK 0x0000001e
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_BRDMA_DATA_USE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_1__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_BRDMA_CFG_RESERVED_1__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BS_BASE_ADDR 0x00005020
|
||||
#define DPU_RDMA_RDMA_BS_BASE_ADDR_BS_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_BS_BASE_ADDR_BS_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_NRDMA_CFG 0x00005028
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_0__MASK 0xffffffe0
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_0__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_NRDMA_DATA_USE__MASK 0x0000001e
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_NRDMA_DATA_USE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_1__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_NRDMA_CFG_RESERVED_1__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_BN_BASE_ADDR 0x0000502c
|
||||
#define DPU_RDMA_RDMA_BN_BASE_ADDR_BN_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_BN_BASE_ADDR_BN_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_ERDMA_CFG 0x00005034
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_MODE__MASK 0xc0000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_MODE__SHIFT 30
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_SURF_MODE__MASK 0x20000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_SURF_MODE__SHIFT 29
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_NONALIGN__MASK 0x10000000
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_NONALIGN__SHIFT 28
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_RESERVED_0__MASK 0x0ffffff0
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_RESERVED_0__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_SIZE__MASK 0x0000000c
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DATA_SIZE__SHIFT 2
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_OV4K_BYPASS__MASK 0x00000002
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_OV4K_BYPASS__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DISABLE__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_ERDMA_CFG_ERDMA_DISABLE__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_BASE_ADDR 0x00005038
|
||||
#define DPU_RDMA_RDMA_EW_BASE_ADDR_EW_BASE_ADDR__MASK 0xffffffff
|
||||
#define DPU_RDMA_RDMA_EW_BASE_ADDR_EW_BASE_ADDR__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_SURF_STRIDE 0x00005040
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_EW_SURF_STRIDE__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_EW_SURF_STRIDE__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_EW_SURF_STRIDE_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_FEATURE_MODE_CFG 0x00005044
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_RESERVED_0__MASK 0xfffc0000
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_RESERVED_0__SHIFT 18
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_IN_PRECISION__MASK 0x00038000
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_IN_PRECISION__SHIFT 15
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_BURST_LEN__MASK 0x00007800
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_BURST_LEN__SHIFT 11
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_COMB_USE__MASK 0x00000700
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_COMB_USE__SHIFT 8
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_PROC_PRECISION__MASK 0x000000e0
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_PROC_PRECISION__SHIFT 5
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_DISABLE__MASK 0x00000010
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_DISABLE__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_FP16TOFP32_EN__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_MRDMA_FP16TOFP32_EN__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_CONV_MODE__MASK 0x00000006
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_CONV_MODE__SHIFT 1
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_FLYING_MODE__MASK 0x00000001
|
||||
#define DPU_RDMA_RDMA_FEATURE_MODE_CFG_FLYING_MODE__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SRC_DMA_CFG 0x00005048
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_LINE_NOTCH_ADDR__MASK 0xfff80000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_LINE_NOTCH_ADDR__SHIFT 19
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_RESERVED_0__MASK 0x0007c000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_RESERVED_0__SHIFT 14
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_POOLING_METHOD__MASK 0x00002000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_POOLING_METHOD__SHIFT 13
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_UNPOOLING_EN__MASK 0x00001000
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_UNPOOLING_EN__SHIFT 12
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_HEIGHT__MASK 0x00000e00
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_HEIGHT__SHIFT 9
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_WIDTH__MASK 0x000001c0
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_STRIDE_WIDTH__SHIFT 6
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_HEIGHT__MASK 0x00000038
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_HEIGHT__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_WIDTH__MASK 0x00000007
|
||||
#define DPU_RDMA_RDMA_SRC_DMA_CFG_KERNEL_WIDTH__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_SURF_NOTCH 0x0000504c
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_SURF_NOTCH_ADDR__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_SURF_NOTCH_ADDR__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_SURF_NOTCH_RESERVED_0__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_PAD_CFG 0x00005064
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_VALUE__MASK 0xffff0000
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_VALUE__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_0__MASK 0x0000ff80
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_0__SHIFT 7
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_TOP__MASK 0x00000070
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_TOP__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_1__MASK 0x00000008
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_RESERVED_1__SHIFT 3
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_LEFT__MASK 0x00000007
|
||||
#define DPU_RDMA_RDMA_PAD_CFG_PAD_LEFT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_WEIGHT 0x00005068
|
||||
#define DPU_RDMA_RDMA_WEIGHT_E_WEIGHT__MASK 0xff000000
|
||||
#define DPU_RDMA_RDMA_WEIGHT_E_WEIGHT__SHIFT 24
|
||||
#define DPU_RDMA_RDMA_WEIGHT_N_WEIGHT__MASK 0x00ff0000
|
||||
#define DPU_RDMA_RDMA_WEIGHT_N_WEIGHT__SHIFT 16
|
||||
#define DPU_RDMA_RDMA_WEIGHT_B_WEIGHT__MASK 0x0000ff00
|
||||
#define DPU_RDMA_RDMA_WEIGHT_B_WEIGHT__SHIFT 8
|
||||
#define DPU_RDMA_RDMA_WEIGHT_M_WEIGHT__MASK 0x000000ff
|
||||
#define DPU_RDMA_RDMA_WEIGHT_M_WEIGHT__SHIFT 0
|
||||
#define REG_DPU_RDMA_RDMA_EW_SURF_NOTCH 0x0000506c
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_EW_SURF_NOTCH__MASK 0xfffffff0
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_EW_SURF_NOTCH__SHIFT 4
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_RESERVED_0__MASK 0x0000000f
|
||||
#define DPU_RDMA_RDMA_EW_SURF_NOTCH_RESERVED_0__SHIFT 0
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,96 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
/*
|
||||
* librocket — thin C wrapper over the Rockchip "rocket" NPU DRM-accel uAPI.
|
||||
*
|
||||
* Implementation — pure syscall-surface plumbing.
|
||||
*/
|
||||
#include "librocket.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int rocket_open(const char *path)
|
||||
{
|
||||
int fd = open(path, O_RDWR | O_CLOEXEC);
|
||||
if (fd < 0)
|
||||
return -errno;
|
||||
return fd;
|
||||
}
|
||||
|
||||
int rocket_create_bo(int fd, uint32_t size, uint32_t *handle_out,
|
||||
uint64_t *dma_address_out, uint64_t *mmap_offset_out)
|
||||
{
|
||||
struct drm_rocket_create_bo create_bo;
|
||||
int ret;
|
||||
|
||||
memset(&create_bo, 0, sizeof(create_bo));
|
||||
create_bo.size = size;
|
||||
|
||||
ret = ioctl(fd, DRM_IOCTL_ROCKET_CREATE_BO, &create_bo);
|
||||
if (ret < 0)
|
||||
return -errno;
|
||||
|
||||
if (handle_out)
|
||||
*handle_out = create_bo.handle;
|
||||
if (dma_address_out)
|
||||
*dma_address_out = create_bo.dma_address;
|
||||
if (mmap_offset_out)
|
||||
*mmap_offset_out = create_bo.offset;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *rocket_mmap_bo(int fd, uint64_t mmap_offset, uint32_t size)
|
||||
{
|
||||
return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd,
|
||||
mmap_offset);
|
||||
}
|
||||
|
||||
int rocket_prep_bo(int fd, uint32_t handle, int64_t timeout_ns)
|
||||
{
|
||||
struct drm_rocket_prep_bo prep_bo;
|
||||
int ret;
|
||||
|
||||
memset(&prep_bo, 0, sizeof(prep_bo));
|
||||
prep_bo.handle = handle;
|
||||
prep_bo.timeout_ns = timeout_ns;
|
||||
|
||||
ret = ioctl(fd, DRM_IOCTL_ROCKET_PREP_BO, &prep_bo);
|
||||
if (ret < 0)
|
||||
return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rocket_fini_bo(int fd, uint32_t handle)
|
||||
{
|
||||
struct drm_rocket_fini_bo fini_bo;
|
||||
int ret;
|
||||
|
||||
memset(&fini_bo, 0, sizeof(fini_bo));
|
||||
fini_bo.handle = handle;
|
||||
|
||||
ret = ioctl(fd, DRM_IOCTL_ROCKET_FINI_BO, &fini_bo);
|
||||
if (ret < 0)
|
||||
return -errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rocket_submit(int fd, struct drm_rocket_job *jobs, uint32_t job_count)
|
||||
{
|
||||
struct drm_rocket_submit submit;
|
||||
int ret;
|
||||
|
||||
memset(&submit, 0, sizeof(submit));
|
||||
submit.jobs = (uintptr_t)jobs;
|
||||
submit.job_count = job_count;
|
||||
submit.job_struct_size = sizeof(struct drm_rocket_job);
|
||||
|
||||
ret = ioctl(fd, DRM_IOCTL_ROCKET_SUBMIT, &submit);
|
||||
if (ret < 0)
|
||||
return -errno;
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
/*
|
||||
* librocket — thin C wrapper over the Rockchip "rocket" NPU DRM-accel uAPI.
|
||||
*
|
||||
* This is pure syscall-surface plumbing. No NPU/tensor semantics, no register
|
||||
* commands. Every function returns 0 on success or -errno on failure (except
|
||||
* rocket_mmap_bo which returns the mmap'd pointer or MAP_FAILED).
|
||||
*/
|
||||
#ifndef LIBROCKET_H
|
||||
#define LIBROCKET_H
|
||||
|
||||
#include "rocket_accel.h"
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* rocket_open - open a rocket NPU accel device
|
||||
* @path: device node path (e.g. "/dev/accel/accel0")
|
||||
*
|
||||
* Returns the file descriptor on success, or -errno on failure.
|
||||
*/
|
||||
int rocket_open(const char *path);
|
||||
|
||||
/**
|
||||
* rocket_create_bo - allocate a buffer object
|
||||
* @fd: rocket device fd
|
||||
* @size: desired BO size in bytes
|
||||
* @handle_out: on success, written with the GEM handle
|
||||
* @dma_address_out: on success, written with the NPU DMA address
|
||||
* @mmap_offset_out: on success, written with the mmap offset
|
||||
*
|
||||
* Returns 0 on success, -errno on failure.
|
||||
*/
|
||||
int rocket_create_bo(int fd, uint32_t size, uint32_t *handle_out,
|
||||
uint64_t *dma_address_out, uint64_t *mmap_offset_out);
|
||||
|
||||
/**
|
||||
* rocket_mmap_bo - mmap a BO into userspace
|
||||
* @fd: rocket device fd
|
||||
* @mmap_offset: offset returned by rocket_create_bo
|
||||
* @size: number of bytes to map
|
||||
*
|
||||
* Returns the mapped pointer, or MAP_FAILED on failure.
|
||||
*/
|
||||
void *rocket_mmap_bo(int fd, uint64_t mmap_offset, uint32_t size);
|
||||
|
||||
/**
|
||||
* rocket_prep_bo - take CPU ownership of a BO (wait for NPU, sync caches)
|
||||
* @fd: rocket device fd
|
||||
* @handle: GEM handle of the BO
|
||||
* @timeout_ns: max wait time in nanoseconds (-1 for infinite)
|
||||
*
|
||||
* Returns 0 on success, -errno on failure.
|
||||
*/
|
||||
int rocket_prep_bo(int fd, uint32_t handle, int64_t timeout_ns);
|
||||
|
||||
/**
|
||||
* rocket_fini_bo - hand a BO back to the device (sync caches)
|
||||
* @fd: rocket device fd
|
||||
* @handle: GEM handle of the BO
|
||||
*
|
||||
* Returns 0 on success, -errno on failure.
|
||||
*/
|
||||
int rocket_fini_bo(int fd, uint32_t handle);
|
||||
|
||||
/**
|
||||
* rocket_submit - submit NPU jobs
|
||||
* @fd: rocket device fd
|
||||
* @jobs: pointer to an array of struct drm_rocket_job
|
||||
* @job_count: number of jobs in the array
|
||||
*
|
||||
* Returns 0 on success, -errno on failure.
|
||||
*/
|
||||
int rocket_submit(int fd, struct drm_rocket_job *jobs, uint32_t job_count);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* LIBROCKET_H */
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* rkt_matmul.h — Rockchip "rocket" NPU matmul regcmd generator
|
||||
*
|
||||
* Builds a register-command stream for a single INT8 matmul
|
||||
* Y[M][N] = X[M][K] * W[K][N] expressed as a 1×1 convolution.
|
||||
*
|
||||
* Faithfully adapted from the upstream Mesa "rocket" Gallium driver
|
||||
* (rkt_regcmd.c, rkt_task.c, rkt_ml.c, rkt_registers.h).
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#ifndef RKT_MATMUL_H
|
||||
#define RKT_MATMUL_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* rkt_build_matmul_regcmd - build a single-task NPU regcmd for an INT8 matmul
|
||||
*
|
||||
* The matmul is emitted as a 1×1 convolution on the NPU:
|
||||
* input_channels = K
|
||||
* kernels = N
|
||||
* height = M (conv spatial rows)
|
||||
* width = 1 (conv spatial columns)
|
||||
*
|
||||
* @param out caller-provided output buffer
|
||||
* @param out_capacity max uint64_t entries in @out
|
||||
* @param M number of rows of X (and rows of Y)
|
||||
* @param N number of columns of W (and columns of Y)
|
||||
* @param K number of columns of X / rows of W
|
||||
* @param input_dma bus address of X[M][K] (must be 256-byte aligned)
|
||||
* @param weights_dma bus address of W[K][N] (must be 256-byte aligned)
|
||||
* @param output_dma bus address of Y[M][N] (must be 256-byte aligned)
|
||||
* @param input_zero_point int8 zero-point for input (0-255, usually 128)
|
||||
* @param weight_zero_point int8 zero-point for weights (0-255, usually 128)
|
||||
* @param output_zero_point int8 zero-point for output (0-255, usually 128)
|
||||
*
|
||||
* @return number of uint64_t commands written, or -1 if capacity exceeded.
|
||||
*
|
||||
* NOTE: Rate/scale parameters are not exposed. This generator assumes
|
||||
* input_scale = weights_scale = output_scale = 1.0 (identity requantisation).
|
||||
* Callers requiring proper quantised output must patch REG_DPU_OUT_CVT_SCALE
|
||||
* and REG_DPU_OUT_CVT_SHIFT after construction, or provide pre-computed
|
||||
* scale/shift values via an extended API.
|
||||
*/
|
||||
int rkt_build_matmul_regcmd(uint64_t *out, int out_capacity,
|
||||
uint32_t M, uint32_t N, uint32_t K,
|
||||
uint64_t input_dma, uint64_t weights_dma,
|
||||
uint64_t output_dma,
|
||||
int32_t input_zero_point,
|
||||
int32_t weight_zero_point,
|
||||
int32_t output_zero_point);
|
||||
|
||||
#endif /* RKT_MATMUL_H */
|
||||
@@ -0,0 +1,237 @@
|
||||
#include "rkt_matmul_cna.h"
|
||||
#include "cna_defs.h"
|
||||
#include <stdint.h>
|
||||
|
||||
/*
|
||||
* Packed register command: (target << 48) | (value << 16) | reg
|
||||
* target = block_enum + 1. CNA block = 0x200 -> target 0x201; DPU = 0x1000 -> 0x1001.
|
||||
*/
|
||||
static int rkt_push(uint64_t *out, int *n, int cap, uint32_t target,
|
||||
uint32_t reg, uint32_t value)
|
||||
{
|
||||
if (*n >= cap)
|
||||
return -1;
|
||||
out[*n] = ((uint64_t)target << 48) | ((uint64_t)value << 16) | (uint64_t)reg;
|
||||
(*n)++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define EMIT_CNA(reg, val) do { if (rkt_push(out, &n, cap, 0x201, (reg), (val)) < 0) return -1; } while (0)
|
||||
#define EMIT_DPU(reg, val) do { if (rkt_push(out, &n, cap, 0x1001, (reg), (val)) < 0) return -1; } while (0)
|
||||
|
||||
/* Field-set: (value << FIELD__SHIFT) & FIELD__MASK */
|
||||
#define F(v, name) (((uint32_t)(v) << name##__SHIFT) & name##__MASK)
|
||||
|
||||
int rkt_emit_cna(uint64_t *out, int cap, const struct cna_params *p)
|
||||
{
|
||||
int n = 0;
|
||||
|
||||
/* ==== CNA emit sequence (Montessori, chunk by chunk) ==== */
|
||||
uint32_t con0 = F(p->weights_banks, CNA_CBUF_CON0_WEIGHT_BANK) |
|
||||
F(p->input_banks, CNA_CBUF_CON0_DATA_BANK);
|
||||
if (p->task_num > 0 && p->reuse_weights_cbuf)
|
||||
con0 |= F(1, CNA_CBUF_CON0_WEIGHT_REUSE);
|
||||
EMIT_CNA(REG_CNA_CBUF_CON0, con0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_REGNUM, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_CTRL, 0);
|
||||
uint32_t con1 = 0x0;
|
||||
if (p->input_channels_real == 1) {
|
||||
con1 |= F(1, CNA_CONV_CON1_NONALIGN_DMA) | F(1, CNA_CONV_CON1_GROUP_LINE_OFF) |
|
||||
F(8, CNA_CONV_CON1_ARGB_IN);
|
||||
}
|
||||
if (p->depthwise)
|
||||
con1 |= F(3, CNA_CONV_CON1_CONV_MODE);
|
||||
EMIT_CNA(REG_CNA_CONV_CON1, con1);
|
||||
EMIT_DPU(REG_DPU_S_POINTER, F(1, DPU_S_POINTER_POINTER_PP_MODE) |
|
||||
F(1, DPU_S_POINTER_EXECUTER_PP_EN) |
|
||||
F(1, DPU_S_POINTER_POINTER_PP_EN));
|
||||
EMIT_DPU(REG_DPU_RDMA_RDMA_S_POINTER,
|
||||
F(1, DPU_RDMA_RDMA_S_POINTER_POINTER_PP_MODE) |
|
||||
F(1, DPU_RDMA_RDMA_S_POINTER_EXECUTER_PP_EN) |
|
||||
F(1, DPU_RDMA_RDMA_S_POINTER_POINTER_PP_EN));
|
||||
EMIT_CNA(REG_CNA_CONV_CON1, con1);
|
||||
|
||||
EMIT_CNA(REG_CNA_CONV_CON2,
|
||||
F(50 + p->stride_y + 1, CNA_CONV_CON2_FEATURE_GRAINS)); /* Magic: Seems to pass the most tests */
|
||||
EMIT_CNA(REG_CNA_CONV_CON3, F(p->stride_x, CNA_CONV_CON3_CONV_X_STRIDE) |
|
||||
F(p->stride_y, CNA_CONV_CON3_CONV_Y_STRIDE));
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE0,
|
||||
F(p->input_width, CNA_DATA_SIZE0_DATAIN_WIDTH) |
|
||||
F(p->input_height, CNA_DATA_SIZE0_DATAIN_HEIGHT));
|
||||
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE1,
|
||||
F(p->input_channels_real - 1, CNA_DATA_SIZE1_DATAIN_CHANNEL_REAL) |
|
||||
F(p->input_channels, CNA_DATA_SIZE1_DATAIN_CHANNEL));
|
||||
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE2, F(p->output_width, CNA_DATA_SIZE2_DATAOUT_WIDTH));
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE3, F(p->atomic_count, CNA_DATA_SIZE3_DATAOUT_ATOMICS));
|
||||
EMIT_CNA(REG_CNA_WEIGHT_SIZE0, p->weights_width * p->weights_height *
|
||||
p->input_channels * p->weights_kernels);
|
||||
EMIT_CNA(REG_CNA_WEIGHT_SIZE1,
|
||||
p->weights_width * p->weights_height * p->input_channels);
|
||||
EMIT_CNA(REG_CNA_WEIGHT_SIZE2,
|
||||
F(p->weights_width, CNA_WEIGHT_SIZE2_WEIGHT_WIDTH) |
|
||||
F(p->weights_height, CNA_WEIGHT_SIZE2_WEIGHT_HEIGHT) |
|
||||
F(p->weights_kernels, CNA_WEIGHT_SIZE2_WEIGHT_KERNELS));
|
||||
|
||||
EMIT_CNA(REG_CNA_CBUF_CON0, con0);
|
||||
|
||||
EMIT_CNA(REG_CNA_CBUF_CON1, F(p->input_data_entries, CNA_CBUF_CON1_DATA_ENTRIES));
|
||||
|
||||
if (p->input_channels_real == 1) {
|
||||
unsigned truncate = 14;
|
||||
unsigned scale = 16384;
|
||||
unsigned offset = 65408;
|
||||
|
||||
if (p->addition_input || p->add_tensor != -1) {
|
||||
truncate = 15;
|
||||
scale = 32388;
|
||||
}
|
||||
|
||||
EMIT_CNA(REG_CNA_CVT_CON0, F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_3) |
|
||||
F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_2) |
|
||||
F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_1) |
|
||||
F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_0));
|
||||
EMIT_CNA(REG_CNA_CVT_CON1,
|
||||
F(scale, CNA_CVT_CON1_CVT_SCALE0) | F(offset, CNA_CVT_CON1_CVT_OFFSET0));
|
||||
EMIT_CNA(REG_CNA_CVT_CON2,
|
||||
F(scale, CNA_CVT_CON2_CVT_SCALE1) | F(offset, CNA_CVT_CON2_CVT_OFFSET1));
|
||||
EMIT_CNA(REG_CNA_CVT_CON3,
|
||||
F(scale, CNA_CVT_CON3_CVT_SCALE2) | F(offset, CNA_CVT_CON3_CVT_OFFSET2));
|
||||
EMIT_CNA(REG_CNA_CVT_CON4,
|
||||
F(scale, CNA_CVT_CON4_CVT_SCALE3) | F(offset, CNA_CVT_CON4_CVT_OFFSET3));
|
||||
} else {
|
||||
EMIT_CNA(REG_CNA_CVT_CON0, F(1, CNA_CVT_CON0_DATA_SIGN) |
|
||||
F(1, CNA_CVT_CON0_CVT_TYPE) |
|
||||
F(1, CNA_CVT_CON0_CVT_BYPASS));
|
||||
EMIT_CNA(REG_CNA_CVT_CON1, F(1, CNA_CVT_CON1_CVT_SCALE0));
|
||||
EMIT_CNA(REG_CNA_CVT_CON2, F(1, CNA_CVT_CON2_CVT_SCALE1));
|
||||
EMIT_CNA(REG_CNA_CVT_CON3, F(1, CNA_CVT_CON3_CVT_SCALE2));
|
||||
EMIT_CNA(REG_CNA_CVT_CON4, F(1, CNA_CVT_CON4_CVT_SCALE3));
|
||||
}
|
||||
|
||||
EMIT_CNA(REG_CNA_FC_CON0, 0);
|
||||
EMIT_CNA(REG_CNA_FC_CON1, 0);
|
||||
|
||||
EMIT_CNA(REG_CNA_CONV_CON2,
|
||||
F(50 + p->stride_y + 1, CNA_CONV_CON2_FEATURE_GRAINS)); /* Magic: Seems to pass the most tests */
|
||||
EMIT_CNA(REG_CNA_CONV_CON3, F(p->stride_x, CNA_CONV_CON3_CONV_X_STRIDE) |
|
||||
F(p->stride_y, CNA_CONV_CON3_CONV_Y_STRIDE));
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE0,
|
||||
F(p->input_width, CNA_DATA_SIZE0_DATAIN_WIDTH) |
|
||||
F(p->input_height, CNA_DATA_SIZE0_DATAIN_HEIGHT));
|
||||
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE1,
|
||||
F(p->input_channels_real - 1, CNA_DATA_SIZE1_DATAIN_CHANNEL_REAL) |
|
||||
F(p->input_channels, CNA_DATA_SIZE1_DATAIN_CHANNEL));
|
||||
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE2, F(p->output_width, CNA_DATA_SIZE2_DATAOUT_WIDTH));
|
||||
EMIT_CNA(REG_CNA_DATA_SIZE3, F(p->atomic_count, CNA_DATA_SIZE3_DATAOUT_ATOMICS));
|
||||
EMIT_CNA(REG_CNA_WEIGHT_SIZE0, p->weights_width * p->weights_height *
|
||||
p->input_channels * p->weights_kernels);
|
||||
EMIT_CNA(REG_CNA_WEIGHT_SIZE1,
|
||||
p->weights_width * p->weights_height * p->input_channels);
|
||||
EMIT_CNA(REG_CNA_WEIGHT_SIZE2,
|
||||
F(p->weights_width, CNA_WEIGHT_SIZE2_WEIGHT_WIDTH) |
|
||||
F(p->weights_height, CNA_WEIGHT_SIZE2_WEIGHT_HEIGHT) |
|
||||
F(p->weights_kernels, CNA_WEIGHT_SIZE2_WEIGHT_KERNELS));
|
||||
|
||||
EMIT_CNA(REG_CNA_CBUF_CON0, con0);
|
||||
|
||||
EMIT_CNA(REG_CNA_CBUF_CON1, F(p->input_data_entries, CNA_CBUF_CON1_DATA_ENTRIES));
|
||||
|
||||
if (p->input_channels_real == 1) {
|
||||
unsigned truncate = 14;
|
||||
unsigned scale = 16384;
|
||||
unsigned offset = 65408;
|
||||
|
||||
if (p->addition_input || p->add_tensor != -1) {
|
||||
truncate = 15;
|
||||
scale = 32388;
|
||||
}
|
||||
|
||||
EMIT_CNA(REG_CNA_CVT_CON0, F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_3) |
|
||||
F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_2) |
|
||||
F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_1) |
|
||||
F(truncate, CNA_CVT_CON0_CVT_TRUNCATE_0));
|
||||
EMIT_CNA(REG_CNA_CVT_CON1,
|
||||
F(scale, CNA_CVT_CON1_CVT_SCALE0) | F(offset, CNA_CVT_CON1_CVT_OFFSET0));
|
||||
EMIT_CNA(REG_CNA_CVT_CON2,
|
||||
F(scale, CNA_CVT_CON2_CVT_SCALE1) | F(offset, CNA_CVT_CON2_CVT_OFFSET1));
|
||||
EMIT_CNA(REG_CNA_CVT_CON3,
|
||||
F(scale, CNA_CVT_CON3_CVT_SCALE2) | F(offset, CNA_CVT_CON3_CVT_OFFSET2));
|
||||
EMIT_CNA(REG_CNA_CVT_CON4,
|
||||
F(scale, CNA_CVT_CON4_CVT_SCALE3) | F(offset, CNA_CVT_CON4_CVT_OFFSET3));
|
||||
} else {
|
||||
EMIT_CNA(REG_CNA_CVT_CON0, F(1, CNA_CVT_CON0_DATA_SIGN) |
|
||||
F(1, CNA_CVT_CON0_CVT_TYPE) |
|
||||
F(1, CNA_CVT_CON0_CVT_BYPASS));
|
||||
EMIT_CNA(REG_CNA_CVT_CON1, F(1, CNA_CVT_CON1_CVT_SCALE0));
|
||||
EMIT_CNA(REG_CNA_CVT_CON2, F(1, CNA_CVT_CON2_CVT_SCALE1));
|
||||
EMIT_CNA(REG_CNA_CVT_CON3, F(1, CNA_CVT_CON3_CVT_SCALE2));
|
||||
EMIT_CNA(REG_CNA_CVT_CON4, F(1, CNA_CVT_CON4_CVT_SCALE3));
|
||||
}
|
||||
|
||||
EMIT_CNA(REG_CNA_FC_CON0, 0);
|
||||
EMIT_CNA(REG_CNA_FC_CON1, 0);
|
||||
|
||||
EMIT_CNA(REG_CNA_PAD_CON0, F(p->pad_left, CNA_PAD_CON0_PAD_LEFT) |
|
||||
F(p->pad_top, CNA_PAD_CON0_PAD_TOP));
|
||||
EMIT_CNA(REG_CNA_FEATURE_DATA_ADDR,
|
||||
(uint32_t)p->input_dma);
|
||||
EMIT_CNA(REG_CNA_FC_CON2, 0);
|
||||
EMIT_CNA(REG_CNA_DMA_CON0,
|
||||
F(15, CNA_DMA_CON0_WEIGHT_BURST_LEN) | F(15, CNA_DMA_CON0_DATA_BURST_LEN));
|
||||
EMIT_CNA(REG_CNA_DMA_CON1, F(p->input_line_stride, CNA_DMA_CON1_LINE_STRIDE));
|
||||
EMIT_CNA(REG_CNA_DMA_CON2, F(p->input_surface_stride, CNA_DMA_CON2_SURF_STRIDE));
|
||||
|
||||
EMIT_CNA(REG_CNA_FC_DATA_SIZE0,
|
||||
F(p->input_width, CNA_FC_DATA_SIZE0_DMA_WIDTH) |
|
||||
F(p->input_height, CNA_FC_DATA_SIZE0_DMA_HEIGHT));
|
||||
|
||||
EMIT_CNA(REG_CNA_FC_DATA_SIZE1,
|
||||
F(p->input_channels, CNA_FC_DATA_SIZE1_DMA_CHANNEL));
|
||||
EMIT_CNA(REG_CNA_DCOMP_CTRL, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_REGNUM, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_ADDR0, (uint32_t)p->weights_dma);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT0, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT1, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT2, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT3, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT4, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT5, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT6, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT7, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT8, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT9, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT10, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT11, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT12, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT13, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT14, 0);
|
||||
EMIT_CNA(REG_CNA_DCOMP_AMOUNT15, 0);
|
||||
|
||||
if (p->input_channels_real == 1) {
|
||||
EMIT_CNA(REG_CNA_CVT_CON5, 65535);
|
||||
} else {
|
||||
EMIT_CNA(REG_CNA_CVT_CON5, 0);
|
||||
}
|
||||
|
||||
int32_t pad_con1;
|
||||
if (p->weights_width >= 3 && p->input_zero_point == 0x0)
|
||||
pad_con1 = 0xffff8080;
|
||||
else
|
||||
pad_con1 = p->input_zero_point - 0x80;
|
||||
|
||||
if (p->addition_input || p->add_tensor != -1)
|
||||
pad_con1 = 0xffffff80;
|
||||
|
||||
if (p->depthwise && p->input_zero_point == 0x8b)
|
||||
pad_con1 = 0x0b0b;
|
||||
|
||||
EMIT_CNA(REG_CNA_PAD_CON1, pad_con1);
|
||||
|
||||
/* ==== end CNA stage ==== */
|
||||
|
||||
return n;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#ifndef RKT_MATMUL_CNA_H
|
||||
#define RKT_MATMUL_CNA_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* All the task-/operation-level fields the Mesa CNA emit reads, flattened. */
|
||||
struct cna_params {
|
||||
uint32_t input_width, input_height, input_channels, input_channels_real;
|
||||
uint32_t output_width, atomic_count;
|
||||
uint32_t weights_width, weights_height, weights_kernels;
|
||||
uint32_t weights_banks, input_banks, input_data_entries;
|
||||
uint32_t input_line_stride, input_surface_stride;
|
||||
uint64_t input_dma, weights_dma; /* NPU DMA addresses of the input/weight BOs */
|
||||
uint32_t stride_x, stride_y;
|
||||
uint32_t pad_left, pad_right, pad_top, pad_bottom;
|
||||
int32_t output_zero_point, weights_zero_point, input_zero_point;
|
||||
int depthwise, reuse_weights_cbuf, addition_input, add_tensor;
|
||||
unsigned task_num; /* 0 for the first/only task */
|
||||
};
|
||||
|
||||
/* Append the CNA-stage register commands (packed uint64_t) into out[] (capacity cap).
|
||||
Returns the number of commands written, or -1 if capacity would be exceeded. */
|
||||
int rkt_emit_cna(uint64_t *out, int cap, const struct cna_params *p);
|
||||
|
||||
#endif /* RKT_MATMUL_CNA_H */
|
||||
@@ -0,0 +1,33 @@
|
||||
#include "rkt_matmul_coredpu.h"
|
||||
#include "coredpu_defs.h"
|
||||
#include <stdint.h>
|
||||
|
||||
/* Packed register command: (target<<48) | (value<<16) | reg. target = block_enum + 1.
|
||||
CORE=0x800->0x801, DPU=0x1000->0x1001, PC=0x100->0x101. */
|
||||
static int rkt_push(uint64_t *out, int *n, int cap, uint32_t target,
|
||||
uint32_t reg, uint32_t value)
|
||||
{
|
||||
if (*n >= cap)
|
||||
return -1;
|
||||
out[*n] = ((uint64_t)target << 48) | ((uint64_t)value << 16) | (uint64_t)reg;
|
||||
(*n)++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define EMIT_CORE(reg, val) do { if (rkt_push(out, &n, cap, 0x801, (reg), (val)) < 0) return -1; } while (0)
|
||||
#define EMIT_DPU(reg, val) do { if (rkt_push(out, &n, cap, 0x1001, (reg), (val)) < 0) return -1; } while (0)
|
||||
#define EMIT_PC(reg, val) do { if (rkt_push(out, &n, cap, 0x101, (reg), (val)) < 0) return -1; } while (0)
|
||||
#define EMIT_RAW(tgt, reg, val) do { if (rkt_push(out, &n, cap, (tgt), (reg), (val)) < 0) return -1; } while (0)
|
||||
|
||||
#define F(v, name) (((uint32_t)(v) << name##__SHIFT) & name##__MASK)
|
||||
|
||||
int rkt_emit_coredpu(uint64_t *out, int cap, const struct coredpu_params *p)
|
||||
{
|
||||
int n = 0;
|
||||
(void)p;
|
||||
|
||||
/* ==== CORE + DPU + PC emit (filled by slice) ==== */
|
||||
/* @@INSERT@@ */
|
||||
|
||||
return n;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef RKT_MATMUL_COREDPU_H
|
||||
#define RKT_MATMUL_COREDPU_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* Fields the Mesa CORE/DPU/PC emit reads (task-/operation-level flattened). */
|
||||
struct coredpu_params {
|
||||
uint32_t input_width;
|
||||
uint32_t output_width, output_height;
|
||||
uint32_t output_channels, output_channels_real;
|
||||
uint32_t output_offset, output_surface_stride, surfaces_per_row;
|
||||
uint32_t truncate_bits;
|
||||
int depthwise;
|
||||
int32_t addition_offset;
|
||||
int32_t add_tensor; /* index, or -1 if none */
|
||||
float input_scale, weights_scale, output_scale, addition_scale;
|
||||
uint64_t output_addr, add_tensor_addr, biases_addr; /* pre-computed DMA addresses */
|
||||
};
|
||||
|
||||
/* Append CORE+DPU+PC register commands (packed uint64_t) into out[] (capacity cap).
|
||||
Returns number written, or -1 on overflow. */
|
||||
int rkt_emit_coredpu(uint64_t *out, int cap, const struct coredpu_params *p);
|
||||
|
||||
#endif /* RKT_MATMUL_COREDPU_H */
|
||||
@@ -0,0 +1,192 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
/*
|
||||
* Copyright © 2024 Tomeu Vizoso
|
||||
*/
|
||||
#ifndef __DRM_UAPI_ROCKET_ACCEL_H__
|
||||
#define __DRM_UAPI_ROCKET_ACCEL_H__
|
||||
|
||||
#include "drm.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DRM_ROCKET_CREATE_BO 0x00
|
||||
#define DRM_ROCKET_SUBMIT 0x01
|
||||
#define DRM_ROCKET_PREP_BO 0x02
|
||||
#define DRM_ROCKET_FINI_BO 0x03
|
||||
|
||||
#define DRM_IOCTL_ROCKET_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_ROCKET_CREATE_BO, struct drm_rocket_create_bo)
|
||||
#define DRM_IOCTL_ROCKET_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_ROCKET_SUBMIT, struct drm_rocket_submit)
|
||||
#define DRM_IOCTL_ROCKET_PREP_BO DRM_IOW(DRM_COMMAND_BASE + DRM_ROCKET_PREP_BO, struct drm_rocket_prep_bo)
|
||||
#define DRM_IOCTL_ROCKET_FINI_BO DRM_IOW(DRM_COMMAND_BASE + DRM_ROCKET_FINI_BO, struct drm_rocket_fini_bo)
|
||||
|
||||
/**
|
||||
* struct drm_rocket_create_bo - ioctl argument for creating Rocket BOs.
|
||||
*
|
||||
*/
|
||||
struct drm_rocket_create_bo {
|
||||
/**
|
||||
* @size: Input: Size of the requested BO.
|
||||
*/
|
||||
__u32 size;
|
||||
|
||||
/**
|
||||
* @handle: Output: GEM handle for the BO.
|
||||
*/
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @dma_address: Output: DMA address for the BO in the NPU address
|
||||
* space. This address is private to the DRM fd and is valid for
|
||||
* the lifetime of the GEM handle.
|
||||
*/
|
||||
__u64 dma_address;
|
||||
|
||||
/**
|
||||
* @offset: Output: Offset into the drm node to use for subsequent
|
||||
* mmap call.
|
||||
*/
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_rocket_prep_bo - ioctl argument for starting CPU ownership of the BO.
|
||||
*
|
||||
* Takes care of waiting for any NPU jobs that might still use the NPU and performs cache
|
||||
* synchronization.
|
||||
*/
|
||||
struct drm_rocket_prep_bo {
|
||||
/**
|
||||
* @handle: Input: GEM handle of the buffer object.
|
||||
*/
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @reserved: Reserved, must be zero.
|
||||
*/
|
||||
__u32 reserved;
|
||||
|
||||
/**
|
||||
* @timeout_ns: Input: Amount of time to wait for NPU jobs.
|
||||
*/
|
||||
__s64 timeout_ns;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_rocket_fini_bo - ioctl argument for finishing CPU ownership of the BO.
|
||||
*
|
||||
* Synchronize caches for NPU access.
|
||||
*/
|
||||
struct drm_rocket_fini_bo {
|
||||
/**
|
||||
* @handle: Input: GEM handle of the buffer object.
|
||||
*/
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @reserved: Reserved, must be zero.
|
||||
*/
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_rocket_task - A task to be run on the NPU
|
||||
*
|
||||
* A task is the smallest unit of work that can be run on the NPU.
|
||||
*/
|
||||
struct drm_rocket_task {
|
||||
/**
|
||||
* @regcmd: Input: DMA address to NPU mapping of register command buffer
|
||||
*/
|
||||
__u32 regcmd;
|
||||
|
||||
/**
|
||||
* @regcmd_count: Input: Number of commands in the register command
|
||||
* buffer
|
||||
*/
|
||||
__u32 regcmd_count;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_rocket_job - A job to be run on the NPU
|
||||
*
|
||||
* The kernel will schedule the execution of this job taking into account its
|
||||
* dependencies with other jobs. All tasks in the same job will be executed
|
||||
* sequentially on the same core, to benefit from memory residency in SRAM.
|
||||
*/
|
||||
struct drm_rocket_job {
|
||||
/**
|
||||
* @tasks: Input: Pointer to an array of struct drm_rocket_task.
|
||||
*/
|
||||
__u64 tasks;
|
||||
|
||||
/**
|
||||
* @in_bo_handles: Input: Pointer to a u32 array of the BOs that
|
||||
* are read by the job.
|
||||
*/
|
||||
__u64 in_bo_handles;
|
||||
|
||||
/**
|
||||
* @out_bo_handles: Input: Pointer to a u32 array of the BOs that
|
||||
* are written to by the job.
|
||||
*/
|
||||
__u64 out_bo_handles;
|
||||
|
||||
/**
|
||||
* @task_count: Input: Number of tasks passed in.
|
||||
*/
|
||||
__u32 task_count;
|
||||
|
||||
/**
|
||||
* @task_struct_size: Input: Size in bytes of the structs in the
|
||||
* @tasks field.
|
||||
*/
|
||||
__u32 task_struct_size;
|
||||
|
||||
/**
|
||||
* @in_bo_handle_count: Input: Number of input BO handles passed in
|
||||
* (size is that times 4).
|
||||
*/
|
||||
__u32 in_bo_handle_count;
|
||||
|
||||
/**
|
||||
* @out_bo_handle_count: Input: Number of output BO handles passed in
|
||||
* (size is that times 4).
|
||||
*/
|
||||
__u32 out_bo_handle_count;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_rocket_submit - ioctl argument for submitting commands to the NPU.
|
||||
*
|
||||
* The kernel will schedule the execution of these jobs in dependency order.
|
||||
*/
|
||||
struct drm_rocket_submit {
|
||||
/**
|
||||
* @jobs: Input: Pointer to an array of struct drm_rocket_job.
|
||||
*/
|
||||
__u64 jobs;
|
||||
|
||||
/**
|
||||
* @job_count: Input: Number of jobs passed in.
|
||||
*/
|
||||
__u32 job_count;
|
||||
|
||||
/**
|
||||
* @job_struct_size: Input: Size in bytes of the structs in the
|
||||
* @jobs field.
|
||||
*/
|
||||
__u32 job_struct_size;
|
||||
|
||||
/**
|
||||
* @reserved: Reserved, must be zero.
|
||||
*/
|
||||
__u64 reserved;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __DRM_UAPI_ROCKET_ACCEL_H__ */
|
||||
Reference in New Issue
Block a user