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.

Linux/AM5726: Power reduction in U-boot

Part Number: AM5726

Tool/software: Linux

Hello,


I need to do power consumption at u-boot level as well as at kernel level.

How can I do the lowest OPP in u-boot?

At kernel level, I changed the governor in powersave mode.

Here powersave mode is running at 1GHz and maximum is 1.5GHz.

If I want to add lower than 1 GHz support in powersave mode how can I do?


I need to compromise boot time while OPP is low, but when the board will boot up, I will change the governor from powersave mode to ondemand mode.

Please do the needful.

Regards,

-- Ronak

  • The PM experts have been notified. They will respond here.
  • Hi Ronak,

    Do you use ti-processor-sdk-linux-am57xx-evm-03.03.00.04?

    Ronak Patel said:
    How can I do the lowest OPP in u-boot?

    Lowest OPP for which domain (MPU, DSPEVE, IVA, GPU)? Regarding Cortex-A15 MPU, u-boot is using the lowest OPP (OPP_NOM) at 1000MHz. And these 1000MHz are the max frequency possible for OPP_NOM.

    Or do you mean that you need to reduce this 1000MHz frequency in u-boot?

    Ronak Patel said:
    At kernel level, I changed the governor in powersave mode.

    Ronak Patel said:
    If I want to add lower than 1 GHz support in powersave mode how can I do?

    You can update the OPP table according to your specific needs. See the below pointers:

    http://processors.wiki.ti.com/index.php/Linux_Core_Power_Management_User's_Guide_%28v4.4%29#Operating_Points

    Regards,
    Pavel

  • Ronak,

    In U-Boot, take a look at UBOOT/arch/arm/cpu/armv7/omap5/hw_data.c

    Modify the crystal DPLL multiplier field for the crystal installed on your board.  For example, I use the following to define a 500MHz MPU clock with a 20MHz crystal:

    /* OPP NOM FREQUENCY for OMAP5 ES2.0, and DRA7 ES1.0 */
    static const struct dpll_params mpu_dpll_params_1ghz[NUM_SYS_CLKS] = {
    ...
            {200, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1},	/* 20 MHz   */
    ...
    };

    In the Linux kernel, you will need to start with modifying the cpu0_opp_table in LINUX/arch/arm/boot/dts/dra7.dtsi

    In my experience it is slightly more tricky to add a new frequency, in addition to the frequencies already defined.  For now, you can test replacing the 1.0GHz entry with one at 500MHz to characterize your power savings, and I can get back with you on further modifications to support 500MHz as a fourth frequency option.

    BTW, do not modify the voltage below OPP_NOM - we do not define a lower voltage at 500MHz operation.

    	cpu0_opp_table: opp_table0 {
    		compatible = "operating-points-v2";
    		opp-shared;
    
    		opp_nom@500000000 {
    			opp-hz = /bits/ 64 <500000000>;
    			opp-microvolt = <1060000 850000 1150000>;
    			opp-supported-hw = <0xFF 0x01>;
    			opp-suspend;
    		};
    
    		opp_od@1176000000 {
    			opp-hz = /bits/ 64 <1176000000>;
    			opp-microvolt = <1160000 885000 1160000>;
    			opp-supported-hw = <0xFF 0x02>;
    		};
    
    		opp_high@1500000000 {
    			opp-hz = /bits/ 64 <1500000000>;
    			opp-microvolt = <1210000 950000 1250000>;
    			opp-supported-hw = <0xFF 0x04>;
    		};
    	};

    Regards,
    Mike