Other Parts Discussed in Thread: WL1801, AM3352
This is a report of what we've doing on WiLink - WL1801 integration so far:
- Our hw engineer double checked the hardware design around the WL1801 component and found nothing wrong.
- On the software side, I followed the instructions provided in the wiki and ended up with the following modifications:
- Relevant Kernel CONFIG_'s:
CONFIG_WLAN=y
CONFIG_WLAN_VENDOR_TI=y
CONFIG_WL18XX=m
CONFIG_WLCORE=m
CONFIG_WLCORE_SDIO=m
CONFIG_WILINK_PLATFORM_DATA=y
- Relevant device-tree configuration:
/* as sub-node of cpu node */
wlan_en_regulator: fixedregulator2 {
compatible = "regulator-fixed";
regulator-name = "wlan-en-regulator";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
startup-delay-us = <70000>;
gpio = <&gpio2 1 GPIO_ACTIVE_HIGH>; /* <-- checked (pin V12)*/
enable-active-high;
};
/* as sub-node of am33xx-pinmux node */
mmc0_pins_default: pinmux_mmc0_pins_default {
pinctrl-single,pins = <
0x100 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (G17) mmc0_clk.mmc0_clk */
0x104 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (G18) mmc0_cmd.mmc0_cmd */
0x0fc ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (G16) mmc0_dat0.mmc0_dat0 */
0x0f8 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (G15) mmc0_dat1.mmc0_dat1 */
0x0f4 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (F18) mmc0_dat2.mmc0_dat2 */
0x0f0 ( PIN_INPUT_PULLUP | MUX_MODE0 ) /* (F17) mmc0_dat3.mmc0_dat3 */
>;
};
mmc0_pins_sleep: pinmux_mmc0_pins_sleep {
pinctrl-single,pins = <
0x100 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (G17) mmc0_clk.mmc0_clk */
0x104 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (G18) mmc0_cmd.mmc0_cmd */
0x0fc ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (G16) mmc0_dat0.mmc0_dat0 */
0x0f8 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (G15) mmc0_dat1.mmc0_dat1 */
0x0f4 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (F18) mmc0_dat2.mmc0_dat2 */
0x0f0 ( PIN_INPUT_PULLDOWN | MUX_MODE7 ) /* (F17) mmc0_dat3.mmc0_dat3 */
>;
};
wlan_pins_default: pinmux_wlan_pins_default {
pinctrl-single,pins = <
0x08C ( PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (V12) WLAN_EN gpmc_clk.gpio2[1] */
0x088 ( PIN_INPUT | MUX_MODE7) /* (T13) WLAN_IRQ gpmc_csn3.gpio2[0] */
>;
};
wlan_pins_sleep: pinmux_wlan_pins_sleep {
pinctrl-single,pins = <
0x08C ( PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* (V12) WLAN_EN gpmc_clk.gpio2[1] */
0x088 ( PIN_INPUT | MUX_MODE7) /* (T13) WLAN_IRQ gpmc_csn3.gpio2[0] */
>;
};
/* using mmc0 pins as SDIO. */
&mmc1 {
dmas = <&edma_xbar 12 0 1
&edma_xbar 13 0 2>;
dma-names = "tx", "rx";
status = "okay";
vmmc-supply = <&wlan_en_regulator>;
bus-width = "4";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&mmc0_pins_default &wlan_pins_default>;
pinctrl-1 = <&mmc0_pins_sleep &wlan_pins_sleep>;
ti,non-removable;
ti,needs-special-hs-handling;
cap-power-off-card;
keep-power-in-suspend;
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@0 {
compatible = "ti,wl1801";
reg = <2>;
interrupt-parent = <&gpio2>;
interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
};
};
- wlconf successfully cross-compiled
- wlconf successfully installed in the target board
- the required firmware (wl1271-nvs.bin) was copied to /lib/firmware/ti-connectivity
- the config file generated by wlconf/configure-device.sh was copied to /lib/firmware/ti-connectivity
- parameters asked by configure-device.sh: TI-device= y, Model=1801, SISO=SISO40
- error messages from wl18xx (firmware and config missing) no longer appears, since ti-connectivity was properly populated
- however, wlan0 is not registered
- attempts of modprobe -r wl18xx blocks the console, but no error message is logged (dmesg/syslog); a reboot is needed to unblock the console (!)
- apparently, wl18xx (or some of its friends) is blocked waiting for some king of event that never happens
Let me know if you need more information.
Thanks in advance for your help.