net: rfkill-wlan: fix read wifi mac address failed
authorzzc <zzc@rock-chips.com>
Wed, 2 Aug 2017 01:43:56 +0000 (09:43 +0800)
committerzzc <zzc@rock-chips.com>
Thu, 3 Aug 2017 06:45:58 +0000 (14:45 +0800)
Change-Id: I4eea5e32a063bca45671c8a70d48b26bb2e7bd44
Signed-off-by: zzc <zzc@rock-chips.com>
drivers/soc/rockchip/rk_vendor_storage.c
include/linux/soc/rockchip/rk_vendor_storage.h
net/rfkill/rfkill-wlan.c

index 759f0282baf0b4486df3b9235750d088e5610934..0ff5a09b4fbf9bfd752ed944e216917ff222a735 100644 (file)
@@ -38,3 +38,11 @@ int rk_vendor_register(void *read, void *write)
        return -1;
 }
 EXPORT_SYMBOL(rk_vendor_register);
+
+bool is_rk_vendor_ready(void)
+{
+       if (_vendor_read && _vendor_write)
+               return true;
+       return false;
+}
+EXPORT_SYMBOL(is_rk_vendor_ready);
index 0bd4a5eb67f9a14621d8b535279ed5ff6bd6fa1f..609974a5648adeb6eb1133d4ff044ebd35ce5015 100644 (file)
@@ -19,5 +19,6 @@
 int rk_vendor_read(u32 id, void *pbuf, u32 size);
 int rk_vendor_write(u32 id, void *pbuf, u32 size);
 int rk_vendor_register(void *read, void *write);
+bool is_rk_vendor_ready(void);
 
 #endif
index 814010a0c457a87f6b530cb071522498d2f5e343..66accd5f84f24829dbef63647f6c5343489a56f5 100644 (file)
@@ -454,7 +454,14 @@ u8 wifi_custom_mac_addr[6] = {0,0,0,0,0,0};
 static int get_wifi_addr_vendor(unsigned char *addr)
 {
        int ret;
+       int count = 5;
 
+       while (count-- > 0) {
+               if (is_rk_vendor_ready())
+                       break;
+               /* sleep 500ms wait rk vendor driver ready */
+               msleep(500);
+       }
        ret = rk_vendor_read(WIFI_MAC_ID, addr, 6);
        if (ret != 6 || is_zero_ether_addr(addr)) {
                LOG("%s: rk_vendor_read wifi mac address failed (%d)\n",