Re: wl1251 NVS calibration data format

Pali Rohár
2016-12-17T11:14:55Z

[-- Attachment #1: Type: Text/Plain, Size: 2326 bytes --]

On Saturday 17 December 2016 10:37:05 Sebastian Reichel wrote:
> Hi,
>
> On Fri, Dec 16, 2016 at 12:01:48PM +0100, Pali Rohár wrote:
> > Hi! Do you know format of wl1251 NVS calibration data file?
> >
> > I found that there is tool for changing NVS file for wl1271 and
> > newer chips (so not for wl1251!) at:
> > https://github.com/gxk/ti-utils
> >
> > And wl1271 has in NVS data already place for MAC address. And in
> > wlcore (for wl1271 and newer) there is really kernel code which is
> > doing something with MAC address in NVS, see:
> > https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tre
> > e/drivers/net/wireless/ti/wlcore/boot.c#n352
> >
> > So... I would like to know if in wl1251 NVS calibration file is
> > also some place for MAC address or not.
> >
> > Default wl1251 NVS calibration file is available in linux-firmware:
> > https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmwar
> > e.git/tree/ti-connectivity/wl1251-nvs.bin
>
> Pandora people [0] have a description of the format at [1].
>
> [0] https://pandorawiki.org/WiFi
> [1] http://notaz.gp2x.de/misc/pnd/wl1251/nvs_map.txt

Thank you very very much!

I tried to search for something, but I have not find anything.

In that description is something about STA mac address:

01a 6d //STA_ADDR_L Register Address. (STA MAC Address)
01b 54 //
01c 00 //STA_ADDR_L Register
01d 00 //
01e 32 //
01f 28 //
020 00 //STA_ADDR_H Register Data.

STA would be abbreviation for station and so it should be really set to
mac address of that chip?

If yes, that could allow us to set permanent MAC address at time when
loading & sending NVS calibration data... Exactly same as wl1271 and new
drivers are working.

I will try to play with driver if it is really truth!

I already looked into original TI's multiplatform HAL driver for wl1251
chip (big mess) and found there that there is wl1251 command to read mac
address from chip. It could be done by this wl1251 function:

wl1251_cmd_interrogate(wl, DOT11_STATION_ID, mac, sizeof(*mac))

(same id as for setting permanent mac address, but opposite to read it)