mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 14:13:16 +00:00
mac80211: rt2x00: add mtd-eeprom swab function
Most of the lantiq devices with ralink wifi have the EEPROM stored in big endian byte order in flash, but the driver expects the EEPROM to be in little endian. Signed-off-by: Mathias Kresin <dev@kresin.me>
This commit is contained in:
parent
7f235df571
commit
4f7a0601e6
@ -7,8 +7,8 @@ Subject: [PATCH] rt2x00: load eeprom on SoC from a mtd device defines inside
|
|||||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||||
---
|
---
|
||||||
drivers/net/wireless/ralink/rt2x00/Kconfig | 1 +
|
drivers/net/wireless/ralink/rt2x00/Kconfig | 1 +
|
||||||
drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c | 61 +++++++++++++++++++++++
|
drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c | 65 +++++++++++++++++++++++
|
||||||
2 files changed, 62 insertions(+)
|
2 files changed, 66 insertions(+)
|
||||||
|
|
||||||
--- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
--- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||||
+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||||
@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352.
|
Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352.
|
||||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||||
@@ -26,11 +26,69 @@
|
@@ -26,11 +26,73 @@
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
@ -40,7 +40,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
+ static struct firmware mtd_fw;
|
+ static struct firmware mtd_fw;
|
||||||
+ struct device_node *np = rt2x00dev->dev->of_node, *mtd_np = NULL;
|
+ struct device_node *np = rt2x00dev->dev->of_node, *mtd_np = NULL;
|
||||||
+ size_t retlen, len = rt2x00dev->ops->eeprom_size;
|
+ size_t retlen, len = rt2x00dev->ops->eeprom_size;
|
||||||
+ int size, offset = 0;
|
+ int i, size, offset = 0;
|
||||||
+ struct mtd_info *mtd;
|
+ struct mtd_info *mtd;
|
||||||
+ const char *part;
|
+ const char *part;
|
||||||
+ const __be32 *list;
|
+ const __be32 *list;
|
||||||
@ -79,6 +79,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
+ return ret;
|
+ return ret;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ if (of_find_property(np, "ralink,mtd-eeprom-swap", NULL))
|
||||||
|
+ for (i = 0; i < len/sizeof(u16); i++)
|
||||||
|
+ rt2x00dev->eeprom[i] = swab16(rt2x00dev->eeprom[i]);
|
||||||
|
+
|
||||||
+ rt2x00dev->eeprom_file = &mtd_fw;
|
+ rt2x00dev->eeprom_file = &mtd_fw;
|
||||||
+ mtd_fw.size = len;
|
+ mtd_fw.size = len;
|
||||||
+ mtd_fw.data = (const u8 *) rt2x00dev->eeprom;
|
+ mtd_fw.data = (const u8 *) rt2x00dev->eeprom;
|
||||||
@ -92,7 +96,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||||||
static const char *
|
static const char *
|
||||||
rt2x00lib_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev)
|
rt2x00lib_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev)
|
||||||
{
|
{
|
||||||
@@ -58,6 +116,9 @@ static int rt2x00lib_request_eeprom_file
|
@@ -58,6 +120,9 @@ static int rt2x00lib_request_eeprom_file
|
||||||
const char *ee_name;
|
const char *ee_name;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user