浏览代码

ath6kl: add firmware IE for board data address

Board data address can change between firmwares so we need to read that
from the firmware image.

Also fix debug log for the patch address to print the address in hex.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Kalle Valo 14 年之前
父节点
当前提交
03ef0250ae
共有 2 个文件被更改,包括 13 次插入1 次删除
  1. 1 0
      drivers/net/wireless/ath/ath6kl/core.h
  2. 12 1
      drivers/net/wireless/ath/ath6kl/init.c

+ 1 - 0
drivers/net/wireless/ath/ath6kl/core.h

@@ -70,6 +70,7 @@ enum ath6kl_fw_ie_type {
 	ATH6KL_FW_IE_RESERVED_RAM_SIZE = 5,
 	ATH6KL_FW_IE_RESERVED_RAM_SIZE = 5,
 	ATH6KL_FW_IE_CAPABILITIES = 6,
 	ATH6KL_FW_IE_CAPABILITIES = 6,
 	ATH6KL_FW_IE_PATCH_ADDR = 7,
 	ATH6KL_FW_IE_PATCH_ADDR = 7,
+	ATH6KL_FW_IE_BOARD_ADDR = 8,
 };
 };
 
 
 enum ath6kl_fw_capability {
 enum ath6kl_fw_capability {

+ 12 - 1
drivers/net/wireless/ath/ath6kl/init.c

@@ -976,9 +976,20 @@ static int ath6kl_fetch_fw_api2(struct ath6kl *ar)
 			ar->hw.dataset_patch_addr = le32_to_cpup(val);
 			ar->hw.dataset_patch_addr = le32_to_cpup(val);
 
 
 			ath6kl_dbg(ATH6KL_DBG_BOOT,
 			ath6kl_dbg(ATH6KL_DBG_BOOT,
-				   "found patch address ie 0x%d\n",
+				   "found patch address ie 0x%x\n",
 				   ar->hw.dataset_patch_addr);
 				   ar->hw.dataset_patch_addr);
 			break;
 			break;
+		case ATH6KL_FW_IE_BOARD_ADDR:
+			if (ie_len != sizeof(*val))
+				break;
+
+			val = (__le32 *) data;
+			ar->hw.board_addr = le32_to_cpup(val);
+
+			ath6kl_dbg(ATH6KL_DBG_BOOT,
+				   "found board address ie 0x%x\n",
+				   ar->hw.board_addr);
+			break;
 		default:
 		default:
 			ath6kl_dbg(ATH6KL_DBG_BOOT, "Unknown fw ie: %u\n",
 			ath6kl_dbg(ATH6KL_DBG_BOOT, "Unknown fw ie: %u\n",
 				   le32_to_cpup(&hdr->id));
 				   le32_to_cpup(&hdr->id));