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.
99 lines
3.0 KiB
C
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 */
|
|
|