Hi All,
I am using MCIMX6SLL-EVK board as the Linux Host system in my testing. It is running the Linux kernel 4.9.11.
I am interfacing an external WiFi module via SDIO interface using the SD card slot SD3.
The WiFi module driver sets the MMC capability bit MMC_CAPS_NONREMOVABLE in the SDIO probe function to enable the WoWLAN Suspend/ Resume functionality. Also in SDIO probe fuction, the deivice wakeup is configured using the API device_init_wakeup(dev, true).
Also in SDIO suspend function, MMC_PM_KEEP_POWER & MMC_PM_WAKE_SDIO_IRQ capabilities are set. UART wake-up and the WoWLAN wake-up is configured before going to the suspend.
System suspend is tested using the commands,
echo enabled > /sys/class/tty/ttymxc0/power/wakeup
echo mem > /sys/power/state
The observation is that WiFi module SDIO interface power is sustained across Suspend/Resume tests. But the SDIO interrupts are not received in the host system. Host system doesn't wake-up from suspend based on SDIO interrupt, it wakes-up only based on UART interrupt.
Hi Pandi
please check that correct bsp was used, in particular "enable-sdio-wakeup"
was in dts file, like in imx6sll-evk.dts :
&usdhc1 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
keep-power-in-suspend;
enable-sdio-wakeup;
vmmc-supply = <®_sd1_vmmc>;
status = "okay";
};
refer to "Linux 4.1.15_2.1.0 for i.MX 6SLL " patch
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi Igor,
Thanks for the quick reply.
I have used the kernel linux-imx form the freescale branch imx_4.9.11_1.0.0_ga. It contains the DTS file imx6sll-evk.dts.
The DTS file provides the following SDHC platform settings. The WiFi card is inserted into the SD Slot.
The SD3 slot settings are used as given below.
&usdhc1 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
cd-gpios = <&gpio4 7 GPIO_ACTIVE_LOW>;
wp-gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
keep-power-in-suspend;
enable-sdio-wakeup;
vmmc-supply = <®_sd1_vmmc>;
status = "okay";
};
&usdhc2 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc2>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
vqmmc-supply = <®_sd2_vmmc>;
bus-width = <8>;
no-removable;
status = "okay";
};
&usdhc3 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc3>;
pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
keep-power-in-suspend;
enable-sdio-wakeup;
vmmc-supply = <®_sd3_vmmc>;
status = "okay";
};
Could you point out if something is missing?