|
|
@@ -0,0 +1,76 @@
|
|
|
+From adf957124a115bdf3e4728e1ea8c70a632648cf0 Mon Sep 17 00:00:00 2001
|
|
|
+From: Coia Prant <[email protected]>
|
|
|
+Date: Fri, 14 Feb 2025 15:49:55 +0800
|
|
|
+Subject: [PATCH] wifi: rt2x00: Add support for loading EEPROM from devicetree
|
|
|
+ embedded data
|
|
|
+
|
|
|
+This patch allows rt2x00 to load eeprom from devicetree embedded data.
|
|
|
+
|
|
|
+Example:
|
|
|
+
|
|
|
+/* load eeprom from embedded data 'eeprom-data' */
|
|
|
+&wmac {
|
|
|
+ ralink,eeprom-data = <0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff
|
|
|
+ 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff 0xffffffff>;
|
|
|
+};
|
|
|
+
|
|
|
+Signed-off-by: Coia Prant <[email protected]>
|
|
|
+---
|
|
|
+ .../net/wireless/ralink/rt2x00/rt2x00eeprom.c | 25 +++++++++++++++++++
|
|
|
+ 1 file changed, 25 insertions(+)
|
|
|
+
|
|
|
+--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
|
|
++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
|
|
+@@ -33,6 +33,27 @@ static void rt2800lib_eeprom_swap(struct
|
|
|
+ rt2x00dev->eeprom[i] = swab16(rt2x00dev->eeprom[i]);
|
|
|
+ }
|
|
|
+
|
|
|
++static int rt2800lib_read_eeprom_data(struct rt2x00_dev *rt2x00dev)
|
|
|
++{
|
|
|
++ struct device_node *np = rt2x00dev->dev->of_node;
|
|
|
++ unsigned int len = rt2x00dev->ops->eeprom_size;
|
|
|
++ const void *data;
|
|
|
++ int size;
|
|
|
++
|
|
|
++ data = of_get_property(np, "ralink,eeprom-data", &size);
|
|
|
++ if (!data)
|
|
|
++ return -ENOENT;
|
|
|
++
|
|
|
++ if (size != len) {
|
|
|
++ dev_err(rt2x00dev->dev, "invalid eeprom size, required: 0x%04x\n", len);
|
|
|
++ return -EINVAL;
|
|
|
++ }
|
|
|
++
|
|
|
++ memcpy(rt2x00dev->eeprom, data, size);
|
|
|
++
|
|
|
++ return 0;
|
|
|
++}
|
|
|
++
|
|
|
+ #if IS_ENABLED(CONFIG_MTD)
|
|
|
+ static int rt2800lib_read_eeprom_mtd(struct rt2x00_dev *rt2x00dev)
|
|
|
+ {
|
|
|
+@@ -193,6 +214,10 @@ int rt2x00lib_read_eeprom(struct rt2x00_
|
|
|
+ {
|
|
|
+ int ret;
|
|
|
+
|
|
|
++ ret = rt2800lib_read_eeprom_data(rt2x00dev);
|
|
|
++ if (!ret)
|
|
|
++ return 0;
|
|
|
++
|
|
|
+ #if IS_ENABLED(CONFIG_MTD)
|
|
|
+ ret = rt2800lib_read_eeprom_mtd(rt2x00dev);
|
|
|
+ if (!ret)
|