summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 22ad947)
raw | patch | inline | side by side (parent: 22ad947)
PDK-2879: Added digital audio example for J7 EVM infotaiment board REL.PDK.J7.00.09.00.10 REL.PDK.J7.00.09.00.11 REL.PDK.J7.00.09.00.12 REL.PDK.J7.00.09.00.13 REL.PDK.J7.00.09.00.14 REL.PDK.J7.00.09.00.15 REL.PDK.J7.00.09.00.16 REL.PDK.J7.00.09.01.01 REL.PDK.J7.00.09.01.02 REL.PDK.J7.00.09.01.03 REL.PDK.J7.00.09.01.04 REL.PDK.J7.00.09.01.05
author | Pratap Reddy <x0257344@ti.com> | |
Tue, 9 Jul 2019 15:42:33 +0000 (21:12 +0530) | ||
committer | Pratap Reddy <x0257344@ti.com> | |
Tue, 9 Jul 2019 15:42:33 +0000 (21:12 +0530) |
- Observing noise in the audio output which needs some tuning for the clocks
example/MCASP_AudioDCDigitalLoopback_TestApp/makefile | [new file with mode: 0755] | patch | blob |
example/j721e/include/mcasp_cfg.h | patch | blob | history | |
example/j721e/src/audio_evmInit.c | patch | blob | history | |
example/j721e/src/mcasp_cfg.c | patch | blob | history | |
example/src/audioSample_io.c | patch | blob | history | |
mcasp_component.mk | patch | blob | history |
diff --git a/example/MCASP_AudioDCDigitalLoopback_TestApp/makefile b/example/MCASP_AudioDCDigitalLoopback_TestApp/makefile
--- /dev/null
@@ -0,0 +1,52 @@
+# Makefile for McASP device loopback unit test app
+include $(PDK_INSTALL_PATH)/ti/build/Rules.make
+export DISABLE_RECURSE_DEPS
+
+#Name of the directory created under packages/ti/binary/
+APP_NAME = MCASP_AudioDCDigitalLoopback_TestApp
+
+SRCDIR = ../src ../../
+INCDIR = ../src ../include ../../
+
+SRCS_COMMON = audioSample_io.c audioSample_main.c audio_evmInit.c mcasp_cfg.c mcasp_debug.c
+
+# List all the external components/interfaces, whose interface header files
+# need to be included for this component
+INCLUDE_EXTERNAL_INTERFACES = bios xdc pdk
+
+COMP_LIST_COMMON = csl mcasp osal_tirtos uart board
+
+CFLAGS_MCASP_UT = -DMCASP_MASTER -DAUDIO_DC_DIGITAL_TEST
+
+ifeq ($(SOC), $(filter $(SOC), j721e))
+ SRCDIR += ../j721e/src
+ INCDIR += ../j721e/include
+
+ COMP_LIST_COMMON += udma sciclient i2c
+
+ # Enable XDC build for application by providing XDC CFG File per core
+ XDC_CFG_FILE_$(CORE) = $(PDK_INSTALL_PATH)/ti/build/$(SOC)/sysbios_$(ISA).cfg
+ XDC_CFG_UPDATE_$(CORE) = ../j721e/mcasp_extra_config.xs
+endif
+
+PACKAGE_SRCS_COMMON = .
+CFLAGS_LOCAL_COMMON = $(PDK_CFLAGS) $(CFLAGS_MCASP_UT)
+
+# Core/SoC/platform specific source files and CFLAGS
+# Example:
+# SRCS_<core/SoC/platform-name> =
+# CFLAGS_LOCAL_<core/SoC/platform-name> =
+
+# Include common make files
+ifeq ($(MAKERULEDIR), )
+#Makerule path not defined, define this and assume relative path from ROOTDIR
+ MAKERULEDIR := $(ROOTDIR)/ti/build/makerules
+ export MAKERULEDIR
+endif
+include $(MAKERULEDIR)/common.mk
+
+# OBJs and libraries are built by using rule defined in rules_<target>.mk
+# and need not be explicitly specified here
+
+# Nothing beyond this point
+
index c86825e5b471275af8ab4f5c6dd7a05e5c899db6..7905b33a25fa2f82982eecbc3eb5c615faf0077d 100644 (file)
#define MCASP_NUM 0
#define SOC_I2C_1_REGS CSL_DSP_I2C1_REGS
#define I2C_MCASP_INSTANCE 3
+#elif defined(AUDIO_DC_DIGITAL_TEST)
+#define MCASP_NUM 6
+#define MCASP_DIT_NUM 2
+#define SOC_I2C_1_REGS CSL_DSP_I2C1_REGS
+#define I2C_MCASP_INSTANCE 3
#else
#define MCASP_NUM 10
#define SOC_I2C_1_REGS CSL_DSP_I2C1_REGS
#if defined(AUDIO_DC_ANALOG_TEST)
#define RX_NUM_SERIALIZER (6u)
#define TX_NUM_SERIALIZER (6u)
+#elif defined(AUDIO_DC_DIGITAL_TEST)
+#define RX_NUM_SERIALIZER (1u)
+#define TX_NUM_SERIALIZER (1u)
#else
#define RX_NUM_SERIALIZER (3u)
#define TX_NUM_SERIALIZER (3u)
index 29e7039ef30a955d8946f67a7ae934aaf7e850c3..bbb243561074c205e9fe37d06b88c311feea4e4e 100644 (file)
TISCI_DEV_BOARD0_OBSCLK0_IN,
TISCI_DEV_BOARD0_OBSCLK0_IN_PARENT_HSDIV3_16FFT_MAIN_4_HSDIVOUT0_CLK,
SCICLIENT_SERVICE_WAIT_FOREVER);
+#elif defined(AUDIO_DC_DIGITAL_TEST)
+ /* McASP2 AUXCLK selects MAIN_PLL4_HSDIV0_CLKOUT */
+ Sciclient_pmSetModuleClkParent(TISCI_DEV_MCASP2,
+ TISCI_DEV_MCASP2_AUX_CLK,
+ TISCI_DEV_MCASP2_AUX_CLK_PARENT_HSDIV3_16FFT_MAIN_4_HSDIVOUT0_CLK,
+ SCICLIENT_SERVICE_WAIT_FOREVER);
+ /* McASP2 AHCLKX selects AUDIO_EXT_REFCLK1 */
+ Sciclient_pmSetModuleClkParent(TISCI_DEV_MCASP2,
+ TISCI_DEV_MCASP2_MCASP_AHCLKX_PIN_0,
+ TISCI_DEV_MCASP2_MCASP_AHCLKX_PIN_0_PARENT_MCASP_AHCLKO_MUX_OUT1 ,
+ SCICLIENT_SERVICE_WAIT_FOREVER);
+
+ /* McASP6 AUXCLK selects MAIN_PLL4_HSDIV0_CLKOUT */
+ Sciclient_pmSetModuleClkParent(TISCI_DEV_MCASP6,
+ TISCI_DEV_MCASP6_AUX_CLK,
+ TISCI_DEV_MCASP6_AUX_CLK_PARENT_HSDIV3_16FFT_MAIN_4_HSDIVOUT0_CLK,
+ SCICLIENT_SERVICE_WAIT_FOREVER);
+
+ /* Select McASP6_AHCLKR to use AUDIO_EXT_REFCLK1 */
+ Sciclient_pmSetModuleClkParent(TISCI_DEV_BOARD0,
+ TISCI_DEV_MCASP6_MCASP_AHCLKR_PIN_0,
+ TISCI_DEV_MCASP6_MCASP_AHCLKR_PIN_0_PARENT_MCASP_AHCLKO_MUX_OUT1,
+ SCICLIENT_SERVICE_WAIT_FOREVER);
#else
/* McASP10 AUXCLK selects MAIN_PLL4_HSDIV0_CLKOUT */
Sciclient_pmSetModuleClkParent(TISCI_DEV_MCASP10,
ioExpCfg.pinNum = PIN_NUM_0;
ioExpCfg.signalLevel = GPIO_SIGNAL_LEVEL_HIGH;
+ Board_control(BOARD_CTRL_CMD_SET_IO_EXP_PIN_OUT, (void *)&ioExpCfg);
+#elif defined(AUDIO_DC_DIGITAL_TEST)
+ /* Bring the DIR out of reset */
+ ioExpCfg.slaveAddr = BOARD_I2C_AUDIO_IOEXP_DEVICE_ADDR;
+ ioExpCfg.i2cInst = BOARD_I2C_AUDIO_IOEXP_DEVICE_INSTANCE;
+ ioExpCfg.socDomain = BOARD_SOC_DOMAIN_MAIN;
+ ioExpCfg.enableIntr = false;
+ ioExpCfg.ioExpType = TWO_PORT_IOEXP;
+ ioExpCfg.portNum = PORTNUM_1;
+ ioExpCfg.pinNum = PIN_NUM_0;
+ ioExpCfg.signalLevel = GPIO_SIGNAL_LEVEL_HIGH;
+
+ Board_control(BOARD_CTRL_CMD_SET_IO_EXP_PIN_OUT, (void *)&ioExpCfg);
+
+ ioExpCfg.pinNum = PIN_NUM_7;
+ ioExpCfg.signalLevel = GPIO_SIGNAL_LEVEL_LOW;
+
Board_control(BOARD_CTRL_CMD_SET_IO_EXP_PIN_OUT, (void *)&ioExpCfg);
#else
/* Bring the codec out of reset */
index 43877641090551e5686d6d8594566f6b65cceace..ab82bdce90b95b2f1c5bf226836aa7b3b4f212b5 100644 (file)
/* McASP Init config */
/* ========================================================================== */
+#if defined(AUDIO_DC_DIGITAL_TEST)
+Mcasp_HwSetupData mcasp0RcvSetup = {
+ /* .rmask = */
+ 0xFFFFFFFF, /* All the data bits are to be used */
+ /* .rfmt = */ 0x000180F2, /* 0/1 bit delay from framsync
+ * MSB first
+ * No extra bit padding
+ * Padding bit (ignore)
+ * slot Size is 32
+ * Reads from DMA port
+ * NO rotation
+ */
+
+ /* .afsrctl = */ 0x00000111, /* I2S mode,
+ * Frame sync is one word
+ * Internally generated frame sync
+ * Falling edge is start of frame
+ */
+
+
+
+
+ /* .rtdm = */ 0x00000003, /* 2 slots are active (I2S) */
+ /* .rintctl = */ 0x00000003, /* sync error and overrun error */
+ /* .rstat = */ 0x000001FF, /* reset any existing status bits */
+ /* .revtctl = */ 0x00000000, /* DMA request is enabled or disabled */
+ {
+ /* .aclkrctl = */ 0x00000080, /* Div (8), Internal Source, rising edge */
+ /* .ahclkrctl = */ 0x00000400, /* Div (20), Internal AUX_CLK Source */
+ /* .rclkchk = */ 0x00000000
+ }
+};
+
+Mcasp_HwSetupData mcasp0XmtSetup = {
+ /* .xmask = */
+ 0xFFFFFFFF, /* All the data bits are to be used */
+ /* .xfmt = */ 0x000100F0, /* 0/1 bit delay from framsync
+ * MSB first
+ * No extra bit padding
+ * Padding bit (ignore)
+ * slot Size is 32
+ * Reads from DMA port
+ * 0-bit rotation
+ */
+
+ /* .afsxctl = */ 0x0000C002, /* I2S mode,
+ * Frame sync is one word
+ * internally generated frame sync
+ * Falling edge is start of frame
+ */
+
+ /* .xtdm = */ 0xFFFFFFFF, /* 2 slots are active (I2S) */
+ /* .xintctl = */ 0x00000003, /* sync error,overrun error,clK error */
+ /* .xstat = */ 0x000001FF, /* reset any existing status bits */
+ /* .xevtctl = */ 0x00000000, /* DMA request is enabled or disabled */
+ {
+ /* .aclkxctl = */ 0x000000E3, /* Div (8), Internal Source, SYNC, Falling edge */
+ /* .ahclkxctl = */ 0x00004000, /* Div (20), Internal AUX_CLK Source */
+ /* .xclkchk = */ 0x00000000
+ },
+};
+#else
Mcasp_HwSetupData mcasp0RcvSetup = {
/* .rmask = */
0xFFFFFFFF, /* All the data bits are to be used */
/* .xclkchk = */ 0x00000000
},
};
+#endif
/* McAsp channel parameters */
Mcasp_ChanParams mcasp_chanparam[2] = {
{Mcasp_SerializerNum_1, Mcasp_SerializerNum_3, Mcasp_SerializerNum_5}, /* serialiser index */
#elif defined(AUDIO_DC_ANALOG_TEST)
{Mcasp_SerializerNum_0, Mcasp_SerializerNum_1, Mcasp_SerializerNum_2, Mcasp_SerializerNum_7, Mcasp_SerializerNum_8, Mcasp_SerializerNum_9}, /* serialiser index */
+#elif defined(AUDIO_DC_DIGITAL_TEST)
+ {Mcasp_SerializerNum_0}, /* serialiser index */
#else
{Mcasp_SerializerNum_0, Mcasp_SerializerNum_1, Mcasp_SerializerNum_2}, /* serialiser index */
#endif
0,
NULL,
(Mcasp_GblCallback)&GblErrRcv,
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ 1, /* number of TDM channels */
+ Mcasp_BufferFormat_1SER_MULTISLOT_INTERLEAVED,
+#else
2, /* number of TDM channels */
Mcasp_BufferFormat_MULTISER_MULTISLOT_SEMI_INTERLEAVED_1,
+#endif
TRUE,
RX_FIFO_EVENT_DMA_RATIO,
TRUE,
{Mcasp_SerializerNum_0, Mcasp_SerializerNum_2, Mcasp_SerializerNum_4}, /* serialiser index */
#elif defined(AUDIO_DC_ANALOG_TEST)
{Mcasp_SerializerNum_3, Mcasp_SerializerNum_4, Mcasp_SerializerNum_5, Mcasp_SerializerNum_10, Mcasp_SerializerNum_11, Mcasp_SerializerNum_12},
+#elif defined(AUDIO_DC_DIGITAL_TEST)
+ {Mcasp_SerializerNum_0}, /* serialiser index */
#else
{Mcasp_SerializerNum_3, Mcasp_SerializerNum_4, Mcasp_SerializerNum_5}, /* serialiser index */
#endif
0,
NULL,
(Mcasp_GblCallback)&GblErrXmt,
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ 1, /* number of TDM channels */
+ Mcasp_BufferFormat_1SER_MULTISLOT_INTERLEAVED,
+#else
2, /* number of TDM channels */
Mcasp_BufferFormat_MULTISER_MULTISLOT_SEMI_INTERLEAVED_1,
+#endif
TRUE,
TX_FIFO_EVENT_DMA_RATIO,
TRUE,
index 1274cdc154bfe48fa373dccc231527859b19681b..3f005218f50e1af267a6910d2b3a3bbdd9d51338 100644 (file)
/* McASP Device handles */
Ptr hMcaspDev;
+#if defined(AUDIO_DC_DIGITAL_TEST)
+Ptr hMcaspDevDIT;
+
+/* Data payload structures for DIT mode */
+Mcasp_PktAddrPayload ditPayload;
+Mcasp_PktAddrPayload *pDitPayload;
+Mcasp_UserDataRam ditUserData;
+Mcasp_ChStatusRam ditChStatus;
+Mcasp_Params mcaspDITParams;
+#endif /* #if defined(AUDIO_DC_DIGITAL_TEST) */
+
/* McASP Device parameters */
Mcasp_Params mcaspParams;
/* Get the buffer which is supposed to be the next. It should be in the transit queue */
bufInfo_transit = McASP_App_Buffers_PopTransitBuf(APP_BUFFER_RX);
if(ioBuf->addr != (uintptr_t *)getGlobalAddr((uintptr_t)bufInfo_transit->buf)) {
+#if !defined(AUDIO_DC_DIGITAL_TEST)
MCASP_log("Rx Buf Address mismatch on packet [%d] Expected %p, got %p with size %d\n",RxFlag,(uintptr_t *)getGlobalAddr((uintptr_t)bufInfo_transit->buf),ioBuf->addr,ioBuf->size);
+#endif
#ifdef MCASP_ENABLE_DEBUG_LOG
mcaspDebugLog(DEBUG_APP_CALLBACK_READ_MISMATCH, RxFlag,getGlobalAddr((uintptr_t)bufInfo_transit->buf),(uintptr_t)ioBuf->addr,ioBuf->size);
#endif
/* Get the buffer which is supposed to be in the top of the list */
bufInfo_transit = McASP_App_Buffers_PopTransitBuf(APP_BUFFER_TX);
if(ioBuf->addr != (uintptr_t *)getGlobalAddr((uintptr_t)bufInfo_transit->buf)) {
+#if !defined(AUDIO_DC_DIGITAL_TEST)
MCASP_log("Tx Buf Address mismatch on packet[%d] Expected %p, got %p with size %d\n",TxFlag,(uintptr_t *)getGlobalAddr((uintptr_t)bufInfo_transit->buf),ioBuf->addr,ioBuf->size);
+#endif
#ifdef MCASP_ENABLE_DEBUG_LOG
mcaspDebugLog(DEBUG_APP_CALLBACK_WRITE_MISMATCH, TxFlag,getGlobalAddr((uintptr_t)bufInfo_transit->buf),(uintptr_t)ioBuf->addr,ioBuf->size);
#endif
#endif
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ /* Create Mcasp channel for Tx */
+ status = mcaspCreateChan(&hMcaspTxChan, hMcaspDevDIT,
+ MCASP_OUTPUT,
+ &mcasp_chanparam[1],
+ mcaspAppCallback, NULL);
+#else
/* Create Mcasp channel for Tx */
status = mcaspCreateChan(&hMcaspTxChan, hMcaspDev,
MCASP_OUTPUT,
&mcasp_chanparam[1],
mcaspAppCallback, NULL);
+#endif
if((status != MCASP_COMPLETED) || (hMcaspTxChan == NULL))
{
/* Pop a free application buffer */
appBuf_ptr=McASP_App_Buffers_PopFree(APP_BUFFER_TX);
memset((uint8_t *)appBuf_ptr->buf, (0xA0+count), tx_frame_size);
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ pDitPayload->addr = (uint32_t *)getGlobalAddr((uintptr_t)appBuf_ptr->buf);
+#endif
/* TX frame processing */
txFrame[count].cmd = MCASP_WRITE;
- txFrame[count].addr = (void*)(getGlobalAddr((uintptr_t)appBuf_ptr->buf));
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ txFrame[count].addr = (void*)(pDitPayload);
+#else
+ txFrame[count].addr = (void*)(getGlobalAddr((uintptr_t)appBuf_ptr->buf));
+#endif
txFrame[count].size = tx_frame_size;
txFrame[count].arg = (uintptr_t) hMcaspTxChan;
#ifdef MCASP_ENABLE_DEBUG_LOG
mcaspDebugLog_init();
#endif
-
-
+
+
Mcasp_socGetInitCfg(MCASP_NUM, &hwInfo);
#if defined(MCASP_EDMA_ENABLED)
hwInfo.dmaHandle = McaspApp_edmaInit(&hwInfo);
Mcasp_socSetInitCfg(MCASP_NUM, &hwInfo);
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ Mcasp_socGetInitCfg(MCASP_DIT_NUM, &hwInfo);
+#if defined(MCASP_EDMA_ENABLED)
+ hwInfo.dmaHandle = McaspApp_edmaInit(&hwInfo);
+#elif defined(MCASP_UDMA_ENABLED)
+ /* Assign UDMA specific parameters */
+ hwInfo.dmaHandle=McaspApp_udmaInit(&hwInfo);
+
+ MCASP_log("DescType=%s \n",(hwInfo.dmaInfo.descType==CSL_UDMAP_CPPI5_PD_DESCINFO_DTYPE_VAL_TR)?"TR":"PKT");
+ MCASP_log("UDMA FifoDepth=%d \n",hwInfo.dmaInfo.ringCnt);
+#endif
+ Mcasp_socSetInitCfg(MCASP_DIT_NUM, &hwInfo);
+#endif
+
/* 2. SEM Initializations */
Semaphore_Params_init(¶ms);
/* 3. McASP Initializations */
/* Initialize McASP Tx and Rx parameters */
- mcaspParams = Mcasp_PARAMS;
-
+ mcaspParams = Mcasp_PARAMS;
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ mcaspDITParams = Mcasp_PARAMS;
+#endif
#ifdef DEVICE_LOOPBACK
/* Enable MCASP DLB mode */
#endif
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ mcaspDITParams.isDataBufferPayloadStructure = 1;
+
+ mcaspParams.mcaspHwSetup.tx.clk.clkSetupClk = 0x63;
+ mcaspParams.mcaspHwSetup.rx.clk.clkSetupClk = 0x23;
+ mcaspDITParams.mcaspHwSetup.tx.clk.clkSetupClk = 0x63;
+ mcaspDITParams.mcaspHwSetup.rx.clk.clkSetupClk = 0x23;
+
+ /* Initialize user data and channel status bits */
+ for(i32Count = 0; i32Count < 6; i32Count++)
+ {
+ ditUserData.userDataLeft[i32Count] = 0;
+ ditUserData.userDataRight[i32Count] = 0;
+
+ ditChStatus.chStatusLeft[i32Count] = 0;
+ ditChStatus.chStatusRight[i32Count] = 0;
+ }
+
+ ditPayload.chStat = &ditChStatus;
+ ditPayload.userData = &ditUserData;
+ ditPayload.writeDitParams = TRUE;
+
+ pDitPayload = &ditPayload;
+#endif
+
status = mcaspBindDev(&hMcaspDev, MCASP_NUM, &mcaspParams);
if((status != MCASP_COMPLETED) || (hMcaspDev == NULL))
{
abort();
}
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ status = mcaspBindDev(&hMcaspDevDIT, MCASP_DIT_NUM, &mcaspDITParams);
+ if((status != MCASP_COMPLETED) || (hMcaspDevDIT == NULL))
+ {
+ MCASP_log("mcaspBindDev for McASP DIT channel Failed\n");
+ abort();
+ }
+#endif
+
#if defined(AIC_CODEC)
/* Bind AIC Codec */
aic31MdBindDev(&hAicDev, 0, (Ptr)&Aic31_PARAMS);
#endif
Cache_wbInv((void *)((uint8_t *)appBuf_ptr_tx->buf),tx_frame_size,Cache_Type_ALL, TRUE);
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ pDitPayload->addr = (uint32_t *)getGlobalAddr((uintptr_t)appBuf_ptr_tx->buf);
+#endif
+
/* Issue full buffer to the output stream */
/* TX frame processing */
txFrame[gtxFrameIndexCount].cmd = MCASP_WRITE;
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ txFrame[gtxFrameIndexCount].addr = (void*)(pDitPayload);
+#else
txFrame[gtxFrameIndexCount].addr = (void*)getGlobalAddr((uintptr_t)appBuf_ptr_tx->buf);
+#endif
txFrame[gtxFrameIndexCount].size = tx_frame_size;
txFrame[gtxFrameIndexCount].arg = (uintptr_t) hMcaspTxChan;
txFrame[gtxFrameIndexCount].status = 0;
status = mcaspDeleteChan(hMcaspTxChan);
MCASP_log("\nUnBinding Mcasp");
status = mcaspUnBindDev(hMcaspDev);
+#if defined(AUDIO_DC_DIGITAL_TEST)
+ status = mcaspUnBindDev(hMcaspDevDIT);
+#endif
{
IHeap_Handle iheap;
diff --git a/mcasp_component.mk b/mcasp_component.mk
index 6d297cbde7b53698447a5b87abc4624deb0bbe7e..1f722d0147fe4b16d3eb3646479ef89863380c53 100644 (file)
--- a/mcasp_component.mk
+++ b/mcasp_component.mk
# All the tests mentioned in list are built when test target is called
# List below all examples for allowed values
############################
-mcasp_EXAMPLE_LIST = MCASP_AudioLoopback_TestApp MCASP_DeviceLoopback_SMP_TestApp MCASP_DeviceLoopback_TestApp MCASP_DeviceLoopback_Regression_TestApp MCASP_AudioDCAnalogLoopback_TestApp
+mcasp_EXAMPLE_LIST = MCASP_AudioLoopback_TestApp MCASP_DeviceLoopback_SMP_TestApp MCASP_DeviceLoopback_TestApp MCASP_DeviceLoopback_Regression_TestApp MCASP_AudioDCAnalogLoopback_TestApp MCASP_AudioDCDigitalLoopback_TestApp
#
# MCASP Modules
MCASP_AudioDCAnalogLoopback_TestApp_$(SOC)_CORELIST = $(drvmcasp_$(SOC)_CORELIST)
export MCASP_AudioDCAnalogLoopback_TestApp_$(SOC)_CORELIST
+# McASP Digital DC Analog Loopback example app
+MCASP_AudioDCDigitalLoopback_TestApp_COMP_LIST = MCASP_AudioDCDigitalLoopback_TestApp
+MCASP_AudioDCDigitalLoopback_TestApp_RELPATH = ti/drv/mcasp/example/MCASP_AudioDCDigitalLoopback_TestApp
+MCASP_AudioDCDigitalLoopback_TestApp_PATH = $(PDK_MCASP_COMP_PATH)/example/MCASP_AudioDCDigitalLoopback_TestApp
+MCASP_AudioDCDigitalLoopback_TestApp_BOARD_DEPENDENCY = yes
+MCASP_AudioDCDigitalLoopback_TestApp_CORE_DEPENDENCY = no
+MCASP_AudioDCDigitalLoopback_TestApp_XDC_CONFIGURO = yes
+export MCASP_AudioDCDigitalLoopback_TestApp_COMP_LIST
+export MCASP_AudioDCDigitalLoopback_TestApp_BOARD_DEPENDENCY
+export MCASP_AudioDCDigitalLoopback_TestApp_CORE_DEPENDENCY
+export MCASP_AudioDCDigitalLoopback_TestApp_XDC_CONFIGURO
+MCASP_AudioDCDigitalLoopback_TestApp_PKG_LIST = MCASP_AudioDCDigitalLoopback_TestApp
+MCASP_AudioDCDigitalLoopback_TestApp_INCLUDE = $(MCASP_AudioDCDigitalLoopback_TestApp_PATH)
+MCASP_AudioDCDigitalLoopback_TestApp_BOARDLIST = j721e_evm
+export MCASP_AudioDCDigitalLoopback_TestApp_BOARDLIST
+MCASP_AudioDCDigitalLoopback_TestApp_$(SOC)_CORELIST = $(drvmcasp_$(SOC)_CORELIST)
+export MCASP_AudioDCDigitalLoopback_TestApp_$(SOC)_CORELIST
+
export drvmcasp_LIB_LIST
export mcasp_LIB_LIST
export mcasp_EXAMPLE_LIST