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

This commit is contained in:
xinxin.li 2023-08-23 16:29:08 +08:00
parent dd0e4ba161
commit 6ffdb4e9c4
2 changed files with 23 additions and 12 deletions

View File

@ -144,6 +144,15 @@ int arm_csu_wait_all_done(void)
//tag 24 25 26 27 6(12->13)
//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
int get_free_reg_group(uint8_t tag)
{
@ -152,10 +161,12 @@ int get_free_reg_group(uint8_t tag)
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);
uint8_t fifoNum = tag % 4;
uint8_t regGroup = tag / 4;
if (0 == (dmaStatus & (0xF<<regGroup)))
//if (0 == (dmaStatus & (0xF<<regGroup)))
if (bitMap != (dmaStatus & bitMap))
{
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;
tag = (temp>>16)&0xFF;
uint8_t offset = regGroup << 6;
uint16_t offset = regGroup << 6;
// src reg
VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRL0 + offset) = addrSrc & 0xFFFFFFFF;
VIR_ADDR_VAL(virMemAddr, AP_CSU_DMAADDRH0 + offset) = addrSrc >> 32;

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