SK-AM62P-LP: MCASP audio playback (looped beep) conflicts with DSS display share on AM62Px - screen freeze / playback stops

Part Number: SK-AM62P-LP

Hi Team,

I have integrated DSS (display share) and MCASP (audio) into a single project on AM62Px.

Use case: Play a warning sound as a continuous loop until explicitly stopped. Due to audio buffer size constraints, only a single beep sample is stored in memory, and it is resubmitted repeatedly to create the loop.

Approaches tried:

Method 1: mcasp.c  : Resubmit the same audio buffer immediately from within the mcasp_txcb callback.

Method 2: mcasp_2.c  : Use a dedicated task that continuously submits the audio buffer instead of resubmitting from the callback. 

syscfg used: syscfg.txt 

Issues observed:

  1. Screen freeze: If MCASP loop playback is started after DSS display share is already running, the display freezes once audio playback begins.
  2. Playback stops: If MCASP loop playback is started before DSS init, the audio loop stops as soon as DispApp_startScreen returns success.

This suggests some resource contention or priority/interrupt conflict between the DSS display-share path and the MCASP driver

I need help with:

  • Understanding the root cause of this interaction between DSS and MCASP.
  • Guidance on how to run both simultaneously – continuous MCASP loop playback and DSS display share – without either one disrupting the other.


Thanks in advance.

  • Hi Shanooj,

    Thanks for your query. Looks like an interesting situation. I will check on this and get back to you. 

    Regards,
    Ritapravo

  • Hi Shanooj,
    Are the DSS_init and McASP_loopback runnning on the same thread or different? If they are on the same thread, can you please try using 2 different threads for both?

  • Hi  

    Are the DSS_init and McASP_loopback runnning on the same thread or different? If they are on the same thread, can you please try using 2 different threads for both?

    No, the loopback function is running on another task.
    Code snippet: 

    void mcasp_play_audio_start_loop(ClusterAudioType type)
    {
    DebugP_log("[MCASP] mcasp_play_audio_start_loop\r\n");
    
    TaskP_Params taskParams;
    
    if (!gMcaspAudioInitDone)
    {
    DebugP_logError("[MCASP] mcasp_play_audio_start_loop called before mcasp_audio_init — ignoring\r\n");
    return;
    }
    
    if (type >= CLUSTER_AUDIO_COUNT)
    {
    DebugP_logError("[MCASP] mcasp_play_audio_start_loop: invalid type %d\r\n", type);
    return;
    }
    
    if (gMcaspLoopRunning)
    {
    DebugP_logError("[MCASP] loop already running — call mcasp_play_audio_stop_loop() first\r\n");
    return;
    }
    
    gMcaspLoopType = type;
    gMcaspLoopRunning = true;
    
    TaskP_Params_init(&taskParams);
    taskParams.name = "mcasp_loop_task";
    taskParams.stackSize = MCASP_LOOP_TASK_STACK_SIZE;
    taskParams.stack = gMcaspLoopTaskStack;
    taskParams.priority = MCASP_LOOP_TASK_PRI;
    taskParams.taskMain = mcasp_loop_task_main;
    
    DebugP_assert(TaskP_construct(&gMcaspLoopTask, &taskParams) == SystemP_SUCCESS);
    
    DebugP_log("[MCASP] Loop started, type=%d\r\n", type);
    }

  • Hi Shanooj,
    I am suspecting conflicting UDMA channel usage.
    Can you please check if you are trying to use the same UDMA channel on OSPI (for DSS frame fetch) as the McASP driver is using?

    Also, do you see any error logs showing a conflict as such?

  • Hi  

    /**
     * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
     * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
     * @cliArgs --device "AM62Px" --part "Default" --package "AMH" --context "wkup-r5fss0-0" --product "MCU-PLUS-SDK-AM62P@11.02.00"
     * @v2CliArgs --device "AM62P" --package "FCBGA (AMH)" --variant "AM62P54-M" --context "wkup-r5fss0-0" --product "MCU-PLUS-SDK-AM62P@11.02.00"
     * @versions {"tool":"1.24.2+4234"}
     */
    
    /**
     * Import the modules used in this configuration.
     */
    const flash       = scripting.addModule("/board/flash/flash", {}, false);
    const flash1      = flash.addInstance();
    const bootloader  = scripting.addModule("/drivers/bootloader/bootloader", {}, false);
    const bootloader1 = bootloader.addInstance();
    const bootloader2 = bootloader.addInstance();
    const bootloader3 = bootloader.addInstance();
    const dss         = scripting.addModule("/drivers/dss/dss", {}, false);
    const dss1        = dss.addInstance();
    const gtc         = scripting.addModule("/drivers/gtc/gtc");
    const ipc         = scripting.addModule("/drivers/ipc/ipc");
    const mcan        = scripting.addModule("/drivers/mcan/mcan", {}, false);
    const mcan1       = mcan.addInstance();
    const mcasp       = scripting.addModule("/drivers/mcasp/mcasp", {}, false);
    const mcasp1      = mcasp.addInstance();
    const uart        = scripting.addModule("/drivers/uart/uart", {}, false);
    const uart1       = uart.addInstance();
    const clock       = scripting.addModule("/kernel/dpl/clock");
    const debug_log   = scripting.addModule("/kernel/dpl/debug_log");
    const mpu_armv7   = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
    const mpu_armv71  = mpu_armv7.addInstance();
    const mpu_armv72  = mpu_armv7.addInstance();
    const mpu_armv73  = mpu_armv7.addInstance();
    const mpu_armv74  = mpu_armv7.addInstance();
    const mpu_armv75  = mpu_armv7.addInstance();
    const mpu_armv76  = mpu_armv7.addInstance();
    const mpu_armv77  = mpu_armv7.addInstance();
    const mpu_armv78  = mpu_armv7.addInstance();
    const mpu_armv79  = mpu_armv7.addInstance();
    const mpu_armv710 = mpu_armv7.addInstance();
    const mpu_armv711 = mpu_armv7.addInstance();
    const mpu_armv712 = mpu_armv7.addInstance();
    
    /**
     * Write custom configuration values to the imported modules.
     */
    bootloader1.appImageOffset = "0x240000";
    bootloader1.$name          = "CONFIG_BOOTLOADER_FLASH_HSM";
    
    bootloader2.$name          = "CONFIG_BOOTLOADER_FLASH_MCU";
    bootloader2.appImageOffset = "0x800000";
    
    bootloader3.$name          = "CONFIG_BOOTLOADER_FLASH_LINUX";
    bootloader3.appImageOffset = "0x1200000";
    
    bootloader1.flashDriver                                 = flash1;
    bootloader2.flashDriver                                 = flash1;
    bootloader3.flashDriver                                 = flash1;
    flash1.$name                                            = "CONFIG_FLASH_SBL";
    flash1.serialFlashDriver.$name                          = "board_flash_serialFlash_serialflash0";
    flash1.serialFlashDriver.peripheralDriver.dmaEnable     = true;
    flash1.serialFlashDriver.peripheralDriver.phyEnable     = true;
    flash1.serialFlashDriver.peripheralDriver.$name         = "CONFIG_OSPI_SBL";
    flash1.serialFlashDriver.peripheralDriver.phySkipTuning = true;
    
    dss1.$name                                   = "CONFIG_DSS0";
    dss1.backgroundColor                         = 0x0;
    dss1.vidlFrameFormat                         = "ARGB32_8888";
    dss1.selectOverlayManager                    = "OVR2";
    dss1.selectVP                                = "VP2";
    dss1.selectDisplayInterface                  = "DPI";
    dss1.dispShare                               = true;
    dss1.vidlInputFrameheight                    = 720;
    dss1.vidlOutputFrameHeight                   = 720;
    dss1.pixelClkFreq                            = 100200000;
    dss1.panelHeight                             = 720;
    dss1.hSyncLength                             = 120;
    dss1.vBackPorch                              = 10;
    dss1.vFrontPorch                             = 10;
    dss1.vSyncLength                             = 16;
    dss1.hBackPorch                              = 76;
    dss1.hFrontPorch                             = 64;
    dss1.dispShareMode                           = "independentVP";
    dss1.DPIPanel[0].$name                       = "CONFIG_PANEL0";
    dss1.DPIPanel[0].bridgeSII9022A.$name        = "board_panel_bridge_bridge_sii9022a0";
    dss1.DPIPanel[0].i2cInstance.I2C_child.$name = "drivers_i2c_v0_i2c_v0_template0";
    dss1.DPIPanel[0].i2cInstance.I2C.$assign     = "I2C1";
    
    ipc.vringAllocationPDK = false;
    
    mcan1.$name            = "CONFIG_MCAN0";
    mcan1.MCU_MCAN.$assign = "MCU_MCAN1";
    
    mcasp1.$name                                   = "CONFIG_MCASP0";
    mcasp1.enableLoopback                          = false;
    mcasp1.enableMcaspRx                           = false;
    mcasp1.txCallbackFxn                           = "mcasp_txcb";
    mcasp1.txActiveSlotMask                        = 0x3;
    mcasp1.txDataMask                              = 0xFFFFFFFF;
    mcasp1.txFsSource                              = 0;
    mcasp1.txAclkSource                            = 0;
    mcasp1.rxFsSource                              = 0;
    mcasp1.rxAclkSource                            = 0;
    mcasp1.externTxLoopjob                         = true;
    mcasp1.txLoopjobBufExtern                      = "unsigned int audio_sample[]";
    mcasp1.txLoopjobBuf                            = "audio_sample";
    mcasp1.txLoopjobBufLength                      = 384000;
    mcasp1.txBclkExpected                          = 3072000;
    mcasp1.txFsyncExpected                         = 48000;
    mcasp1.rxBclkExpected                          = 3072000;
    mcasp1.rxFsyncExpected                         = 48000;
    mcasp1.txClkDiv                                = 1;
    mcasp1.rxClkDiv                                = 1;
    mcasp1.txClkApplyAlert                         = false;
    mcasp1.rxClkApplyAlert                         = false;
    mcasp1.mcaspSer.create(1);
    mcasp1.mcaspSer[0].$name                       = "CONFIG_MCASP_SER0";
    mcasp1.mcaspSer[0].MCASP.$assignAllowConflicts = "MCASP1";
    mcasp1.MCASP.$assignAllowConflicts             = "MCASP1";
    scripting.suppress("Resource conflict,MCASP1 is also in use by @@@.+?@@@", mcasp1.mcaspSer[0].MCASP, "$assign");
    scripting.suppress("Resource conflict,MCASP1 is also in use by @@@.+?@@@", mcasp1.MCASP, "$assign");
    
    uart1.$name                      = "CONFIG_UART_SBL";
    uart1.useWakeupDomainPeripherals = false;
    uart1.intrEnable                 = "DISABLE";
    uart1.addedByBootloader          = true;
    uart1.UART.$assign               = "USART0";
    
    const udma                                           = scripting.addModule("/drivers/udma/udma", {}, false);
    const udma1                                          = udma.addInstance({}, false);
    udma1.$name                                          = "CONFIG_UDMA0";
    mcasp1.bcDmaDriver                                   = udma1;
    flash1.serialFlashDriver.peripheralDriver.udmaDriver = udma1;
    bootloader1.udmaDriver                               = udma1;
    bootloader2.udmaDriver                               = udma1;
    bootloader3.udmaDriver                               = udma1;
    
    const udma_blkcopy_channel                                   = scripting.addModule("/drivers/udma/udma_blkcopy_channel", {}, false);
    const udma_blkcopy_channel1                                  = udma_blkcopy_channel.addInstance({}, false);
    udma_blkcopy_channel1.$name                                  = "CONFIG_UDMA_BLKCOPY_CH0";
    flash1.serialFlashDriver.peripheralDriver.udmaBlkCopyChannel = udma_blkcopy_channel1;
    bootloader1.udmaBlkCopyChannel                               = udma_blkcopy_channel1;
    bootloader2.udmaBlkCopyChannel                               = udma_blkcopy_channel1;
    bootloader3.udmaBlkCopyChannel                               = udma_blkcopy_channel1;
    
    debug_log.enableUartLog      = true;
    debug_log.uartTrace          = true;
    debug_log.uartLog.intrEnable = "DISABLE";
    debug_log.uartLog.$name      = "CONFIG_UART_APP";
    
    mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv71.allowExecute      = false;
    mpu_armv71.size              = 31;
    mpu_armv71.attributes        = "Device";
    mpu_armv71.$name             = "REGISTER_REGION";
    
    mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
    mpu_armv72.size              = 7;
    mpu_armv72.$name             = "TCMA_VEC";
    
    mpu_armv73.$name    = "DDR";
    mpu_armv73.baseAddr = 0x80000000;
    mpu_armv73.size     = 31;
    
    mpu_armv74.baseAddr   = 0x41010000;
    mpu_armv74.size       = 15;
    mpu_armv74.attributes = "NonCached";
    mpu_armv74.$name      = "TCMB";
    
    mpu_armv75.size       = 15;
    mpu_armv75.attributes = "NonCached";
    mpu_armv75.$name      = "TCMA";
    
    mpu_armv76.baseAddr = 0x43C00000;
    mpu_armv76.size     = 18;
    mpu_armv76.$name    = "HSM_RAM";
    
    mpu_armv77.$name        = "LINUX_VRING";
    mpu_armv77.baseAddr     = 0x9C800000;
    mpu_armv77.attributes   = "NonCached";
    mpu_armv77.size         = 20;
    mpu_armv77.allowExecute = false;
    
    mpu_armv78.attributes   = "NonCached";
    mpu_armv78.size         = 20;
    mpu_armv78.allowExecute = false;
    mpu_armv78.baseAddr     = 0x9C900000;
    mpu_armv78.$name        = "RESOURCE_TABLE_AND_TRACE";
    
    mpu_armv79.baseAddr     = 0x9B500000;
    mpu_armv79.allowExecute = false;
    mpu_armv79.attributes   = "NonCached";
    mpu_armv79.$name        = "RTOS_NORTOS_IPC_VRING1";
    mpu_armv79.size         = 20;
    
    mpu_armv710.$name        = "RTOS_NORTOS_IPC_VRING2";
    mpu_armv710.baseAddr     = 0x9B600000;
    mpu_armv710.size         = 21;
    mpu_armv710.allowExecute = false;
    mpu_armv710.attributes   = "NonCached";
    
    mpu_armv711.$name        = "FSS0_OSPI0_CTRL_REG";
    mpu_armv711.baseAddr     = 0xFC40000;
    mpu_armv711.size         = 8;
    mpu_armv711.attributes   = "Device";
    mpu_armv711.allowExecute = false;
    
    mpu_armv712.$name        = "UART0_REG";
    mpu_armv712.baseAddr     = 0x2800000;
    mpu_armv712.size         = 9;
    mpu_armv712.attributes   = "Device";
    mpu_armv712.allowExecute = false;
    
    /**
     * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
     * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
     * re-solve from scratch.
     */
    flash1.serialFlashDriver.peripheralDriver.OSPI.$suggestSolution      = "OSPI0";
    flash1.serialFlashDriver.peripheralDriver.OSPI.CLK.$suggestSolution  = "OSPI0_CLK";
    flash1.serialFlashDriver.peripheralDriver.OSPI.CSn0.$suggestSolution = "OSPI0_CSn0";
    flash1.serialFlashDriver.peripheralDriver.OSPI.DQS.$suggestSolution  = "OSPI0_DQS";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D7.$suggestSolution   = "OSPI0_D7";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D6.$suggestSolution   = "OSPI0_D6";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D5.$suggestSolution   = "OSPI0_D5";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D4.$suggestSolution   = "OSPI0_D4";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D3.$suggestSolution   = "OSPI0_D3";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D2.$suggestSolution   = "OSPI0_D2";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D1.$suggestSolution   = "OSPI0_D1";
    flash1.serialFlashDriver.peripheralDriver.OSPI.D0.$suggestSolution   = "OSPI0_D0";
    dss1.DSS.$suggestSolution                                            = "DSS0";
    dss1.DSS.DATA0.$suggestSolution                                      = "VOUT0_DATA0";
    dss1.DSS.DATA1.$suggestSolution                                      = "VOUT0_DATA1";
    dss1.DSS.DATA2.$suggestSolution                                      = "VOUT0_DATA2";
    dss1.DSS.DATA3.$suggestSolution                                      = "VOUT0_DATA3";
    dss1.DSS.DATA4.$suggestSolution                                      = "VOUT0_DATA4";
    dss1.DSS.DATA5.$suggestSolution                                      = "VOUT0_DATA5";
    dss1.DSS.DATA6.$suggestSolution                                      = "VOUT0_DATA6";
    dss1.DSS.DATA7.$suggestSolution                                      = "VOUT0_DATA7";
    dss1.DSS.DATA8.$suggestSolution                                      = "VOUT0_DATA8";
    dss1.DSS.DATA9.$suggestSolution                                      = "VOUT0_DATA9";
    dss1.DSS.DATA10.$suggestSolution                                     = "VOUT0_DATA10";
    dss1.DSS.DATA11.$suggestSolution                                     = "VOUT0_DATA11";
    dss1.DSS.DATA12.$suggestSolution                                     = "VOUT0_DATA12";
    dss1.DSS.DATA13.$suggestSolution                                     = "VOUT0_DATA13";
    dss1.DSS.DATA14.$suggestSolution                                     = "VOUT0_DATA14";
    dss1.DSS.DATA15.$suggestSolution                                     = "VOUT0_DATA15";
    dss1.DSS.DATA16.$suggestSolution                                     = "GPMC0_AD8";
    dss1.DSS.DATA17.$suggestSolution                                     = "GPMC0_AD9";
    dss1.DSS.DATA18.$suggestSolution                                     = "GPMC0_AD10";
    dss1.DSS.DATA19.$suggestSolution                                     = "GPMC0_AD11";
    dss1.DSS.DATA20.$suggestSolution                                     = "GPMC0_AD12";
    dss1.DSS.DATA21.$suggestSolution                                     = "GPMC0_AD13";
    dss1.DSS.DATA22.$suggestSolution                                     = "GPMC0_AD14";
    dss1.DSS.DATA23.$suggestSolution                                     = "GPMC0_AD15";
    dss1.DSS.DE.$suggestSolution                                         = "VOUT0_DE";
    dss1.DSS.EXTPCLKIN.$suggestSolution                                  = "GPMC0_WAIT1";
    dss1.DSS.HSYNC.$suggestSolution                                      = "VOUT0_HSYNC";
    dss1.DSS.PCLK.$suggestSolution                                       = "VOUT0_PCLK";
    dss1.DSS.VSYNC.$suggestSolution                                      = "VOUT0_VSYNC";
    dss1.DPIPanel[0].i2cInstance.I2C.SCL.$suggestSolution                = "I2C1_SCL";
    dss1.DPIPanel[0].i2cInstance.I2C.SDA.$suggestSolution                = "I2C1_SDA";
    mcan1.MCU_MCAN.RX.$suggestSolution                                   = "MCU_MCAN1_RX";
    mcan1.MCU_MCAN.TX.$suggestSolution                                   = "MCU_MCAN1_TX";
    mcasp1.SYSTEM.$suggestSolution                                       = "SYSTEM0";
    mcasp1.mcaspSer[0].MCASP.AXR0.$suggestSolution                       = "GPMC0_WEn";
    mcasp1.MCASP.AFSX.$suggestSolution                                   = "GPMC0_WAIT0";
    mcasp1.MCASP.ACLKX.$suggestSolution                                  = "GPMC0_BE0n_CLE";
    uart1.UART.RXD.$suggestSolution                                      = "UART0_RXD";
    uart1.UART.TXD.$suggestSolution                                      = "UART0_TXD";
    debug_log.uartLog.WKUP_UART.$suggestSolution                         = "WKUP_USART0";
    debug_log.uartLog.WKUP_UART.RXD.$suggestSolution                     = "WKUP_UART0_RXD";
    debug_log.uartLog.WKUP_UART.TXD.$suggestSolution                     = "WKUP_UART0_TXD";
    

    This is the syscfg using for the build

  • Hi Shanooj,

    Also, do you see any error logs showing a conflict as such?

    Please answer the above.
    Is your setup using OSPI reads for the display operations?

  • Hi  ,

    Also, do you see any error logs showing a conflict as such?

    console:/ $ [  142.852411][  T305] servicemanager: VINTF HALs require names in the format type/instance (e.g. some.package.foo.IFoo/default) but got: media_quality
    [  144.062621][   T89] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_set_device_state+0x7c/0x14c [ti_sci])
    [  144.074547][   T89] ti-sci 44043000.system-controller: Mbox send fail -110
    [  144.446622][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  144.458967][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  144.465914][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  145.502615][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  145.514932][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  145.521943][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  146.558624][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  146.571018][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  146.578023][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  146.589599][ T1459] cpu cpu0: _opp_config_clk_single: failed to set clock rate: -22
    [  146.597321][ T1459] cpufreq: __target_index: Failed to change cpu frequency: -22
    [  147.614619][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  147.626977][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  147.633901][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  148.670603][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  148.682941][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  148.690009][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  149.726738][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  149.739289][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  149.746241][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  149.757888][ T1459] cpu cpu0: _opp_config_clk_single: failed to set clock rate: -22
    [  149.765658][ T1459] cpufreq: __target_index: Failed to change cpu frequency: -22
    [  150.814606][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  150.826994][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  150.833940][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  151.870631][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  151.882941][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  151.890090][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  152.061322][ T2313] audit: rate limit exceeded
    [  152.926590][ T1459] ti-sci 44043000.system-controller: Mbox timedout in resp(caller: ti_sci_cmd_clk_get_match_freq+0xb8/0x198 [ti_sci])
    [  152.938989][ T1459] ti-sci 44043000.system-controller: Mbox send fail -110
    [  152.945953][ T1459] ti-sci-clk 44043000.system-controller:clock-controller: determine-rate failed for dev=135, clk=0, ret=-110
    [  152.957560][ T1459] cpu cpu0: _opp_config_clk_single: failed to set clock rate: -22
    [  152.965321][ T1459] cpufreq: __target_index: Failed to change cpu frequency: -22

    This is the log am getting on the time of starting the loop audio play 

  • Is your setup using OSPI reads for the display operations?

    ?

  •  .

    Is your setup using OSPI reads for the display operations?

    No,

    As per my understanding, the system boots from eMMC, and the DSS fetches framebuffers directly from DDR memory using internal DMA engines