Merge branch 'dev_ck_v2.1_bug#1004#' into 'dev_ck_v2.1'

modify arm csu bug, UCP4008-SL-EVB, Bug#1004

See merge request ucp/driver/ucp4008_platform_arm!18
This commit is contained in:
Xianfeng Du 2023-08-29 07:41:38 +00:00
commit 262f302ca7
2 changed files with 23 additions and 12 deletions

View File

@ -136,13 +136,22 @@ int arm_csu_wait_all_done(void)
//CmdFIFO 0 1 2 3 //CmdFIFO 0 1 2 3
//tag 0 1 2 3 reg_group = 0(0->1) //tag 0 1 2 3 reg_group = 0(0->1)
//tag 4 5 6 7 1(2->3) //tag 4 5 6 7 1(2->3)
//tag 8 9 10 11 2(4->5) //tag 8 9 10 11 2(4->5)
//tag 12 13 14 15 3(6->7) //tag 12 13 14 15 3(6->7)
//tag 16 17 18 19 4(8->9) //tag 16 17 18 19 4(8->9)
//tag 20 21 22 23 5(10->11) //tag 20 21 22 23 5(10->11)
//tag 24 25 26 27 6(12->13) //tag 24 25 26 27 6(12->13)
//tag 28 29 30 31 7(14->15) //tag 28 29 30 31 7(14->15)
//tag 0 8 16 24 reg_group = 0(0->1) CmdFIFO =0
//tag 1 9 17 25 1(2->3) 1
//tag 2 10 18 26 2(4->5) 2
//tag 3 11 19 27 3(6->7) 3
//tag 4 12 20 28 4(8->9) 0
//tag 5 13 21 29 5(10->11) 1
//tag 6 14 22 30 6(12->13) 2
//tag 7 15 23 31 7(14->15) 3
// get unused register group according to tag number // get unused register group according to tag number
int get_free_reg_group(uint8_t tag) int get_free_reg_group(uint8_t tag)
@ -152,10 +161,12 @@ int get_free_reg_group(uint8_t tag)
return -1; return -1;
} }
uint8_t fifoNum = tag & 0x3; // tag % 4;
uint8_t regGroup = tag & 0x7; // tag / 4;
uint32_t bitMap = (0x01010101<<regGroup);
uint32_t dmaStatus = VIR_ADDR_VAL(virMemAddr, AP_CSU_DMASTATUS); uint32_t dmaStatus = VIR_ADDR_VAL(virMemAddr, AP_CSU_DMASTATUS);
uint8_t fifoNum = tag % 4; //if (0 == (dmaStatus & (0xF<<regGroup)))
uint8_t regGroup = tag / 4; if (bitMap != (dmaStatus & bitMap))
if (0 == (dmaStatus & (0xF<<regGroup)))
{ {
return -1; return -1;
} }
@ -204,7 +215,7 @@ int arm_csu_dma_1D_transfer(uint64_t addrSrc, uint64_t addrDst, uint32_t dataLen
fifoNum = (temp>>8) & 0xFF; fifoNum = (temp>>8) & 0xFF;
tag = (temp>>16)&0xFF; tag = (temp>>16)&0xFF;
uint8_t offset = regGroup << 6; uint16_t offset = regGroup << 6;
// src reg // src reg
VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRL0 + offset) = addrSrc & 0xFFFFFFFF; VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRL0 + offset) = addrSrc & 0xFFFFFFFF;
VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRH0 + offset) = addrSrc >> 32; VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRH0 + offset) = addrSrc >> 32;

@ -1 +1 @@
Subproject commit 8ea437815106d50f2230e0b3989f7f7174ac0fed Subproject commit 089a57ea572f30331b34103b1ed5429682856c75