Hello TI,
We have a custom board using a am335x micro that has a wl1831 chip on the mmc2 bus for wifi, (there is an eMMc on mmc1 and sD on mmc0). We are able to connect to mobile hotspots and get ip addresses through the Android desktop system settings UI, so we are past the platform integration phase.
Now we are having trouble calibrating the chip and would like your direction. The calibration wiki (http://processors.wiki.ti.com/index.php/WL18xx_Calibration_Process) instructs users to run the wlconf utility on their device's wl18xx-conf.bin file, but out drivers do not use this firmware file - instead they use wl18xx-fw-mc.bin
Here is some dmesg output from our device for when we run the 'insmod wlcore_sdio.ko' and 'netcfg wlan0 up' command with the BOOT_DEBUG flag set:
<4>[ 593.514923] wlcore_sdio driver registered - wl18xx version
<4>[ 593.584808] WLAN - wl12xx_set_power wlan_enable HIGH!!
<4>[ 593.630493] wlcore - probe wl1271_probe called wl18xx version
<4>[ 593.630615] wlcore - probe wl1271_probe called wl18xx version
<4>[ 593.630615] wlcore wl1271_sdio probe (wl18xx) wlan_data
<4>[ 593.630645] wlan_data.irq: 191
<4>[ 593.630645] wlcore - sdio_driver: chip family is: wl18xx
<6>[ 593.630920] wlcore:
<6>[ 593.630950]
<6>[ 593.630950]
<6>[ 593.630950] wlcore: location: hardware/ti/wlan/mac80211/compat_wl18xx/drivers/net/wireless/ti/wl18xx/main.c
<6>[ 593.630950]
<6>[ 593.630950] wlcore: Probe: platform_device bound to platform_driver - wl18xx_driver
<6>[ 593.630981]
<6>[ 593.635284] wlcore: wl18xx compared some stuff
<6>[ 593.635284]
<6>[ 593.635314] wlcore: wl18xx set some stuff
<6>[ 593.635314]
<6>[ 593.635314] wlcore: wl18xx about to write to wl18xx
<6>[ 593.635314]
<4>[ 593.725799] WLAN - wl12xx_set_power wlan_enable HIGH!!
<4>[ 594.047424] WLAN - wl12xx_set_power wlan_enable LOW!!
<7>[ 594.048675] wlcore: chip id 0x6030111 (185x PG20)
<7>[ 594.050292] wlcore: could not get nvs file ti-connectivity/wl1271-nvs.bin: -2
<6>[ 594.052734] wlcore: loaded
<6>[ 594.052795] wlcore: driver version: rowboat-jb-am335x-4.1.2-244-gcf99001-dirty
<6>[ 594.052795] wlcore: timestamp: Fri Feb 27 11:24:53 2015
<4>[ 631.815856] WLAN - wl12xx_set_power wlan_enable HIGH!!
<7>[ 632.066467] wlcore: booting firmware ti-connectivity/wl18xx-fw-mc.bin
<7>[ 632.138488] wlcore: clock freq 5 (13, 120, 0, 0, spit)
<6>[ 632.138519] wlcore: clock freq 5 (13, 120, 0, 0, spit)
<7>[ 632.140167] wlcore: chip id 0x6030111
<7>[ 632.140686] wlcore: firmware chunks to be uploaded: 15
<7>[ 632.140716] wlcore: chunk 14 addr 0x0 len 73424
<7>[ 632.140716] wlcore: starting firmware upload
<7>[ 632.140716] wlcore: fw_data_len 73424 chunk_size 16384
<7>[ 632.141143] wlcore: uploading fw chunk 0xd54b500c to 0x0
<7>[ 632.142761] wlcore: uploading fw chunk 0xd54b900c to 0x4000
<7>[ 632.144348] wlcore: uploading fw chunk 0xd54bd00c to 0x8000
<7>[ 632.145965] wlcore: uploading fw chunk 0xd54c100c to 0xc000
<7>[ 632.147583] wlcore: uploading fw last chunk (7888 B) 0xd54c500c to 0x10000
<7>[ 632.148376] wlcore: chunk 13 addr 0x100000 len 131068
<7>[ 632.148376] wlcore: starting firmware upload
<7>[ 632.148376] wlcore: fw_data_len 131068 chunk_size 16384
<7>[ 632.149536] wlcore: uploading fw chunk 0xd54c6ee4 to 0x100000
<7>[ 632.151397] wlcore: uploading fw chunk 0xd54caee4 to 0x104000
<7>[ 632.153228] wlcore: uploading fw chunk 0xd54ceee4 to 0x108000
<7>[ 632.155059] wlcore: uploading fw chunk 0xd54d2ee4 to 0x10c000
<7>[ 632.156890] wlcore: uploading fw chunk 0xd54d6ee4 to 0x110000
<7>[ 632.158721] wlcore: uploading fw chunk 0xd54daee4 to 0x114000
<7>[ 632.160583] wlcore: uploading fw chunk 0xd54deee4 to 0x118000
<7>[ 632.162170] wlcore: uploading fw last chunk (16380 B) 0xd54e2ee4 to 0x11c000
<7>[ 632.163726] wlcore: chunk 12 addr 0x20400000 len 65172
<7>[ 632.163726] wlcore: starting firmware upload
<7>[ 632.163726] wlcore: fw_data_len 65172 chunk_size 16384
<7>[ 632.164306] wlcore: uploading fw chunk 0xd54e6ee8 to 0x20400000
<7>[ 632.166198] wlcore: uploading fw chunk 0xd54eaee8 to 0x20404000
<7>[ 632.168090] wlcore: uploading fw chunk 0xd54eeee8 to 0x20408000
<7>[ 632.169708] wlcore: uploading fw last chunk (16020 B) 0xd54f2ee8 to 0x2040c000
<7>[ 632.171234] wlcore: chunk 11 addr 0xb00000 len 480
<7>[ 632.171234] wlcore: starting firmware upload
<7>[ 632.171234] wlcore: fw_data_len 480 chunk_size 16384
<7>[ 632.171539] wlcore: uploading fw last chunk (480 B) 0xd54f6d84 to 0xb00000
<7>[ 632.171661] wlcore: chunk 10 addr 0xb0fe40 len 7628
<7>[ 632.171691] wlcore: starting firmware upload
<7>[ 632.171691] wlcore: fw_data_len 7628 chunk_size 16384
<7>[ 632.172027] wlcore: uploading fw last chunk (7628 B) 0xd54f6f6c to 0xb0fe40
<7>[ 632.172790] wlcore: chunk 9 addr 0x80900000 len 59368
<7>[ 632.172821] wlcore: starting firmware upload
<7>[ 632.172821] wlcore: fw_data_len 59368 chunk_size 16384
<7>[ 632.173187] wlcore: uploading fw chunk 0xd54f8d40 to 0x80900000
<7>[ 632.174743] wlcore: uploading fw chunk 0xd54fcd40 to 0x80904000
<7>[ 632.176330] wlcore: uploading fw chunk 0xd5500d40 to 0x80908000
<7>[ 632.177886] wlcore: uploading fw last chunk (10216 B) 0xd5504d40 to 0x8090c000
<7>[ 632.178894] wlcore: chunk 8 addr 0x80920000 len 28376
<7>[ 632.178924] wlcore: starting firmware upload
<7>[ 632.178924] wlcore: fw_data_len 28376 chunk_size 16384
<7>[ 632.179321] wlcore: uploading fw chunk 0xd5507530 to 0x80920000
<7>[ 632.180877] wlcore: uploading fw last chunk (11992 B) 0xd550b530 to 0x80924000
<7>[ 632.182037] wlcore: chunk 7 addr 0x80940000 len 6144
<7>[ 632.182067] wlcore: starting firmware upload
<7>[ 632.182067] wlcore: fw_data_len 6144 chunk_size 16384
<7>[ 632.182403] wlcore: uploading fw last chunk (6144 B) 0xd550e410 to 0x80940000
<7>[ 632.183013] wlcore: chunk 6 addr 0x80944000 len 6144
<7>[ 632.183013] wlcore: starting firmware upload
<7>[ 632.183013] wlcore: fw_data_len 6144 chunk_size 16384
<7>[ 632.183349] wlcore: uploading fw last chunk (6144 B) 0xd550fc18 to 0x80944000
<7>[ 632.183959] wlcore: chunk 5 addr 0x80948000 len 6144
<7>[ 632.183959] wlcore: starting firmware upload
<7>[ 632.183959] wlcore: fw_data_len 6144 chunk_size 16384
<7>[ 632.184295] wlcore: uploading fw last chunk (6144 B) 0xd5511420 to 0x80948000
<7>[ 632.184906] wlcore: chunk 4 addr 0x8094c000 len 6144
<7>[ 632.184906] wlcore: starting firmware upload
<7>[ 632.184906] wlcore: fw_data_len 6144 chunk_size 16384
<7>[ 632.185241] wlcore: uploading fw last chunk (6144 B) 0xd5512c28 to 0x8094c000
<7>[ 632.185852] wlcore: chunk 3 addr 0x80950000 len 8192
<7>[ 632.185852] wlcore: starting firmware upload
<7>[ 632.185852] wlcore: fw_data_len 8192 chunk_size 16384
<7>[ 632.186248] wlcore: uploading fw last chunk (8192 B) 0xd5514430 to 0x80950000
<7>[ 632.187042] wlcore: chunk 2 addr 0x80960000 len 18316
<7>[ 632.187042] wlcore: starting firmware upload
<7>[ 632.187042] wlcore: fw_data_len 18316 chunk_size 16384
<7>[ 632.187408] wlcore: uploading fw chunk 0xd5516438 to 0x80960000
<7>[ 632.188934] wlcore: uploading fw last chunk (1932 B) 0xd551a438 to 0x80964000
<7>[ 632.189208] wlcore: chunk 1 addr 0x80953000 len 1536
<7>[ 632.189208] wlcore: starting firmware upload
<7>[ 632.189208] wlcore: fw_data_len 1536 chunk_size 16384
<7>[ 632.189514] wlcore: uploading fw last chunk (1536 B) 0xd551abcc to 0x80953000
<7>[ 632.189727] wlcore: chunk 0 addr 0x80958000 len 24576
<7>[ 632.189727] wlcore: starting firmware upload
<7>[ 632.189727] wlcore: fw_data_len 24576 chunk_size 16384
<7>[ 632.190093] wlcore: uploading fw chunk 0xd551b1d4 to 0x80958000
<7>[ 632.191650] wlcore: uploading fw last chunk (8192 B) 0xd551f1d4 to 0x8095c000
<7>[ 632.193267] wlcore: chip id after firmware boot: 0x6030111
<4>[ 632.209716] intr & WL1271_ACX_INTR_INIT_COMPLETE
<4>[ 632.209777] The current REG_INTERRUPT_NO_CLEAR is:
<4>[ 632.209777] 0x000000000002
<4>[ 632.209777] and (intr & WL1271_ACX_INTR_INIT_COMPLETE) is: 2
<6>[ 632.209960] wlcore: PHY firmware version: Rev 8.2.0.0.146
<7>[ 632.238952] wlcore: rx start cmd channel 1
<7>[ 632.239257] wlcore: tx start cmd channel 1
<6>[ 632.240173] wlcore: firmware booted (Rev 8.4.0.0.26)
<6>[ 632.256652] ADDRCONF(NETDEV_UP): wlan0: link is not ready
Also - our version of wlconf is not able to parse the wl18xx-fw-mc.bin file:
root@android:/system/etc/firmware/ti-connectivity # wlconf -i wl18xx-fw-mc.bin -g
>>incompatible binary file
>>expected 0x10e100ca 0x00050005
>>got 0x0f000000 0x00000000
Our code for the wl18xx drivers and utilities came from the pre-packaged sources of the TI-Android-JB-4.2.2-DevKit-4.1.1 software development kit (which can be found at downloads.ti.com/sitara_android/esd/TI_Android_DevKit/TI_Android_JB_4_2_2_DevKit_4_1_1/exports/TI_Android_JB_4.2.2_DevKit_4.1.1.bin) This is the main code base that we started with (The Linux kernel version is 3.2).
We did not get any version info from the following files:
1) strings wlcore_sdio.ko | grep 'ol_r8\|Build-' -m1
2) strings wlcore.ko | grep 'ol_r8\|Build-' -m1
3) strings wl18xx.ko | grep 'ol_r8\|Build-' -m1
4) strings wl18xx-conf.bin | grep Rev
We did get the following version numbers from 'strings wl18xx-fw-mc.bin | grep Rev'
FRev 8.4.0.0.26
FRev 8.2.0.0.146
My general feeling is that we need to update the versions of either the drivers or the utilities, or both. If so then what versions do we need, where do we get the source code, and what are the build instructions?
Thanks for your support!
-Jake