7.1 Host Wake-up
When the host is in Suspend mode, the controller wakes up the host on certain events using the wake-up GPIO available on the host board. The wake-up GPIO can be identified using the following:
- If the host is using the SDIO bus with in-band interrupt, WILC will use a separate interrupt line through the IRQ to wake up the host.
- If the host is using the SDIO bus with out of band interrupt, or the SPI bus, the IRQ line will be used by both the buses to indicate a new event to the host and to wake up the host if it is in the Suspend mode. For more information on configuring the host's GPIO number connected to ATWILC's IRQ pin, refer to General Purpose IOs.
The example below shows how to configure the GPIO on PC27 as the wake-up GPIO for the SAMA5D4 by modifying the at91-sama5d4_xplained.dts file (dts file) as follows:
Modify the pinctrl@fc06a000 block, the underlined text, to define PC27 as a GPIO:
pinctrl@fc06a000 {
board {
pinctrl_key_gpio1: key_gpio_1 { atmel,pins = <AT91_PIOC 27 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; }; }; };
Where, pinctrl@fc06a000 is a part of the apb block, which itself is a part of the ahb block.
Then, modify the gpio_keys block, underlined text to define PC27 as an active-high wake-up GPIO:
gpio_keys { compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_key_gpio>;
pinctrl-1 = <&pinctrl_key_gpio1>;
pb_user1 {
label = "pb_user1";
gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
linux,code = <0x100>;
gpio-key,wakeup; };
pb_suspend_resume_wakeup { label = "pb_suspend_resume_wakeup"; gpios = <&pioC 27 GPIO_ACTIVE_HIGH>; linux,code = <0x100>; gpio-key,wakeup;}; };
