[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