wil6210: support future boot loaders
authorVladimir Kondratiev <QCA_vkondrat@QCA.qualcomm.com>
Thu, 30 Jul 2015 10:52:07 +0000 (13:52 +0300)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 6 Aug 2015 06:44:09 +0000 (09:44 +0300)
Boot loader versions as backward compatible,
starting from v1

Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/wil6210/main.c

index d11a147489bfd6c249d1185b8d1736ead1c50d9f..2fb04c51da53f2dd4fd58f7995eee85a1a93dcd9 100644 (file)
@@ -643,37 +643,26 @@ static int wil_get_bl_info(struct wil6210_priv *wil)
        u8 *mac;
        u16 rf_status;
 
-       bl_ver = wil_r(wil, RGF_USER_BL +
-                      offsetof(struct bl_dedicated_registers_v0,
-                               boot_loader_struct_version));
-       switch (bl_ver) {
-       case 0:
-               wil_memcpy_fromio_32(&bl, wil->csr + HOSTADDR(RGF_USER_BL),
-                                    sizeof(bl.bl0));
-               le32_to_cpus(&bl.bl0.boot_loader_ready);
-               le32_to_cpus(&bl.bl0.boot_loader_struct_version);
+       wil_memcpy_fromio_32(&bl, wil->csr + HOSTADDR(RGF_USER_BL),
+                            sizeof(bl));
+       bl_ver = le32_to_cpu(bl.bl0.boot_loader_struct_version);
+       mac = bl.bl0.mac_address;
+
+       if (bl_ver == 0) {
                le32_to_cpus(&bl.bl0.rf_type);
                le32_to_cpus(&bl.bl0.baseband_type);
-               mac = bl.bl0.mac_address;
                rf_status = 0; /* actually, unknown */
                wil_info(wil,
                         "Boot Loader struct v%d: MAC = %pM RF = 0x%08x bband = 0x%08x\n",
                         bl_ver, mac,
                         bl.bl0.rf_type, bl.bl0.baseband_type);
                wil_info(wil, "Boot Loader build unknown for struct v0\n");
-               break;
-       case 1:
-       case 2:
-               wil_memcpy_fromio_32(&bl, wil->csr + HOSTADDR(RGF_USER_BL),
-                                    sizeof(bl.bl1));
-               le32_to_cpus(&bl.bl1.boot_loader_ready);
-               le32_to_cpus(&bl.bl1.boot_loader_struct_version);
+       } else {
                le16_to_cpus(&bl.bl1.rf_type);
                rf_status = le16_to_cpu(bl.bl1.rf_status);
                le32_to_cpus(&bl.bl1.baseband_type);
                le16_to_cpus(&bl.bl1.bl_version_subminor);
                le16_to_cpus(&bl.bl1.bl_version_build);
-               mac = bl.bl1.mac_address;
                wil_info(wil,
                         "Boot Loader struct v%d: MAC = %pM RF = 0x%04x (status 0x%04x) bband = 0x%08x\n",
                         bl_ver, mac,
@@ -682,10 +671,6 @@ static int wil_get_bl_info(struct wil6210_priv *wil)
                wil_info(wil, "Boot Loader build %d.%d.%d.%d\n",
                         bl.bl1.bl_version_major, bl.bl1.bl_version_minor,
                         bl.bl1.bl_version_subminor, bl.bl1.bl_version_build);
-               break;
-       default:
-               wil_err(wil, "BL: unsupported struct version 0x%08x\n", bl_ver);
-               return -EINVAL;
        }
 
        if (!is_valid_ether_addr(mac)) {