Part Number: WL1837MOD
Other Parts Discussed in Thread: WL1271, WL1835
Tool/software: Linux
I am integrating a wilink8 wifi/BT adapter over SDIO with my imx6 platform. I'm using the drivers in the kernel and my kernel version is 4.1.15. When the sdio bus is brought up I see the driver probe happen but is always errors out with the -12 error code. as seen here:
/soc/aips-bus@02100000/usdhc@02198000: voltage-ranges unspecified
sdhci-esdhc-imx 2198000.usdhc: could not get ultra high speed state, work on normal mode
sdhci-esdhc-imx 2198000.usdhc: assigned as wifi host
sdhci-esdhc-imx 2198000.usdhc: No vmmc regulator found
sdhci-esdhc-imx 2198000.usdhc: No vqmmc regulator found
mmc2: SDHCI controller on 2198000.usdhc [2198000.usdhc] using ADMA
sdhci-esdhc-imx 2198000.usdhc: card claims to support voltages below defined range
mmc2: queuing unknown CIS tuple 0x91 (3 bytes)
mmc2: new high speed SDIO card at address 0001
wl1271_sdio: probe of mmc2:0001:1 failed with error -12
I have traced the cause of the error to the code in sdio.c below:
static int wlcore_probe_of(struct device *dev, int *irq, struct wlcore_platdev_data *pdev_data) { struct device_node *np = dev->of_node; if (!np || !of_match_node(wlcore_sdio_of_match_table, np)) return -ENODATA;
Unlike similar threads its not failing due to the match, it is failing because np is null. Does anyone have any insight to why this would be?
Here is the relevant device tree entry:
&usdhc3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc3_1>;
wifi-host;
/* no-1-8-v; */
keep-power-in-suspend;
enable-sdio-wakeup;
status = "okay";
wlcore: wlcore@0 {
compatible = "ti,wl1837";
interrupt-parent = <&gpio7>;
interrupts = <9 IRQ_TYPE_LEVEL_HIGH>;
status = "okay";
};
};