Files
SDK_SG200x_V2/cvikernel/include/bmkernel/reg_tdma.h
carbon 88a2fed916 add cvikernel
commit 9f1f57a19c3c281a931dfc71b318494487193d56
Author: sophgo-forum-service <forum_service@sophgo.com>
Date:   Mon May 13 13:58:23 2024 +0800

    [feat] cvikernel opensource for cv18xx soc.

    - 79b6a7, set lookup_interp_table layer_id.
2024-05-31 11:46:37 +08:00

99 lines
3.0 KiB
C

#ifndef REG_GDMA_H
#define REG_GDMA_H
#define TDMA_DESC_REG_BYTES (0x40)
#define TDMA_ENGINE_DESCRIPTOR_NUM (TDMA_DESC_REG_BYTES >> 2)
#define TDMA_NUM_BASE_REGS (0x8)
//backward compatible?
#define GDMA_TYPE_f32 0
#define GDMA_TYPE_f16 1
#define GDMA_TYPE_i32 2
#define GDMA_TYPE_i16 3
#define GDMA_TYPE_i8 4
#define GDMA_TYPE_i4 5
#define GDMA_TYPE_i2 6
#define GDMA_TYPE_i1 7
#define LAST_GDMA_TYPE_i1 8
//tdma descriptor define
#define TDMA_DESCRIPTOR_ALIGNED_BIT 6
#define TDMA_CMD_ACCP0 0
#define TDMA_CMD_ACCP1 4
#define TDMA_CMD_ACCP2 8
#define TDMA_CMD_ACCP3 12
#define TDMA_CMD_ACCP4 16
#define TDMA_CMD_ACCP5 20
#define TDMA_CMD_ACCP6 24
#define TDMA_CMD_ACCP7 28
#define TDMA_CMD_ACCP8 32
#define TDMA_CMD_ACCP9 36
#define TDMA_CMD_ACCP10 40
#define TDMA_CMD_ACCP11 44
#define TDMA_CMD_ACCP12 48
#define TDMA_CMD_ACCP13 52
#define TDMA_CMD_ACCP14 56
#define TDMA_ACCPI0_CMD_VALID_BIT 0
#define TDMA_ACCPI0_EOD_BIT 2
#define TDMA_ACCPI0_INTERRUPT_BIT 3
#define TDMA_ACCPI0_BARRIER_ENABLE_BIT 4
//tdma control define
#define TDMA_CTRL (TDMA_ENGINE_BASE_ADDR + 0x0)
#define TDMA_DES_BASE (TDMA_ENGINE_BASE_ADDR + 0x4)
#define TDMA_INT_MASK (TDMA_ENGINE_BASE_ADDR + 0x8)
#define TDMA_SYNC_STATUS (TDMA_ENGINE_BASE_ADDR + 0xC)
#define TDMA_ARRAYBASE0_L (TDMA_ENGINE_BASE_ADDR + 0x70)
#define TDMA_ARRAYBASE1_L (TDMA_ENGINE_BASE_ADDR + 0x74)
#define TDMA_ARRAYBASE2_L (TDMA_ENGINE_BASE_ADDR + 0x78)
#define TDMA_ARRAYBASE3_L (TDMA_ENGINE_BASE_ADDR + 0x7C)
#define TDMA_ARRAYBASE4_L (TDMA_ENGINE_BASE_ADDR + 0x80)
#define TDMA_ARRAYBASE5_L (TDMA_ENGINE_BASE_ADDR + 0x84)
#define TDMA_ARRAYBASE6_L (TDMA_ENGINE_BASE_ADDR + 0x88)
#define TDMA_ARRAYBASE7_L (TDMA_ENGINE_BASE_ADDR + 0x8C)
#define TDMA_ARRAYBASE0_H (TDMA_ENGINE_BASE_ADDR + 0x90)
#define TDMA_ARRAYBASE1_H (TDMA_ENGINE_BASE_ADDR + 0x94)
#define TDMA_DEBUG_MODE (TDMA_ENGINE_BASE_ADDR + 0xA0)
#define TDMA_CTRL_ENABLE_BIT 0
#define TDMA_CTRL_MODESEL_BIT 1
#define TDMA_CTRL_RESET_SYNCID_BIT 2
#define TDMA_CTRL_FORCE_1ARRAY 5
#define TDMA_CTRL_FORCE_2ARRAY 6
#define TDMA_CTRL_BURSTLEN_BIT 8
#define TDMA_CTRL_64BYTE_ALIGN_EN 10
#define TDMA_CTRL_DESNUM_BIT 16
//This function only supports the following condition
//localmem2tensor or tensor2localmem
//The source and dst shares the the same format
//Data is 32 bit
//no stride
//We use it in the forward_cpu backward_cpu
static inline int get_index_data_format(int size)
{
if (size == 1) {
return GDMA_TYPE_i1;
} else if (size <= 16) {
return GDMA_TYPE_i4;
} else if (size <= 256){
return GDMA_TYPE_i8;
} else {
return GDMA_TYPE_i16;
}
}
#define LRN_LEFT_SHIFT 0
#define LRN_RIGHT_SHIFT 1
#endif /* REG_GDMA_H */