From 812692db171c4a8451fb92953fc82dde5bede69c Mon Sep 17 00:00:00 2001 From: Lorenzo Bianconi Date: Wed, 27 Nov 2019 16:46:33 +0200 Subject: [PATCH] mt76: eeprom: add support for big endian eeprom partition mt76x0e users reported some devices (e.g TP-Link Archer VR200v) have been flashed with big endian radio partition. Add the possibility to specify eeprom endianness using big-endian dts property and in case covert eeprom data in little endian Tested-by: Kevin Schmidt Signed-off-by: Lorenzo Bianconi Signed-off-by: Felix Fietkau --- eeprom.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/eeprom.c b/eeprom.c index 4847ed52..831e1e1b 100644 --- a/eeprom.c +++ b/eeprom.c @@ -64,6 +64,16 @@ mt76_get_of_eeprom(struct mt76_dev *dev, int len) goto out_put_node; } + if (of_property_read_bool(dev->dev->of_node, "big-endian")) { + u8 *data = (u8 *)dev->eeprom.data; + int i; + + /* convert eeprom data in Little Endian */ + for (i = 0; i < round_down(len, 2); i += 2) + put_unaligned_le16(get_unaligned_be16(&data[i]), + &data[i]); + } + out_put_node: of_node_put(np); return ret;