AM62 suspend

From Variscite Wiki
Revision as of 22:44, 25 October 2024 by Nate (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Warning: This page is designed to be used with a 'release' URL parameter.

This page is using the default release am62-yocto-kirkstone-6.1.83_09.02.01.10-v1.0.
To view this page for a specific Variscite SoM and software release, please follow these steps:

  1. Visit variwiki.com
  2. Select your SoM
  3. Select the software release
VAR-SOM-AM62 Suspend to RAM

Suspend to RAM

This state offers significant power savings as everything in the system is put into a low-power state, except for memory, which is placed into the self-refresh mode to retain its contents.

To suspend to RAM execute the following command:

# pm-suspend

Wake up

There are many possible ways to wake up from suspend.
A few examples:
- Pushing a button on the board which has the boolean property "wakeup-source" set in its device tree node (under gpio_keys), e.g.:

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_gpio_keys>;
               ...
               back {
                       label = "Back";
                       gpios = <&main_gpioAA BB GPIO_ACTIVE_HIGH>; /* Change AA to the port and BB to the pin */
                       linux,code = <KEY_BACK>;
                       wakeup-source;
               };
	};

- Pressing the capacitive touch which has the "wakeup-source" property set in its device tree node, e.g.:

	/* Capacitive touch controller */
	ft5x06_ts: ft5x06_ts@38 {
		compatible = "edt,edt-ft5206";
		reg = <0x38>;
		pinctrl-names = "default";
		pinctrl-0 = <&captouch_pins_default>;
		interrupts-extended = <&main_gpio1 16 IRQ_TYPE_EDGE_FALLING>,
							  <&main_pmx0 0x1B8>;
		interrupt-names = "irq", "wakeup";
		touchscreen-size-x = <800>;
		touchscreen-size-y = <480>;
		touchscreen-inverted-x;
		touchscreen-inverted-y;
		wakeup-source;
		status = "okay";
	};


Note: Not all pins on the AM62 SoC can be used for wakeup. According to the AM62 Reference Manual (spruiv7):


Section 6.2.4.11 I/O Power Management and Daisy Chaining

The following terminal signal names are excluded from the isolation and wakeup daisy chains and not muxed with GPIO signals. Hence, these signals cannot be used as a wakeup event:

* System signals: MCU_RESETz, MCU_PORz, MCU_ERRORn, WKUP_CLKOUT0, EXT_REFCLK1, RESET_REQz, RESETSTATz, PORz_OUT
* JTAG interface: TMS, TDI, TDO, TCK, TRSTn, EMU0, EMU1
* Oscillator signals: MCU_OSC0_XO, MCU_OSC0_XI, WKUP_LFOSC0_XO, WKUP_LFOSC0_XI
* CSI0 interface: All CSI0_x signals
* USB signals: USB0_DP, USB0_DM, USB0_RCALIB, USB0_VBUS, USB1_DP, USB1_DM, USB1_RCALIB, USB1_VBUS
* DDR interface: All DDR0_x signals


Unfortunately, the Symphony board’s push buttons (Back, Home, Menu) are connected to the PCA9534 GPIO expander, which uses EXT_REFCLK1.GPIO1_30 for its IRQ. As a result, they cannot be used as a wakeup source.

Measuring SOM current consumption in suspend

To measure the SOM current consumption remove resistor R58 on Symphony-Board and connect an ammeter in its place.
It is recommended to boot from eMMC to get an accurate measurement.