forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/wireless/mediatek/mt76/eeprom.c
....@@ -1,17 +1,6 @@
1
+// SPDX-License-Identifier: ISC
12 /*
23 * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>
3
- *
4
- * Permission to use, copy, modify, and/or distribute this software for any
5
- * purpose with or without fee is hereby granted, provided that the above
6
- * copyright notice and this permission notice appear in all copies.
7
- *
8
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
154 */
165 #include <linux/of.h>
176 #include <linux/of_net.h>
....@@ -75,6 +64,21 @@
7564 goto out_put_node;
7665 }
7766
67
+ if (of_property_read_bool(dev->dev->of_node, "big-endian")) {
68
+ u8 *data = (u8 *)dev->eeprom.data;
69
+ int i;
70
+
71
+ /* convert eeprom data in Little Endian */
72
+ for (i = 0; i < round_down(len, 2); i += 2)
73
+ put_unaligned_le16(get_unaligned_be16(&data[i]),
74
+ &data[i]);
75
+ }
76
+
77
+#ifdef CONFIG_NL80211_TESTMODE
78
+ dev->test.mtd_name = devm_kstrdup(dev->dev, part, GFP_KERNEL);
79
+ dev->test.mtd_offset = offset;
80
+#endif
81
+
7882 out_put_node:
7983 of_node_put(np);
8084 return ret;
....@@ -88,14 +92,12 @@
8892 {
8993 #ifdef CONFIG_OF
9094 struct device_node *np = dev->dev->of_node;
91
- const u8 *mac;
95
+ const u8 *mac = NULL;
9296
93
- if (!np)
94
- return;
95
-
96
- mac = of_get_mac_address(np);
97
- if (mac)
98
- memcpy(dev->macaddr, mac, ETH_ALEN);
97
+ if (np)
98
+ mac = of_get_mac_address(np);
99
+ if (!IS_ERR_OR_NULL(mac))
100
+ ether_addr_copy(dev->macaddr, mac);
99101 #endif
100102
101103 if (!is_valid_ether_addr(dev->macaddr)) {