From 5e8555e3ea324daaf0e38422bcba48c4df33a0d9 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Tue, 07 Nov 2023 06:17:58 +0000
Subject: [PATCH] gmac read mac form eeprom

---
 kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c    |    2 +-
 kernel/include/linux/platform_device.h                   |    4 ++++
 kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |    3 ++-
 kernel/include/linux/device.h                            |   14 ++++++++++++++
 4 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
index 0d967a3..9f87f16 100644
--- a/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
+++ b/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
@@ -2565,7 +2565,7 @@
 		.of_match_table = rk_gmac_dwmac_match,
 	},
 };
-module_platform_driver(rk_gmac_dwmac_driver);
+module_platform_driver1(rk_gmac_dwmac_driver);
 
 MODULE_AUTHOR("Chen-Zhi (Roger Chen) <roger.chen@rock-chips.com>");
 MODULE_DESCRIPTION("Rockchip RK3288 DWMAC specific glue layer");
diff --git a/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 0511062..2fe73f6 100644
--- a/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2159,7 +2159,8 @@
  */
 static void stmmac_check_ether_addr(struct stmmac_priv *priv)
 {
-	if (!is_valid_ether_addr(priv->dev->dev_addr)) {
+//	if (!is_valid_ether_addr(priv->dev->dev_addr)) {
+	if(1) {
 		stmmac_get_umac_addr(priv, priv->hw, priv->dev->dev_addr, 0);
 		if (likely(priv->plat->get_eth_addr))
 			priv->plat->get_eth_addr(priv->plat->bsp_priv,
diff --git a/kernel/include/linux/device.h b/kernel/include/linux/device.h
index d91fe50..41d9bd7 100644
--- a/kernel/include/linux/device.h
+++ b/kernel/include/linux/device.h
@@ -1711,6 +1711,20 @@
 } \
 module_exit(__driver##_exit);
 
+
+	
+#define module_driver1(__driver, __register, __unregister, ...) \
+static int __init __driver##_init(void) \
+{ \
+        return __register(&(__driver) , ##__VA_ARGS__); \
+} \
+arch_initcall(__driver##_init); \
+static void __exit __driver##_exit(void) \
+{ \
+        __unregister(&(__driver) , ##__VA_ARGS__); \
+} \
+module_exit(__driver##_exit);
+
 /**
  * builtin_driver() - Helper macro for drivers that don't do anything
  * special in init and have no exit. This eliminates some boilerplate.
diff --git a/kernel/include/linux/platform_device.h b/kernel/include/linux/platform_device.h
index 1de7ea6..67d1bca 100644
--- a/kernel/include/linux/platform_device.h
+++ b/kernel/include/linux/platform_device.h
@@ -234,6 +234,10 @@
 	module_driver(__platform_driver, platform_driver_register, \
 			platform_driver_unregister)
 
+#define module_platform_driver1(__platform_driver) \
+       module_driver1(__platform_driver, platform_driver_register, \
+                       platform_driver_unregister)
+
 /* builtin_platform_driver() - Helper macro for builtin drivers that
  * don't do anything special in driver init.  This eliminates some
  * boilerplate.  Each driver may only use this macro once, and

--
Gitblit v1.6.2