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.

Standby Support

Other Parts Discussed in Thread: AM3359, TPS65217, AM3354

I have a custom AM3359 platform running Linux (EZSDK) that I would like to use standby/RTC-only or some such variant.  I am using the AM3359 in conjunction with TPS65217C.  I want to be able to do the following:

1 - Wake on Power Button change (I have the WAKEUP pin from TPS65217 tied to the EXT_WAKEUP pin of the CPU)

2 - Wake on Touch screen press (I have touchscreen IRQ tied to gpio3_8, not using the tscadc in this case)

3 - Wake on some other gpio (I have two GPIO expanders that can generate IRQs on gpio1_16 and gpio3_20)

I am able to use the RTC shutdown code in the Linux kernel to power-down the TPS65217 to RTC-only mode, and the power button can boot up the system, but I want to wake from standby rather than a full restart.  I've read the gpio0 is the only gpio capable of waking, unless we're using gpio_keys (which I'm not so I can have full user-space control of direction and value from sysfs).

Also, I tried following the wiki instructions to power down the system and wake from serial console, but this doesn't work properly...it causes a kernel fault when attempting to go to standby.  I think one problem is that the GPIOs are all supplied by the 3.3V regulator which is shut down by the PMIC.

So, let's knock these out one by one?  What does it take to put the system to standby and wake it up again using the EXT_WAKEUP pin?

  • Hi David,

    The latest version of the Sitara Linux SDK (05.07) was released this week, with new support for a standby mode.  Please refer to the following wiki: http://processors.wiki.ti.com/index.php/AM335x_Power_Management_Standby_User's_Guide.

    The primary benefits of using standby mode as opposed to "Deep sleep" or RTC-only would be the availability of additional wake-up sources, and lower wakeup latency.  The tradeoff is that the power consumption in the standby state will be somewhat higher.

    The EXT_WAKEUP pin is designed only for use in waking up from RTC-only mode.  However, you can connect the nINT signal from the PMIC to any general purpose IO pad on the processor in order to wake from standby.  The 65217 PMIC has the INT register (address 0x02h) that can be configured so that push button events would signal the processor.

    The wiki has a comprehensive section describing the wakeup sources from standby.  I believe the section entitled "Wakeup from a peripheral via GPIO method" is most pertinent in your case.  It describes how wakeup from standby mode is supported via GPIO method wherein any IO pad can be configured as GPIO while entering into standby mode. Wakeup happens through the GPIO interrupt caused by any activity on the respective pad.  Using this method, you should be able to wakeup from your touch screen press or other gpio events.

  • Hi Greg,

    I am working on am3354 based custom board and tried system Wakeup from a peripheral via GPIO method using following commamds

       mkdir -p /debugfs
       mount -t debugfs debugfs /debugfs
       cd /debugfs/omap_mux/board/
       echo uart0_rxd.gpio1_10=0x27,rising > standby_gpio_pad_conf
       echo standby > /sys/power/state

    The system is going to suspend mode and resuming with uart interrupt .
    But if i am giving uart interrupt after some 10 seconds its not resuming from suspend mode.

    Why it is not resuming from the suspend ?


    Thanks

  • Hello,

    I am revisiting this issue now.  I have tested with a BeagleBone and everything works as expected (I can use uart0_rxd or gpio0_7).

    Now my board uses TPS65217C and DDR3 memory as I mentioned above.  My board goes to sleep fine and current consumption drops to 0.06A.  When I try to wake with either uart0_rxd, or another free GPIO gpio0_19, the board does not resume properly, but I see the current increase to 0.19A.  The board normally consumes around 0.33A.

    So, it seems the board is not properly waking.  How can I debug?  I tried adding console output in pm33xx.c and setting no_console_suspend, but I still get no console output after trying to wake.  How can I debug?

    Please note that I use gpio0_7 to control VTT regulator similar to EVM SK, and that I also added a pull-down to the DDR_CKE line after seeing a note about it in sleep33xx.S.

  • BTW, I'm using EZSDK 6.00.00.00 as my base files, and used the PSP images to test the BeagleBone.

  • Just tested my Bootloader, Kernel, and RFS on BeagleBone Black and was able to successfully go to standby and wake from uart0_rxd (my board used DDR3 and TPS65217C, too).  I must have some hardware issue with my board.  Will be ordering the next version soon...

  • Shinu,

    Just tried on my BBB and it worked fine after 10 seconds.  How is your DDR setup (DDR2 or DDR3, Termination regulator, etc.)?