Hi All,
I am working on iMX6q processor and using yocto 1.6.1 with kernel 3.10.17(device tree based), with the wl18xx(1835) wifi module. So for wifi initialization i did changes in imx6qdl-sabresd.dtsi which is included in imx6q-sabresd.dts file.
Pin configuration are:-
4 data pin connected to SD2
wlan_en is always high
wlan_irq is on gpio2_IO07.. (irq number-100)
Below are the changes done by me:
for regulator:-
reg_3p3v: 3p3v {
compatible = "regulator-fixed";
regulator-name = "3p3v";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
wilink_wl_en: tiwi_wlan {
compatible = "regulator-fixed";
regulator-name = "tiwi_wlan";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
startup-delay-us = <70000>;
enable-active-high;
for irq:-
wlan {
/* bogus */
pinctrl-names = "default";
/* ? */
interrupt-parent = <&gpio2>;
interrupts = <07 0x01>;
interrupt-controller;
#interrupt-cells = <2>;
#reg = <0x20>;
/* generic */
compatible = "wlcore";
status = "okay";
/* actual used?! */
irq = <100>;
#board-tcxo-clock = <5>;
board-ref-clock = <4>; /* BOARD reference clock, See /include/linux/wl12xx.h for more info*/
platform-quirks = <1>;
};
for platform data:-
&usdhc2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc2_1>;
bus-width = <4>;
non-removable;
vmmc-supply = <®_3p3v>;
vqmmc-supply = <&wilink_wl_en>;
ocr-limit = <0x80>;
#power-off-card;
#no-1-8-v;
#keep-power-in-suspend;
enable-sdio-wakeup;
status = "okay";
};
Note:- board dts are attached with this post.
After these changes i am getting initialized SDIO card on mmc0 and able to load the wifi module, but getting the error, request irq error, when inserting last module(wl18xx.ko) with the prints which i put in driver(wlcore/main.c).
root@imx6qsabresd:/ko_mod# insmod wlcore.ko
root@imx6qsabresd:/ko_mod# insmod wlcore_sdio.ko
mmc0: Switching to 3.3V signalling voltage failed
root@imx6qsabresd:/ko_mod#
root@imx6qsabresd:/ko_mod# insmod wl18xx.ko
root@imx6qsabresd:/ko_mod# wlcore: wl18xx driver version: ol_r8.a8.04_32
wlcore_nvs_cb: wl->irq: 100, wl->platform_quirks=1 (user print)
wlcore_nvs_cb: irqflags: 1, wl->platform_quirks=1, wl12xx_macro=1 (user print)
wlcore_nvs_cb: pdev->name=wl18xx (user print)
wlcore: ERROR request_irq() failed: -22
I probed the slow_clk, sdio_clk, enable pins, all are coming fine, but not getting wlan_irq.
I am stuck here and confused about the values which i am using in dts are correct or not, mainly my queries are--
1.) what should be the reg value in wlan_irq function in dtsi file. It is required and from where i get the correct value of it. what are the significance of it?
2.) why this request_irq error are coming. There are need some more changes in dtsi file?
3.) Value of platform_quirk should be 1 or something else?
4.)Why i am getting "mmc0: Switching to 3.3V signalling voltage failed" log ?
5.)I required board tcxo clock with board ref clock in wl18xx module?
Please help me and give the solution of my query, if i am missing something else other than this, please tell that too.
Thanks
ALKS
Original Attachment has been moved to: imx6qdl-sabresd.dtsi.zip
I am trying to do something very similar (started with a Cubox-i) and was curious what you did to get this chip working. I have used your dtsi provided here as a starting point but am now stuck. Any guidance would be great.
Adam
I strongly suggest that you contact the manufacturer of the Wifi Device, in order to provide instructions on how to use their driver. Regarding your questions, I think I can answer the number 4.
4.)Why i am getting "mmc0: Switching to 3.3V signalling voltage failed" log ? ANSWER. The device it is requesting to to increase the drive strenght of the pin that you are using in the MMC0 or it is wrongly configure.