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

Mobile Dev mobiledev at msn.com
Tue Aug 26 05:10:50 PDT 2014






> Date: Mon, 25 Aug 2014 08:59:46 -0700
> From: eric.nelson at boundarydevices.com
> To: mobiledev at msn.com; meta-freescale at yoctoproject.org
> Subject: Re: [meta-freescale] WL12xx Wi-Fi on 3.10.17_1.0.0_ga release
> 
> 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?

My name is Barry.

> 
> >  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.

Which 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".
> 

I diffed the two trees again and pulled in the rest of the patches that looked applicable (http://pastebin.com/2dELkd4z).  The rest appear to be video, hdmi, and rfkill related.  The rfkill looked like it was just for Bluetooth so I left it out for the moment.

> > 
> >     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.

I am using the freescale kernel and trying to pull Boundary's changes in.  Our board is based on the SabreSD and I don't have a Nitrogen board.

> 
> >
> > <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.

After applying my new patch, I can usually bring the interface up and down without issue.  Sometimes I still get this crash/recovery though.  If I just run 'iw wlan0 scan' I get no results.

> 
> Regards,
> 
> 
> Eric

Thank you,
Barry

 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/meta-freescale/attachments/20140826/797fdc15/attachment-0001.html>


More information about the meta-freescale mailing list