AnsweredAssumed Answered

wl18xx and iMX6

Question asked by Tamas Selmeci on Nov 18, 2014
Latest reply on Feb 5, 2016 by Tomokazu Miyazaki



We've got an Engicam iCoreM6D module which is equipped with iMX6Dual@800 MHz. Engicam has provided a linux-3.0.35 kernel, which is patched to run on this module. This kernel is obviously based on the original 3.0.35 released by Freescale for the iMX6 processors. Furthermore, we have a custom 'baseboard' in which the processor module fits. This board has a TI WL1835 wlan chip which is wired to SD2, since it has an SDIO communication interface. My task is to bring the wlan up.


3.0.35 doesn't contain any driver for WL18xx, but later kernels do. If I chose a newer kernel, even a version which is supported by Freescale in Yocto (3.10?), I'd still have to add support for iCoreM6D module before the kernel would run normally. This is what I want to avoid.


Instead, I've found the 'backports' package having a wl12xx/wl18xx driver. I could successfully compile it against my 3.0.35 kernel, but further work must be done before the wlan chip begins working. I've added 'struct platform_device' and other structures, and the driver really gets inited, but I'm far away from the finish. Now I have to make the wl18xx driver somehow use the kernel's MMC/SDHC functions to communicate with the chip. There are function pointers to be filled (struct wl1271_if_operations), the driver just calls these functions that are doing the SDIO magic behind the scenes. Currently I'm a bit lost how to make the SD2 enter SDIO mode, what to do with the WLAN IRQ (wired to a GPIO) etc. Does anybody have experience with this? Can anybody help me pushing iMX6's SDHC#2 into SDIO mode?


Is there anywhere on the net a driver for wl18xx for 3.0.35?


Thanks, regards,