iwmc3200wifi: Update wireless_mode with eeprom values
The iwmc3200wifi eeprom contains information about the available PHYs on
the chip. We should update our wireless_mode setting and profile according
to it.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
diff --git a/drivers/net/wireless/iwmc3200wifi/eeprom.c b/drivers/net/wireless/iwmc3200wifi/eeprom.c
index c574f58..8091421 100644
--- a/drivers/net/wireless/iwmc3200wifi/eeprom.c
+++ b/drivers/net/wireless/iwmc3200wifi/eeprom.c
@@ -176,6 +176,26 @@
return 0;
}
+u32 iwm_eeprom_wireless_mode(struct iwm_priv *iwm)
+{
+ u16 sku_cap;
+ u32 wireless_mode = 0;
+
+ sku_cap = *((u16 *)iwm_eeprom_access(iwm, IWM_EEPROM_SKU_CAP));
+
+ if (sku_cap & IWM_EEPROM_SKU_CAP_BAND_24GHZ)
+ wireless_mode |= WIRELESS_MODE_11G;
+
+ if (sku_cap & IWM_EEPROM_SKU_CAP_BAND_52GHZ)
+ wireless_mode |= WIRELESS_MODE_11A;
+
+ if (sku_cap & IWM_EEPROM_SKU_CAP_11N_ENABLE)
+ wireless_mode |= WIRELESS_MODE_11N;
+
+ return wireless_mode;
+}
+
+
int iwm_eeprom_init(struct iwm_priv *iwm)
{
int i, ret = 0;