hc
2023-11-07 5e8555e3ea324daaf0e38422bcba48c4df33a0d9
gmac read mac form eeprom
4 files modified
23 ■■■■■ changed files
kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c 2 ●●● patch | view | raw | blame | history
kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c 3 ●●●● patch | view | raw | blame | history
kernel/include/linux/device.h 14 ●●●●● patch | view | raw | blame | history
kernel/include/linux/platform_device.h 4 ●●●● patch | view | raw | blame | history
kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
....@@ -2565,7 +2565,7 @@
25652565 .of_match_table = rk_gmac_dwmac_match,
25662566 },
25672567 };
2568
-module_platform_driver(rk_gmac_dwmac_driver);
2568
+module_platform_driver1(rk_gmac_dwmac_driver);
25692569
25702570 MODULE_AUTHOR("Chen-Zhi (Roger Chen) <roger.chen@rock-chips.com>");
25712571 MODULE_DESCRIPTION("Rockchip RK3288 DWMAC specific glue layer");
kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
....@@ -2159,7 +2159,8 @@
21592159 */
21602160 static void stmmac_check_ether_addr(struct stmmac_priv *priv)
21612161 {
2162
- if (!is_valid_ether_addr(priv->dev->dev_addr)) {
2162
+// if (!is_valid_ether_addr(priv->dev->dev_addr)) {
2163
+ if(1) {
21632164 stmmac_get_umac_addr(priv, priv->hw, priv->dev->dev_addr, 0);
21642165 if (likely(priv->plat->get_eth_addr))
21652166 priv->plat->get_eth_addr(priv->plat->bsp_priv,
kernel/include/linux/device.h
....@@ -1711,6 +1711,20 @@
17111711 } \
17121712 module_exit(__driver##_exit);
17131713
1714
+
1715
+
1716
+#define module_driver1(__driver, __register, __unregister, ...) \
1717
+static int __init __driver##_init(void) \
1718
+{ \
1719
+ return __register(&(__driver) , ##__VA_ARGS__); \
1720
+} \
1721
+arch_initcall(__driver##_init); \
1722
+static void __exit __driver##_exit(void) \
1723
+{ \
1724
+ __unregister(&(__driver) , ##__VA_ARGS__); \
1725
+} \
1726
+module_exit(__driver##_exit);
1727
+
17141728 /**
17151729 * builtin_driver() - Helper macro for drivers that don't do anything
17161730 * special in init and have no exit. This eliminates some boilerplate.
kernel/include/linux/platform_device.h
....@@ -234,6 +234,10 @@
234234 module_driver(__platform_driver, platform_driver_register, \
235235 platform_driver_unregister)
236236
237
+#define module_platform_driver1(__platform_driver) \
238
+ module_driver1(__platform_driver, platform_driver_register, \
239
+ platform_driver_unregister)
240
+
237241 /* builtin_platform_driver() - Helper macro for builtin drivers that
238242 * don't do anything special in driver init. This eliminates some
239243 * boilerplate. Each driver may only use this macro once, and