[meta-freescale] WL12xx Wi-Fi on 3.10.17_1.0.0_ga release

Eric Nelson eric.nelson at boundarydevices.com
Mon Aug 25 08:59:46 PDT 2014


Hello, ummm... mdev.

On 08/22/2014 04:18 PM, Mobile Dev wrote:
> Apologies for the length...
> 
> I see that [Eric's] nitrogen6x boundary tree has some devicetree patches
> to enable the TI Wi-Fi module.  I am trying to bring it up on our custom
> board and I have a few questions:
> 

Since you're asking for support, do you mind identifying yourself?

>  1. Where did you get the 'calibrate' utility?  There are several repos
>     out there for it.

In general, we've found the calibrate utility to be more or less
useless, and since it's a pretty big pain to get and compile,
we haven't used it in quite a while.

>  2. Did you just use the wlcore/wlcore_sdio/wl12xx drivers in the
>     3.10.17 kernel tree or did you pull anything from
>     backports/compat-wireless/TI?

You can answer that question by checking the log.

>  3. Related, did you add the compat-wireless recipe to your image?
> 

Ditto.

> 
> I have BT working just fine but I am having issues bringing up the Wi-Fi
> side of the card.  The first is getting it to calibrate:
> 
>     root at custom_board:/lib/firmware/ti-connectivity# ll
>     drwxr-xr-x    2 root     root          4096 Aug 22 20:17 ./
>     drwxr-xr-x    4 root     root          4096 Aug 22 20:11 ../
>     -rwxr-x---    1 root     root         50770 Aug 21 16:09
>     TIInit_7.6.15.bts*
>     -rwxr-x---    1 root     root         13290 Aug 21 16:40 TQS_D_1.7.ini*
>     -rwxr-x---    1 root     root         49324 Aug 21 16:16 calibrator*
>     -rwxr-x---    1 root     root           912 Aug 22 20:18 wl1271-nvs.bin*
>     -rwxr-x---    1 root     root        354600 Aug 21 16:23
>     wl127x-fw-5-mr.bin*
>     -rwxr-x---    1 root     root        352588 Aug 21 16:23
>     wl127x-fw-5-plt.bin*
>     -rwxr-x---    1 root     root        370996 Aug 21 16:23
>     wl127x-fw-5-sr.bin*
>     -rwxr-x---    1 root     root           912 Aug 21 16:23 wl127x-nvs.bin*
>     root at custom_board:/lib/firmware/ti-connectivity# lsmod
>     Module                  Size  Used by
>     arc4                    1510  2
>     wl12xx                 44514  0
>     wlcore                141592  1 wl12xx
>     mac80211              226689  2 wl12xx,wlcore
>     cfg80211              178563  2 mac80211,wlcore
>     wlcore_sdio             4381  0
>     cdc_acm                14295  0
>     evbug                   1476  0
>     root at custom_board:/lib/firmware/ti-connectivity# echo 152 >
>     /sys/class/gpio/export
>     root at custom_board:/lib/firmware/ti-connectivity# echo out >
>     /sys/class/gpio/gpio152/direction
>     root at custom_board:/lib/firmware/ti-connectivity# echo 0 >
>     /sys/class/gpio/gpio152/value
>     root at custom_board:/lib/firmware/ti-connectivity# cat
>     /sys/class/gpio/gpio152/value
>     0
>     root at custom_board:/lib/firmware/ti-connectivity# echo 1 >
>     /sys/class/gpio/gpio152/value
>     root at custom_board:/lib/firmware/ti-connectivity# cat
>     /sys/class/gpio/gpio152/value
>     0
>     root at custom_board:/lib/firmware/ti-connectivity# ./calibrator plt
>     calibrate dual
>     wlcore: power up
>     wlcore: firmware booted in PLT mode PLT_ON (PLT 6.3.10.0.133)
>     wlcore: ERROR command complete timeout
>     ------------[ cut here ]------------
>     WARNING: at drivers/net/wireless/ti/wlcore/main.c:790
>     wl12xx_queue_recovery_work+0x5c/0x60 [wlcore]()
>
> <snip>
>
>     ---[ end trace 4ae41c0eeb5b4b0b ]---
>     wlcore: WARNING TEST command failed
>     wlcore: WARNING testmode cmd test failed: -110
>     Fail to calibratewlcore: power down
> 

The primary challenge in use of the WL12xx against any i.MX
device is a quirk in the use of the power-off pin. The WL12xx
driver expects writes to the SDHCI_POWER_CONTROL register
to control the power-off GPIO directly.

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/drivers/mmc/host/sdhci.c?h=imx_3.10.17_1.0.1_ga#n1289

Since the i.MX SDHCI controllers don't do this, we had to add
support for the "power-gpio".

> 
>     Usage:  ./calibrator [options] plt calibrate [<single|dual>]
> 
>     Do calibrate for single or dual band chip
> 
> 
>     Options:
>             --debug         enable netlink debugging
>     root at custom_board:/lib/firmware/ti-connectivity#
> 
> 
> I have tried various combinations of drivers and tools but they all have
> the same error (command complete timeout).  As a test I tried changing
> the <interrupts> node in the wlan section to <23 0x2>
> from IRQ_TYPE_LEVEL_HIGH and the error changes to timeout waiting for
> hardware interrupt so I know it is at least talking.
> 
> Here are the relevant device tree sections:
> 
>
> <snip>
>
>     &usdhc2 {/* uSDHC2, TiWi wl1271 */
> 
>
>	...
> 
>         power-gpio = <&gpio5 24 0>;
> 

Are you using our kernel? Have you validated your source
tree against a Nitrogen6x or Nitrogen6_Max board?

If so, then you should start looking for what's different.

>
> <snip>
> 
> The second issue is that I can't successfully cycle the wlan0 interface
> more than once (ifconfig up, down, up).  When I try to bring it up the
> second time, I get this:
> 
> 
>     root at custom_board:/lib/firmware/ti-connectivity# ifconfig wlan0 up
>     wlcore: ERROR timeout waiting for the hardware to complete
>     initialization
>     wlcore: ERROR timeout waiting for the hardware to complete
>     initialization
>     wlcore: ERROR timeout waiting for the hardware to complete
>     initialization
>     wlcore: ERROR firmware boot failed despite 3 retries
>     ifconfig: SIOCSIFFLAGS: Input/output error
>     root at custom_board:/lib/firmware/ti-connectivity#
> 
> 
> I thought it was caused by this
> (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1258174) so I
> changed the SD clock to add a pullup but it didn't work.
> 

This is the primary symptom of not having our patches in place.

Regards,


Eric


More information about the meta-freescale mailing list