imx28 DMA is blocked

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx28 DMA is blocked

437 Views
liuxing
Contributor II

when I want to transfer 4 bytes data to HW_LCDIF_DATA register.

the command structure is set as follows:

pVBufAdjVirtAddr->pNext = (mem_dma_cmd_t *)(nVBufAdjPhysAddr+sizeof(mem_dma_cmd_t));
pVBufAdjVirtAddr->DmaCmd.U = (BF_APBH_CHn_CMD_XFER_COUNT(4) |
(BF_APBH_CHn_CMD_CMDWORDS(0) |
BF_APBH_CHn_CMD_WAIT4ENDCMD(1) |
BF_APBH_CHn_CMD_SEMAPHORE(0) |
BF_APBH_CHn_CMD_IRQONCMPLT(0) |
BF_APBH_CHn_CMD_CHAIN(1) |
BF_APBH_CHn_CMD_COMMAND(BV_APBH_CHn_CMD_COMMAND__DMA_READ)));
pVBufAdjVirtAddr->pDMABuffer = (void *)(Addr+i*4);
pVBufAdjVirtAddr++;
nVBufAdjPhysAddr += sizeof(mem_dma_cmd_t);

however,the transfer may be blocked.The HW_LCDIF_DATA is not changed.

I dump some registers(DDK_APBH_CHANNEL_LCDIF):

HW_APBH_CHn_DEBUG1_RD 0x01200008

HW_APBH_CHn_DEBUG2_RD 0x00040000

HW_APBH_CHn_BAR_RD 0x43B7F004

HW_APBH_CHn_CURCMDAR_RD 0x44768000

HW_APBH_CHn_NXTCMDAR_RD 0x44768010

HW_APBH_CHn_CMD_RD 0x00040006 

HW_APBH_CHn_SEMA_RD 0x00010000

Labels (1)
0 Kudos
1 Reply

374 Views
igorpadykov
NXP Employee
NXP Employee

Hi xing

may be useful to look at apbh and lcdif baremetal examples in i.MX28 OBDS

Lab and Test Software (1)
On-Board Diagnostic Suit for the i.MX28(REV 1)

i.MX28 Evaluation Kit | NXP 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos