Murata 1XK over SDIO breaks suspend to ram

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Murata 1XK over SDIO breaks suspend to ram

517 Views
thehardgamer
Contributor II

Greetings,


We currently have a murata 1XK M.2 module from Embedded Artists wifi+bt module connected to the i.MX8 Mini EVK over SDIO using the microSD M.2 adapter with the default drivers and configurations provided by NXP's BSP, wifi and bluetooth work well but the moment we try to put the imx8 into deep sleep using "echo mem > /sys/power/state", the suspend fails with the following logs:


[ 25.835439] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[ 25.844190] printk: Suspending console(s) (use no_console_suspend to debug)
[ 25.852365] None of the WOWLAN triggers enabled
[ 25.852385] mmc1:0001:1: cannot remain alive while host is suspended
[ 25.852390] PM: dpm_run_callback(): pm_generic_suspend+0x0/0x44 returns -38
[ 25.852413] wlan_sdio mmc1:0001:1: PM: failed to suspend async: error -38
[ 25.852768] PM: Some devices failed to suspend, or early wake event detected

I tried searching for a solution but it seems the only relevant thread is:

https://community.nxp.com/t5/i-MX-Processors/Wi-Fi-SDIO-blocks-the-system-s-Supend-to-RAM/m-p/973164 which also doesn't provide any solution.

The dts currently has the following entry:

&usdhc1 {
pinctrl-names = "default", "state_100mhz", "state_200mhz";
pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_wlan>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>, <&pinctrl_wlan>;
pinctrl-2 = <&pinctrl_usdhc1_200mhz>, <&pinctrl_wlan>;
bus-width = <4>;
keep-power-in-suspend;
non-removable;
wakeup-source;
mmc-pwrseq = <&usdhc1_pwrseq>;
fsl,sdio-async-interrupt-enabled;
status = "okay";

wifi_wake_host {
compatible = "nxp,wifi-wake-host";
interrupt-parent = <&gpio3>;
interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "host-wake";
};
};

 

Labels (1)
0 Kudos
3 Replies

490 Views
Christine_Li
NXP TechSupport
NXP TechSupport

Hi, @thehardgamer 

Just to confirm with you some basic info. Can you please help to reply below queries?

1.As I know, Murata LBEE5CJ1XK  is using our Wi-Fi chipset IW416. In your case, you mentioned that you are using Murata 1XK M.2 module, do you mean this one(LBEE5CJ1XK)?

2.Can you please let me know your Wi-Fi Driver version, FW version and host Linux kernel version?

 

Best regards,

Christine.

0 Kudos

484 Views
thehardgamer
Contributor II

Hello,

Yes, the murata 1xk module is this one https://www.embeddedartists.com/products/1xk-m-2-module/ which is inserted into the m.2 adapter from here https://www.murata.com/en-sg/products/connectivitymodule/wi-fi-bluetooth/overview/lineup/usd-m2-adap... and connected to the sdcard in imx8mm evk.

As for the Wi-Fi Driver ,FW version :

[ 538.718293] wlan: version = SDIW416---16.92.21.p55.3-MM5X16366.p5-GPL-(FP92)

and host Linux kernel version is 5.15.71

0 Kudos

472 Views
Christine_Li
NXP TechSupport
NXP TechSupport

Hi, @thehardgamer 

I tested on my local side with I.MX8MNano and IW416 EVK, it can work fine.

My connection is IW416 EVK connects to uSD ,then insert to the micro-SD card of I.MX8MNano.

 

Here is my dts (Create an imx8mn-evk-usd-wifi.dts if there is no this file in your linux kernel BSP.) info for your reference:

======


/dts-v1/;

#include "imx8mn-evk.dts"

/*
* IW612 wifi chip needs more delay than other wifi chips to complete the host
* interface initialization after power up, otherwise the internal state of
* IW612 may be unstable, resulting in the failure of the SDIO3.0 switch
* voltage.
*/
&reg_usdhc2_vmmc {
startup-delay-us = <20000>;
};

&usdhc2 {
pinctrl-0 = <&pinctrl_usdhc2>;
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
/delete-property/ cd-gpios;
keep-power-in-suspend;
non-removable;
wakeup-source;
fsl,sdio-async-interrupt-enabled;
};

&usdhc1 {
status = "disabled";
/delete-node/ wifi_wake_host;
};

======

Because i.MX8MM and i.MX 8MNano has an default 88W8987 module which is using SDIO interface, so I suggest you disable usdhc1, and use usdhc2 working as SDIO for IW416.

Otherwise, it may load the defaul 88W8987 wifi driver and cause some unexpected error.

 

Please refer to my test results:

========

root@imx8mnevk:~# modprobe moal mod_para=nxp/wifi_mod_para.conf
[ 36.761121] mlan: loading out-of-tree module taints kernel.
[ 36.792026] wlan: Loading MWLAN driver
[ 36.796523] wlan: Register to Bus Driver...
[ 36.801538] vendor=0x02DF device=0x9159 class=0 function=1
[ 36.808089] Attach moal handle ops, card interface type: 0x108
[ 36.814624] SDIW416: init module param from usr cfg
[ 36.819573] card_type: SDIW416, config block: 0
[ 36.824130] cfg80211_wext=0xf
[ 36.827101] max_vir_bss=1
[ 36.829764] cal_data_cfg=none
[ 36.832782] ps_mode = 1
[ 36.835234] auto_ds = 1
[ 36.837707] host_mlme=enable
[ 36.840610] fw_name=nxp/sdiouartiw416_combo_v0.bin
[ 36.845439] SDIO: max_segs=128 max_seg_size=65535
[ 36.850161] rx_work=1 cpu_num=4
[ 36.853339] Attach mlan adapter operations.card_type is 0x108.
[ 36.859840] wlan: Enable TX SG mode
[ 36.863377] wlan: Enable RX SG mode
[ 36.868011] Request firmware: nxp/sdiouartiw416_combo_v0.bin
[ 37.148436] Wlan: FW download over, firmwarelen=534196 downloaded 534196
[ 38.385279] WLAN FW is active
[ 38.388277] on_time is 38384383875
[ 38.419050] fw_cap_info=0x187c4f03, dev_cap_mask=0xffffffff
[ 38.424671] max_p2p_conn = 8, max_sta_conn = 8
[ 38.443504] Register NXP 802.11 Adapter mlan0
[ 38.450911] Register NXP 802.11 Adapter uap0
[ 38.460566] Register NXP 802.11 Adapter wfd0
[ 38.465158] wlan: version = SDIW416---16.92.21.p55.3-MM5X16366.p5-GPL-(FP92)
[ 38.473274] Set REG 0x80002328: 0x13d57 slew_rate=3
[ 38.479284] wlan: Register to Bus Driver Done
[ 38.483767] wlan: Driver loaded successfully
root@imx8mnevk:~# echo mem > /sys/power/state
[ 51.144671] PM: suspend entry (deep)
[ 51.150594] Filesystems sync: 0.002 seconds
[ 51.157518] Freezing user space processes ... (elapsed 0.001 seconds) done.
[ 51.166076] OOM killer disabled.
[ 51.169320] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[ 51.177985] printk: Suspending console(s) (use no_console_suspend to debug)

=========

And I just suspect that the IW416 can works fine on your side? Are you sure you are using IW416, not 88W8987(the default Wi-Fi module located on i.MX8MM)?

Best regards,

Christine.

0 Kudos