AnsweredAssumed Answered

Cannot wake up from freeze with GPIO

Question asked by Gerald Heinig on Sep 21, 2017
Latest reply on Sep 21, 2017 by Carlos_Musich

Hello,

I have an i.MX6 custom board that is very similar to the Sabre SD running Yocto Linux 4.1.15.

Determining the available power settings for my board gives the following:

# cat /sys/power/state

freeze standby mem

#

 

I have created a device tree entry for the gpio-keys driver to wake my board up from a GPIO pin:

Pinctrl entry:

 

pinctrl_gpio_keys: gpio_keysgrp {

                fsl,pins = <

                                MX6QDL_PAD_GPIO_2__GPIO1_IO02                  0x1b0b0 // Alert Button

                >;

};

 

// Enable wakeup from sleep via emergency button

gpio-keys {

                compatible = "gpio-keys";

                pinctrl-names = "default";

                pinctrl-0 = <&pinctrl_gpio_keys>;

                                               

                power {

                                label = "Alert-Button";

                                gpios = <&gpio1 2 IRQ_TYPE_EDGE_RISING>;

                                interrupts = <66 IRQ_TYPE_LEVEL_HIGH 7>;

                                linux,code = <118>; /* KEY_CTRL_LEFT */

                                gpio-key,wakeup;

                };

};

 

This works fine for the sleep modes entered using 'mem' and 'standby', ie.

# echo mem > /sys/power/state

and

# echo standby > /sys/power/state

 

I can wake the system up successfully with my GPIO button from these 2 states.

 

However, this does not work with the 'freeze' mode:

# echo freeze > /sys/power/state

// cannot wake up, need to reset board

 

Can anyone explain why the freeze mode doesn't work, but the others do?

Outcomes