summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 5d26973)
raw | patch | inline | side by side (parent: 5d26973)
author | Don Dominic <a0486429@ti.com> | |
Fri, 11 Dec 2020 11:06:37 +0000 (16:36 +0530) | ||
committer | Sivaraj R <sivaraj@ti.com> | |
Fri, 11 Dec 2020 14:28:50 +0000 (08:28 -0600) |
- As per latest SYSFW,
- For requesting BCDMA Block Copy channels, set extended_ch_type and pass the valid flag.
- For requesting BCDMA Split TR TX channels, set extended_ch_type=0 and pass the valid flag.
- Also remove the existing offset of 32 for blk cpy channel index, in alignment with old sysfw.
Signed-off-by: Don Dominic <a0486429@ti.com>
- For requesting BCDMA Block Copy channels, set extended_ch_type and pass the valid flag.
- For requesting BCDMA Split TR TX channels, set extended_ch_type=0 and pass the valid flag.
- Also remove the existing offset of 32 for blk cpy channel index, in alignment with old sysfw.
Signed-off-by: Don Dominic <a0486429@ti.com>
index e80ab3b966a75332548d17efe2dff87aa4ba42d9..a1d40671d6e4c629b1b060ca042a6a3809c0849e 100644 (file)
/** \brief Macro used to specify that the Mapped Channel Group is invalid. */
#define UDMA_MAPPED_GROUP_INVALID ((uint32_t) 0xFFFF0004U)
+/** \brief DMSC Extended Channel Type Flag for BCDMA Block Copy */
+#define UDMA_DMSC_EXTENDED_CH_TYPE_BCDMA_BLK_CPY ((uint8_t) 1U)
+
+/** \brief DMSC Extended Channel Type Flag for BCDMA split TR TX channels */
+#define UDMA_DMSC_EXTENDED_CH_TYPE_BCDMA_SPLIT_TR_TX ((uint8_t) 0U)
+
/**
* \anchor Udma_ChFlag
* \name UDMA Channel Flag
index 34fc0e01fa1729353b9ffb60f1f9533fc59a321f..f63f91a355a9bd1cdbd7c57f7c54f41d3589e8ba 100644 (file)
/* Init other variables */
if(UDMA_INST_ID_BCDMA_0 == instId)
{
- /* DMSC differentiates block copy channel from split tr tx, if the index have an offset of 32.
- * The offset of 32 is chosen because it’s the next power of 2 above the max split tr tx channel (19).
- */
- drvHandle->blkCopyChOffset = 32U;
drvHandle->txChOffset = pBcdmaRegs->bcChanCnt;
drvHandle->rxChOffset = drvHandle->txChOffset + pBcdmaRegs->splitTxChanCnt;
/* The srcIdx passed to Sciclient_rmIrqset API for configuring DMA Completion/Ring events,
}
else
{
- drvHandle->blkCopyChOffset = 0U; /* Not used for PktDMA Instance */
drvHandle->txChOffset = CSL_DMSS_PKTDMA_TX_FLOWS_UNMAPPED_START;
drvHandle->rxChOffset = CSL_DMSS_PKTDMA_RX_FLOWS_UNMAPPED_START;
drvHandle->blkCopyRingIrqOffset = 0U; /* Not used for PktDMA Instance */
diff --git a/packages/ti/drv/udma/soc/am65xx/udma_soc.c b/packages/ti/drv/udma/soc/am65xx/udma_soc.c
index 1ef654e0d19cbfb14c3d2d45e557fd620b584359..1d4e909b24ca66584ecaa57b689083600308b59c 100644 (file)
drvHandle->blkCopyTrIrqOffset = TISCI_UDMAP0_RX_OES_IRQ_SRC_IDX_START;
drvHandle->txTrIrqOffset = TISCI_UDMAP0_TX_OES_IRQ_SRC_IDX_START;
drvHandle->rxTrIrqOffset = TISCI_UDMAP0_RX_OES_IRQ_SRC_IDX_START;
- drvHandle->blkCopyChOffset = 0U;
drvHandle->txChOffset = 0U;
drvHandle->extChOffset = drvHandle->txChOffset + pUdmapRegs->txChanCnt;
drvHandle->rxChOffset =
index 74c9508d0c0947211dc7be4594c96f5a5fabb5bf..04de105d95aed1103aeea845f370e85d75f46cc0 100644 (file)
drvHandle->blkCopyTrIrqOffset = TISCI_UDMAP0_RX_OES_IRQ_SRC_IDX_START;
drvHandle->txTrIrqOffset = TISCI_UDMAP0_TX_OES_IRQ_SRC_IDX_START;
drvHandle->rxTrIrqOffset = TISCI_UDMAP0_RX_OES_IRQ_SRC_IDX_START;
- drvHandle->blkCopyChOffset = 0U;
drvHandle->txChOffset = 0U;
drvHandle->extChOffset = drvHandle->txChOffset + pUdmapRegs->txChanCnt;
drvHandle->rxChOffset =
index a5f1942d5307606dfb677904c07675dc38232f66..8e5dfbdcad74d51b7861fb6ffe99902b1875a52e 100755 (executable)
drvHandle->blkCopyTrIrqOffset = TISCI_UDMAP0_RX_OES_IRQ_SRC_IDX_START;
drvHandle->txTrIrqOffset = TISCI_UDMAP0_TX_OES_IRQ_SRC_IDX_START;
drvHandle->rxTrIrqOffset = TISCI_UDMAP0_RX_OES_IRQ_SRC_IDX_START;
- drvHandle->blkCopyChOffset = 0U;
drvHandle->txChOffset = 0U;
drvHandle->extChOffset = drvHandle->txChOffset + pUdmapRegs->txChanCnt;
drvHandle->rxChOffset =
index 835d06a7bad471616d7e8e7983924f1ac4533665..4c1eefa9d94c4125967467daf7d7993b781dd49a 100644 (file)
TISCI_MSG_VALUE_RM_UDMAP_CH_BURST_SIZE_VALID |
TISCI_MSG_VALUE_RM_UDMAP_CH_TX_CREDIT_COUNT_VALID;
rmUdmaTxReq.nav_id = drvHandle->devIdUdma;
+ rmUdmaTxReq.index = (uint16_t)chHandle->txChNum;
rmUdmaTxReq.tx_pause_on_err = txPrms->pauseOnError;
rmUdmaTxReq.tx_filt_einfo = txPrms->filterEinfo;
rmUdmaTxReq.tx_filt_pswords = txPrms->filterPsWords;
rmUdmaTxReq.tx_burst_size = txPrms->burstSize;
rmUdmaTxReq.tx_sched_priority = txPrms->dmaPriority;
rmUdmaTxReq.tx_credit_count = txPrms->txCredit;
- /* This workaround is to support Config of BCDMA Block Copy channel using same Sciclient API.
- *
- * In case of BCDMA, the channels are spread across three MMR regions tchan, rchan, and bchan.
- * So when blkCopyChOffset is added to index, the tx_ch_cfg API RM knows it’s a block copy channel
- * and programs within the bchan MMR region. Otherwise the tx_ch_cfg API RM knows it’s a
- * split tr tx channel and programs within the tchan MMR region.
- *
- * In case of UDMAP blkCopyChOffset must be 0.
- */
- if((chHandle->chType & UDMA_CH_FLAG_BLK_COPY) == UDMA_CH_FLAG_BLK_COPY)
- {
- rmUdmaTxReq.index = (uint16_t) (chHandle->txChNum + drvHandle->blkCopyChOffset);
- }
- else
+#if (UDMA_SOC_CFG_LCDMA_PRESENT == 1)
+ if(UDMA_INST_TYPE_LCDMA_BCDMA == drvHandle->instType)
{
- rmUdmaTxReq.index = (uint16_t)chHandle->txChNum;
+ if((chHandle->chType & UDMA_CH_FLAG_BLK_COPY) == UDMA_CH_FLAG_BLK_COPY)
+ {
+ rmUdmaTxReq.valid_params |= TISCI_MSG_VALUE_RM_UDMAP_EXTENDED_CH_TYPE_VALID;
+ rmUdmaTxReq.extended_ch_type = UDMA_DMSC_EXTENDED_CH_TYPE_BCDMA_BLK_CPY;
+ }
+ else if((chHandle->chType & UDMA_CH_FLAG_TX) == UDMA_CH_FLAG_TX)
+ {
+ rmUdmaTxReq.valid_params |= TISCI_MSG_VALUE_RM_UDMAP_EXTENDED_CH_TYPE_VALID;
+ rmUdmaTxReq.extended_ch_type = UDMA_DMSC_EXTENDED_CH_TYPE_BCDMA_SPLIT_TR_TX;
+ }
}
+#endif
if(NULL_PTR != chHandle->tdCqRing)
{
Udma_assert(drvHandle,
index 2268c0d8d6cd8d2bd25aaf606adc9fad47345ec8..76a695a78392a1defd372ebdd469bb347e5769de 100755 (executable)
/*
* Channel Offsets
*/
- uint32_t blkCopyChOffset;
- /**< Block Copy channel offset.
- * blkCopyChOffset is used to support Config of BCDMA Block Copy channel using same Sciclient API.
- *
- * In case of BCDMA, the channels are spread across three MMR regions tchan, rchan, and bchan.
- * So when blkCopyChOffset is added to index, the tx_ch_cfg API RM knows it’s a block copy channel
- * and programs within the bchan MMR region. Otherwise the tx_ch_cfg API RM knows it’s a
- * split tr tx channel and programs within the tchan MMR region.
- *
- * In case of UDMAP (type SOC's) blkCopyChOffset must be 0.*/
uint32_t txChOffset;
/**< TX channel offset. */
uint32_t extChOffset;