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.

AM5728: Reducing power consumption

Part Number: AM5728
Other Parts Discussed in Thread: AM5718, AM5726

Question from customer:

Currently we're operating the AM57xx SoC in OPP_NOM during what we refer to as Energy Star mode for the machine because the task of actually putting the AM57xx into suspend (DRAM self refresh) was considered to require significant firmware effort which would affect our engineering schedule.

Because of this, we're currently trying to understand how we can further reduce the power consumption of AM5726 while in OPP_NOM as our system power consumption is currently higher than desired when the machine is idle.  Our AM5718 based systems have no problem getting to a low enough power consumption level to meet our product needs.

 

Our most recent question is relating to being able to run the AM572x MPU subsystem at clock frequencies less than 1GHz (ie: maybe at 500 MHz?) so as to reduce power consumption when in OPP_NOM.  Is this possible?

 

It would also be helpful to us if we could understand what the distribution of minimum voltages and actual measured power consumption are for idle AM572x SoC when in OPP_NOM.  The recently published white papers about power consumption seem to not provide any statistical data, they only show one snapshot of a single sample, which isn't that useful to us.

  • Just FYI to the customer, the minimum voltage allowed on the SoC is determined by automated testing when the chip is manufactured. The determined voltage is stored in the AVS Class 0 registers (Table 18-26 of the AM572x TRM).

    To minimize power consumption at idle, the general method is to turn off as many cores and peripherals as possible. The PRU cores, IPU cores, and VPE for example. This can be done in the device tree file (status = "disabled"). To diagnose and debug high power consumption one option is to perform a register dump on the PRCM module to see which peripherals are enabled.

    In Linux, this command will display every clock in the system and whether it has any consumers:

    $ cat /sys/kernel/debug/clk/clk_summary

    Further optimization can be done with these methods:

    • disable internal pull resistors if an external pull is present
    • cool down the processor - the result would be a decrease in leakage
  • There is also a wiki guide on how to add 500 MHz support to Linux.
    processors.wiki.ti.com/.../AM570x_Speed_Grades

    The main take-away from the guide is to modify dra7.dtsi with an additional OPP entry for 500MHz. Find the section for "opp_table" in the dra7.dtsi file and add to the node the following text:

            opp_nom@500000000 {
                    opp-hz = /bits/ 64 <500000000>;
                    opp-microvolt = <1060000 850000 1150000>;
                    opp-supported-hw = <0xFF 0x01>;
                    opp-suspend;
            };
  • Ahmad,

    Thanks so much....and just as a note, even the wiki talks about AM570x, it should work for AM572x too...

  • Rogerio,
    I was able to test this on a GP EVM. The only change I made was to the dra7.dtsi. The next step was to just compile the DTB and copy it to the SD card /boot directory on the rootfs.
  • thanks for confirming...in case field or customer have more questions, they will post here.