Dear LSR support,
I have recently successfully ported wl12xx driver to 2.6.32 kernel on AT91.
This time around I have a job to port wl12xx driver to kernel 4.1 (iMX6) which is device tree enabled. I don't yet have the sources but will get them soon.
Could you help me out since there is a lot of misleading information around.
- Is TiWi-BLE SDIO support already in mainline 4.1?
- Does WiLink8 drivers work with WiLink6 (TiWi-BLE)? They seem to support DT mechanism…
- Where do I get Device Tree patches for wl12xx driver?
Any suggestions on how to enable TiWi-BLE on kernel 4.1 and iMX6 platform?
We recommend that you visit the TiWi-BLE Documentation page of our website:
Scroll down on the page and reference the Linux Driver section. Here you will find information for kernel version 3.5 and later. Additionally you will find the steps that we (LSR) have put together for getting the WL12xx driver running in newer kernels. These steps include a link to the AM335X starter kit device tree file and instructions for the four main changes that go into this file.
Edited SupportEngineer (June 13, 2016 17:30:59)
first I would like to thank you for prompt answer. It's very informative and helps a lot.
I still have couple of questions from the text I've read:
The WL12xx drivers are included in newer kernels but each kernel may have a different driver.
If I understood correctly, then kernel 4.1 (iMX6) probably has all the drivers already integrated and my job is only to properly setup device tree (4 changes about mmc, gpio etc…)
This requires that the end user ensure the driver and firmware are correct for the WL12xx.
OK. Probably wl127x-fw-4-*.bin renaming to match strings defined in driver…
If the kernel is lacking device tree support for the driver this patch may help: https://lkml.org/lkml/2014/2/28/60
Probably not needed for us since 4.1 is quite recent…
1) Your understanding is correct. Kernel 4.1 (iMX6) should have all the drivers already integrated and should only require the proper device tree setup (4 changes about mmc, gpio etc…).
2) This requires that the end user ensure the driver and firmware are correct for the WL12xx.
You are correct in your understanding: These firmware are normally distributed as wl127x-fw-4-*.bin, which will need to be renamed to wl127x-fw-5*.bin (to match strings defined in driver). Then this should be placed inside /lib/firmware/ti-connectivity/ to enable the driver to find and load them correctly.
3) You are also correct that Kernel 4.1 should not be lacking device tree support and therefore the patch should not be needed.
While the driver in the newer kernels was developed for WiLink8, it seems to still have support for WiLink6.
Additionally, the guide linked below may be helpful in getting the device tree working with the TiWi-BLE: http://processors.wiki.ti.com/index.php/WL18xx_Platform_Integration_Guide
While this guide is for WiLink8, some of the same ideas should apply.
I can confirm that TiWi-BLE can be easily brought up under iMX6 and fsl kernel 4.1.
It was only a matter of properly configuring Device-Tree and using appropriate FW files.
I still have an open question regarding auto-calibration which doesn't seem to work. On the other hand I can do calibration manually.
LSR do you have an idea why autocalibration doesn't work?
For the calibration steps did you follow the instructions provided on the Documentation tab for the TiWi-BLE?
"After the driver is built and installed on the target system be sure to calibrate each module. Calibration ensures optimum RF performance as well and EMC compliance. If the module is not calibrated it will void all modular certifications. Be sure to use an INI file from the LSR website and follow the calibration instructions. The calibrator utility should have been downloaded and built with the driver script. See here: http://processors.wiki.ti.com/index.php/WL12xx_NLCP_Calibration_Process#Calibration_for_R4_SP2_and_later_.28After_AM-SDK-05.03.00.01.29