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