Skip to content

Commit

Permalink
mt76: mt7915: move eeprom parsing out of mt7915_mcu_parse_response
Browse files Browse the repository at this point in the history
Use the new mt76_mcu_send_and_get_msg function

Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
Felix Fietkau committed Dec 4, 2020
1 parent ae5ad62 commit 99de49f
Showing 1 changed file with 16 additions and 24 deletions.
40 changes: 16 additions & 24 deletions drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
Original file line number Diff line number Diff line change
Expand Up @@ -215,29 +215,10 @@ mt7915_mcu_get_sta_nss(u16 mcs_map)
return nss - 1;
}

static int
mt7915_mcu_parse_eeprom(struct mt7915_dev *dev, struct sk_buff *skb)
{
struct mt7915_mcu_eeprom_info *res;
u8 *buf;

if (!skb)
return -EINVAL;

skb_pull(skb, sizeof(struct mt7915_mcu_rxd));

res = (struct mt7915_mcu_eeprom_info *)skb->data;
buf = dev->mt76.eeprom.data + le32_to_cpu(res->addr);
memcpy(buf, res->data, 16);

return 0;
}

static int
mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd,
struct sk_buff *skb, int seq)
{
struct mt7915_dev *dev = container_of(mdev, struct mt7915_dev, mt76);
struct mt7915_mcu_rxd *rxd;
int ret = 0;

Expand All @@ -260,10 +241,8 @@ mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd,
skb_pull(skb, sizeof(*rxd) + 4);
ret = le32_to_cpu(*(__le32 *)skb->data);
break;
case MCU_EXT_CMD_EFUSE_ACCESS:
ret = mt7915_mcu_parse_eeprom(dev, skb);
break;
default:
skb_pull(skb, sizeof(struct mt7915_mcu_rxd));
break;
}

Expand Down Expand Up @@ -3247,9 +3226,22 @@ int mt7915_mcu_get_eeprom(struct mt7915_dev *dev, u32 offset)
struct mt7915_mcu_eeprom_info req = {
.addr = cpu_to_le32(round_down(offset, 16)),
};
struct mt7915_mcu_eeprom_info *res;
struct sk_buff *skb;
int ret;
u8 *buf;

return mt76_mcu_send_msg(&dev->mt76, MCU_EXT_CMD_EFUSE_ACCESS, &req,
sizeof(req), true);
ret = mt76_mcu_send_and_get_msg(&dev->mt76, MCU_EXT_CMD_EFUSE_ACCESS, &req,
sizeof(req), true, &skb);
if (ret)
return ret;

res = (struct mt7915_mcu_eeprom_info *)skb->data;
buf = dev->mt76.eeprom.data + le32_to_cpu(res->addr);
memcpy(buf, res->data, 16);
dev_kfree_skb(skb);

return 0;
}

int mt7915_mcu_get_temperature(struct mt7915_dev *dev, int index)
Expand Down

0 comments on commit 99de49f

Please sign in to comment.