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
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)
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------