summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/wil6210
diff options
context:
space:
mode:
authorVladimir Kondratiev <QCA_vkondrat@QCA.qualcomm.com>2015-07-30 13:52:07 +0300
committerKalle Valo <kvalo@qca.qualcomm.com>2015-08-06 09:44:09 +0300
commit19c871ce3ac5f99d4354b0345c7560f6d0f760bd (patch)
tree902da9364879ddf4836fd42a686602cffbe46018 /drivers/net/wireless/ath/wil6210
parent409ead544d747a5e80fdd3626a7fd75d6990a2fb (diff)
wil6210: support future boot loaders
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>
Diffstat (limited to 'drivers/net/wireless/ath/wil6210')
-rw-r--r--drivers/net/wireless/ath/wil6210/main.c29
1 files changed, 7 insertions, 22 deletions
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c
index d11a147489bf..2fb04c51da53 100644
--- a/drivers/net/wireless/ath/wil6210/main.c
+++ b/drivers/net/wireless/ath/wil6210/main.c
@@ -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)) {