This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Switch off one DSP and one Cortex-M4 processor from Linux for am57xx-evm board

We need to switch off one DSP processor and one Cortex-M4 processor from Linux for am57xx-evm board

Please let us know how can we achieve the same.

  • Hi Govindaraji,

    Let we first focus on the DSP (i.e. DSP1). You can check AM572x silicon errata (SPRZ429J), we have useful info there:

    i872 DSP MFlag Output Not Initialized

    There is power-up and power down sequence there. You can try the below power down sequence from the user space with devmem2 tool:

    /* Make the DSP1 CLK CTRL to HW auto */
    WR_MEM_32(CM_DSP1_CLKSTCTRL, 0x3);
    /* Make the DSP1 POWER domain to go to power off mode */
    WR_MEM_32(PM_DSP1_PWRSTCTRL, (RD_MEM_32(PM_DSP1_PWRSTCTRL)& 0xFFFFFFF0));
    /* Disable DSPSS clock */
    WR_MEM_32(CM_DSP1_DSP1_CLKCTRL, 0x0);
    /* Reset assertion for DSP SS logic */
    WR_MEM_32(RM_DSP1_RSTCTRL, 0x3);

    You can check the DSP1 power domain status reading the below register:
    PM_DSP1_PWRSTST

    You might also apply the below errata workaround:

    i879 DSP MStandby Requires CD_EMU in SW_WKUP
    CM_EMU_CLKSTCTRL[1:0]CLKTRCTRL


    See also the below e2e thread, which discuss DSP power management:
    e2e.ti.com/.../516117

    Regards,
    Pavel
  • Thank you Pavel,

    To use the devmem2 tool we need the PRCM registers address of PM_DSP1_PWRSTCTRL, RM_DSP1_RSTCTRL, PM_DSP1_PWRSTST, CM_EMU_CLKSTCTRL and PM_DSP2_PWRSTCTRL, RM_DSP2_RSTCTRL, PM_DSP2_PWRSTST, CM_EMU_CLKSTCTRL

    From the previous reply link we got the address of CM_DSP1_CLKSTCTRL, CM_DSP1_DSP1_CLKCTRL and CM_DSP2_CLKSTCTRL, CM_DSP2_DSP2_CLKCTRL

    Also let us know how do we disable DSP at the time of compiling Linux (kernel or rootfs build)
  • Govindaraji Sivanantham said:
    To use the devmem2 tool we need the PRCM registers address of PM_DSP1_PWRSTCTRL, RM_DSP1_RSTCTRL, PM_DSP1_PWRSTST, CM_EMU_CLKSTCTRL and PM_DSP2_PWRSTCTRL, RM_DSP2_RSTCTRL, PM_DSP2_PWRSTST, CM_EMU_CLKSTCTRL

    Regarding PM_DSP1_PWRSTCTRL, RM_DSP1_RSTCTRL, PM_DSP1_PWRSTST see AM572x TRM, Table 3-1613. DSP1_PRM Registers Mapping Summary

    Regarding PM_DSP2_PWRSTCTRL, RM_DSP2_RSTCTRL,  PM_DSP2_PWRSTST see AM572x TRM, Table 3-1624. DSP2_PRM Registers Mapping Summary

    Regarding CM_EMU_CLKSTCTRL  see AM572x TRM, Table 3-1649. EMU_CM Registers Mapping Summary

    Govindaraji Sivanantham said:
    Also let us know how do we disable DSP at the time of compiling Linux (kernel or rootfs build)

    I will check and come back to you when I have something on this.

    Regards,
    Pavel

  • Govindaraji Sivanantham said:
    Also let us know how do we disable DSP at the time of compiling Linux (kernel or rootfs build)

    I suspect that DSP is turn on (clock and power) in the DSP firmware (dra7-dsp1-fw.xe66). Can you check if that DSP firmware is loaded by default in your board? Check also the default value you have in CM_DSP1_DSP1_CLKCTRL.

    You can re-configure the udev to not load the DSP firmware or even to remove the DSP formware from the rootfs/lib/firmware/ folder. Check the value of CM_DSP1_DSP1_CLKCTRL after you do not load the DSP firmware. See the default wiki page for more info:

    Regards,
    Pavel