MX8 suspend

From Variscite Wiki
VAR-SOM-MX8 Suspend to RAM

1 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

2 Wake up

There are many possible ways to wake up from suspend.
A few examples:

  • Pushing the ON/OFF button (when present on the board)
  • Pushing a button on the board which has the properties "pad-wakeup-num" and "pad-wakeup" set in its device tree node (under gpio related node), e.g.:
   wakeup from direct GPIOs
   &lsio_gpio5 {
       /* Enable wakeup-source from all gpio-keys*/
       pad-wakeup-num = <4>;  /* Total number of wakeup pads in gpio5 bank */
       /*
        Each triple means:
        gpio-key pin id
        trigger type
        gpio pin
       */
       /*            KEY_BACK                                        KEY_DOWN,                                        KEY_HOME,                                       KEY_UP */
       pad-wakeup = <IMX8QM_USDHC1_DATA4 SC_PAD_WAKEUP_LOW_LVL 19>, <IMX8QM_USDHC1_STROBE SC_PAD_WAKEUP_LOW_LVL 23>, <IMX8QM_USDHC1_DATA5 SC_PAD_WAKEUP_LOW_LVL 20>, <IMX8QM_USDHC1_DATA6 SC_PAD_WAKEUP_LOW_LVL 21>;
   };
   wakeup from IOexpander GPIOs
   &lsio_gpio1 {
       /* Enable wakeup-source from all pca9534 gpio-keys*/
       pad-wakeup-num = <1>;	/* Total number of wakeup pads in gpio1 bank */
       /*
        IMX8QM_MIPI_CSI0_MCLK_OUT: PCA9534 IRQ pin id
        SC_PAD_WAKEUP_LOW_LVL:     trigger type
        24:                        PCA9534 IRQ gpio pin
       */
       pad-wakeup = <IMX8QM_MIPI_CSI0_MCLK_OUT SC_PAD_WAKEUP_LOW_LVL 24>;
   };
  • Pressing the capacitive touch which has the properties "pad-wakeup-num" and "pad-wakeup" set in its device tree node (under touch IRQ gpio related node), e.g.:
   &lsio_gpio1 {
       /* Enable wakeup-source from Capacitive touch */
       pad-wakeup-num = <1>; /* Total number of wakeup pads in gpio1 bank */
       /*
        IMX8QM_LVDS0_GPIO01:   Touch IRQ pin id
        SC_PAD_WAKEUP_LOW_LVL: trigger type
        5:                     Touch IRQ gpio pin
       */
       pad-wakeup = <IMX8QM_LVDS0_GPIO01 SC_PAD_WAKEUP_LOW_LVL 5>;
   };
  • Pressing any key on debug console defined as wake-up source before entering suspend (see below):
$ echo enabled > /sys/devices/platform/bus@5a000000/5a060000.serial/tty/ttyLP0/power/wakeup