mwl8k: Adding support to access BBP registers
authorYogesh Ashok Powar <yogeshp@marvell.com>
Tue, 25 Feb 2014 12:11:58 +0000 (17:41 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 28 Feb 2014 19:33:10 +0000 (14:33 -0500)
Adding AP firmware command to access BBP
regs. This will be used for retrieving
different counters CCA/RX needed for ACS

Signed-off-by: Yogesh Ashok Powar <yogeshp@marvell.com>
Signed-off-by: Nishant Sarmukadam <nishants@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwl8k.c

index 4987c3f942ce7dff2bb599feab7bb1aa26d40f50..6c002f3d91cdce6dd48e4f6e6aad20aefab37fe9 100644 (file)
@@ -396,6 +396,7 @@ static const struct ieee80211_rate mwl8k_rates_50[] = {
 #define MWL8K_CMD_SET_HW_SPEC          0x0004
 #define MWL8K_CMD_MAC_MULTICAST_ADR    0x0010
 #define MWL8K_CMD_GET_STAT             0x0014
+#define MWL8K_CMD_BBP_REG_ACCESS       0x001a
 #define MWL8K_CMD_RADIO_CONTROL                0x001c
 #define MWL8K_CMD_RF_TX_POWER          0x001e
 #define MWL8K_CMD_TX_POWER             0x001f
@@ -2986,6 +2987,47 @@ static int mwl8k_cmd_set_pre_scan(struct ieee80211_hw *hw)
        return rc;
 }
 
+/*
+ * CMD_BBP_REG_ACCESS.
+ */
+struct mwl8k_cmd_bbp_reg_access {
+       struct mwl8k_cmd_pkt header;
+       __le16 action;
+       __le16 offset;
+       u8 value;
+       u8 rsrv[3];
+} __packed;
+
+static int
+mwl8k_cmd_bbp_reg_access(struct ieee80211_hw *hw,
+                        u16 action,
+                        u16 offset,
+                        u8 *value)
+{
+       struct mwl8k_cmd_bbp_reg_access *cmd;
+       int rc;
+
+       cmd = kzalloc(sizeof(*cmd), GFP_KERNEL);
+       if (cmd == NULL)
+               return -ENOMEM;
+
+       cmd->header.code = cpu_to_le16(MWL8K_CMD_BBP_REG_ACCESS);
+       cmd->header.length = cpu_to_le16(sizeof(*cmd));
+       cmd->action = cpu_to_le16(action);
+       cmd->offset = cpu_to_le16(offset);
+
+       rc = mwl8k_post_cmd(hw, &cmd->header);
+
+       if (!rc)
+               *value = cmd->value;
+       else
+               *value = 0;
+
+       kfree(cmd);
+
+       return rc;
+}
+
 /*
  * CMD_SET_POST_SCAN.
  */