lkml.org 
[lkml]   [2017]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 5/6] wl1251: Parse and use MAC address from supplied NVS data
    Date
    Pali Rohár <pali.rohar@gmail.com> writes:

    > This patch implements parsing MAC address from NVS data which are sent to
    > wl1251 chip. Calibration NVS data could contain valid MAC address and it
    > will be used instead randomly generated.
    >
    > This patch also move code for requesting NVS data from userspace to driver
    > initialization code to make sure that NVS data will be there at time when
    > permanent MAC address is needed.
    >
    > Calibration NVS data for wl1251 are model specific. Every one device with
    > wl1251 chip should have been calibrated in factory and needs to provide own
    > calibration data.
    >
    > Default example wl1251-nvs.bin data found in linux-firmware repository and
    > contains MAC address 00:00:20:07:03:09. So this MAC address is marked as
    > invalid as it is not real device specific address, just example one.
    >
    > Format of calibration NVS data can be found at:
    > http://notaz.gp2x.de/misc/pnd/wl1251/nvs_map.txt
    >
    > Signed-off-by: Pali Rohár <pali.rohar@gmail.com>

    [...]

    > +static int wl1251_read_nvs_mac(struct wl1251 *wl)
    > +{
    > + u8 mac[ETH_ALEN];
    > + int i;
    > +
    > + if (wl->nvs_len < 0x24)
    > + return -ENODATA;
    > +
    > + /* length is 2 and data address is 0x546c (mask is 0xfffe) */
    > + if (wl->nvs[0x19] != 2 || wl->nvs[0x1a] != 0x6d || wl->nvs[0x1b] != 0x54)
    > + return -EINVAL;
    > +
    > + /* MAC is stored in reverse order */
    > + for (i = 0; i < ETH_ALEN; i++)
    > + mac[i] = wl->nvs[0x1c + ETH_ALEN - i - 1];

    No magic numbers, please. Replace all nvs offsets with proper defines to
    make the code more readable.

    --
    Kalle Valo

    \
     
     \ /
      Last update: 2017-01-27 08:54    [W:3.713 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site