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.

How to Reduce Power Consumption

Other Parts Discussed in Thread: TPS65950, OMAP3530

8132.config-20110209.txtI am trying reducing power consumption on our board (OMAP3530 + TPS65950).
Linux version is PSP 03.01.00.06.

The power consumption is able to be reduced a little by using the following commands.

     echo 1 > /debug/pm_debug/sleep_while_idle

     echo 1 > /debug/pm_debug/voltage_off_while_idle

However, the following commands that were sure to reduce power consumption more were not effective at all, and operation of the board was unstable (for instance, freezing).

     echo 1 > /debug/pm_debug/enable_off_mode

     echo mem > /sys/power/state

What kind of settings are necessary to get the effect of these commands?

The configuration file is appended. It would be greatly appreciated when information that leads to the solution can be gotten.

Thanks and regards,

Masaki Nose

 

  • Actually, the following commands are used to put your platform in suspend OFF mode, which is not actually freezing:

         echo 1 > /debug/pm_debug/enable_off_mode

         echo mem > /sys/power/state

    When you issue these commands, the board goes to OFF mode and the CPU is put to sleep mode. Only the DDRAM content is self-refreshed while waiting for the CPU to be woken up and start execution from where it was before. The wake-up (resume) mechanism can be triggered by the PWR_ON button (if it is an EVM board) or you need to set some wake-up sources (e.g. RTC, Touchscreen) to be able to recover from OFF mode. Anyway this mechanism is dependent on the BSP and you need to make sure it is correctly supported in the kernel you are using before you can safely use it in your device.

     

  • Thank you very much for the reply.

    We will advance the investigation concerning the recover method around the kernel.

    However, even if those commands are executed, the power consumption doesn't be reduced at present.

         echo 1 > /debug/pm_debug/enable_off_mode

         echo mem > /sys/power/state
     
    It would be greatly appreciated when cause and important point that can be thought to reduce the power consumption will be given around configuration of Linux.

    Thanks and regards,

    Masaki Nose

  • To debug the issue, can you try "# cat /debug/pm_debug/registers/1" to dump PRCM register snapshot taken just before suspend (just before jump into SRAM idle code) and post the register dump to here. You can do it after OMAP comes back from idle status. Please refer below post regarding to the debugging process for a similar suspend/resume issue. 

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/p/77848/283406.aspx#283406

  • Thank you for the advice.

    I have changed SMARTIDLE that existed in "ehci_omap.c" and "omap2430.c" into FORCEIDLE referring to the taught URL.

    However, there was no effect of reducing power consumption, and system has been freezed again.

    The execution result of "cat /debug/pm_debug/registers/1" is appended.

    Each value did not have the change before and after the execution.

    Can the cause be presumed based on these register value?

    Best regards,

    Masaki Nose

    1033.before-suspend.txt

  • There was a little advancement.

     

    The system freezing was solved after suspending (echo mem > /sys/power/state) by the following setting of .config.

     

    CONDIG_MMC_UNSAFE_RESUME=y

     

    Power consumption was also reduced a little (about 2mA).


    However, when the suspend is executed correctly, is power consumption reduced more like following URL?

     

    http://processors.wiki.ti.com/index.php?title=AM/DM37x_Low_Power_Standby_Support

     

    The execution results of "cat /debug/pm_debug/registers/1" are appended.

     

    Please teach if there are methods of reducing power consumption more based on these.

     

    Best regards,

    Masaki Nose

    6574.before-suspend.txt6724.after-resume.txt

  • Is there any method of setting peripheral power domain to OFF state or RET state?

    If the peripheral power domain is set to OFF state (or RET state), large reducing of power consumption can be expected.

    I found a similar question as follows (but no answer).
    http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/t/29939.aspx

    It would be greatly appreciated when the method of it can be taught.

    Regards,
    Masaki Nose

  • To enter the lowest standby power mode (OFF mode), all the modules need to be idled before going to the standby mode. It looks SCM (System Control Module) and GPIO2~6 are not idled from CM_IDLEST register status in your log file. Please check settings or codes related to these modules.

  • Thank you for the advice.

    I would like to ask following two questions.

    1. I cannot find methods of setting SCM and GPIO to idle state yet.

       Can I get any advice from .config file that is appended in the first question? (.config-20110209.txt)

       Is it also nessesary to set CONFIG_KEYBOARD_GPIO=n?


    2. Are there any reasons why "echo 1 > /debug/pm_debug/enable_off_mode" causes system freezing after a few seconds?

       The system freezing after suspend (echo mem > /sys/power/state) has been solved, but above-mentioned cannot be solved yet.

       Are the system freezing and off mode transition trade-offs in my configuration?

    Regards,
    Masaki Nose

  • I would like to add a question.

    When I want to set the GPIO registers not used to OFF state directly, which of source files should be written?

    Is the source file in "/drivers/gpio/"?

    Regards,
    Masaki Nose

  • What does each value displayed after executing "cat /debug/pm_debug/count" mean?

    usbhost_pwrdm (OFF),OFF:1,RET:2,INA:0,ON:2
    sgx_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:1
    per_pwrdm (ON),OFF:2,RET:693,INA:0,ON:696
    dss_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:1
    cam_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:1
    core_pwrdm (ON),OFF:2,RET:0,INA:0,ON:3
    neon_pwrdm (ON),OFF:2,RET:0,INA:844,ON:847
    mpu_pwrdm (ON),OFF:2,RET:0,INA:844,ON:847
    iva2_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1
    per_clkdm->per_pwrdm (11)
    usbhost_clkdm->usbhost_pwrdm (0)
    cam_clkdm->cam_pwrdm (0)
    dss_clkdm->dss_pwrdm (0)
    core_l4_clkdm->core_pwrdm (10)
    core_l3_clkdm->core_pwrdm (5)
    d2d_clkdm->core_pwrdm (0)
    sgx_clkdm->sgx_pwrdm (0)
    iva2_clkdm->iva2_pwrdm (0)
    neon_clkdm->neon_pwrdm (0)
    mpu_clkdm->mpu_pwrdm (0)
    prm_clkdm->wkup_pwrdm (0)
    cm_clkdm->core_pwrdm (0)

    The meaning of each value is uncertain, though I understand the meaning of ON, OFF and RET.

    Regards,
    Masaki Nose