wil6210: use OEM MAC address from OTP
authorDedy Lansky <dlansky@codeaurora.org>
Thu, 28 Feb 2019 09:34:54 +0000 (11:34 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 3 Apr 2019 12:34:57 +0000 (15:34 +0300)
In addition to existing MAC address field in OTP, new field added for
OEM MAC address.
wil6210 gives precedence to the new OEM MAC address and will use it if
its valid.

Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wil6210/main.c
drivers/net/wireless/ath/wil6210/wil6210.h

index 6a6bfb3b25ca1a82b67fd9601f4377521e25c7b7..b69d9a21e618e21170832c39909a9e50e5bfe62a 100644 (file)
@@ -1413,13 +1413,22 @@ static int wil_get_otp_info(struct wil6210_priv *wil)
        u8 mac[8];
        int mac_addr;
 
-       if (wil->hw_version >= HW_VER_TALYN_MB)
-               mac_addr = RGF_OTP_MAC_TALYN_MB;
-       else
-               mac_addr = RGF_OTP_MAC;
+       /* OEM MAC has precedence */
+       mac_addr = RGF_OTP_OEM_MAC;
+       wil_memcpy_fromio_32(mac, wil->csr + HOSTADDR(mac_addr), sizeof(mac));
+
+       if (is_valid_ether_addr(mac)) {
+               wil_info(wil, "using OEM MAC %pM\n", mac);
+       } else {
+               if (wil->hw_version >= HW_VER_TALYN_MB)
+                       mac_addr = RGF_OTP_MAC_TALYN_MB;
+               else
+                       mac_addr = RGF_OTP_MAC;
+
+               wil_memcpy_fromio_32(mac, wil->csr + HOSTADDR(mac_addr),
+                                    sizeof(mac));
+       }
 
-       wil_memcpy_fromio_32(mac, wil->csr + HOSTADDR(mac_addr),
-                            sizeof(mac));
        if (!is_valid_ether_addr(mac)) {
                wil_err(wil, "Invalid MAC %pM\n", mac);
                return -EINVAL;
index de724666857f8c94e9abc865c572e4e86dab29d2..9d7e02e6c3aa96a6b7320a43c60252c329cc36b3 100644 (file)
@@ -367,6 +367,7 @@ struct RGF_ICR {
        #define REVISION_ID_SPARROW_D0  (0x3)
 
 #define RGF_OTP_MAC_TALYN_MB           (0x8a0304)
+#define RGF_OTP_OEM_MAC                        (0x8a0334)
 #define RGF_OTP_MAC                    (0x8a0620)
 
 /* Talyn-MB */