hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/include/linux/of_mdio.h
....@@ -1,36 +1,41 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * OF helpers for the MDIO (Ethernet PHY) API
34 *
45 * Copyright (c) 2009 Secret Lab Technologies, Ltd.
5
- *
6
- * This file is released under the GPLv2
76 */
87
98 #ifndef __LINUX_OF_MDIO_H
109 #define __LINUX_OF_MDIO_H
1110
11
+#include <linux/device.h>
1212 #include <linux/phy.h>
1313 #include <linux/of.h>
1414
1515 #if IS_ENABLED(CONFIG_OF_MDIO)
16
-extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np);
17
-extern struct phy_device *of_phy_find_device(struct device_node *phy_np);
18
-extern struct phy_device *of_phy_connect(struct net_device *dev,
19
- struct device_node *phy_np,
20
- void (*hndlr)(struct net_device *),
21
- u32 flags, phy_interface_t iface);
22
-extern struct phy_device *
16
+bool of_mdiobus_child_is_phy(struct device_node *child);
17
+int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np);
18
+int devm_of_mdiobus_register(struct device *dev, struct mii_bus *mdio,
19
+ struct device_node *np);
20
+struct mdio_device *of_mdio_find_device(struct device_node *np);
21
+struct phy_device *of_phy_find_device(struct device_node *phy_np);
22
+struct phy_device *
23
+of_phy_connect(struct net_device *dev, struct device_node *phy_np,
24
+ void (*hndlr)(struct net_device *), u32 flags,
25
+ phy_interface_t iface);
26
+struct phy_device *
2327 of_phy_get_and_connect(struct net_device *dev, struct device_node *np,
2428 void (*hndlr)(struct net_device *));
25
-struct phy_device *of_phy_attach(struct net_device *dev,
26
- struct device_node *phy_np, u32 flags,
27
- phy_interface_t iface);
29
+struct phy_device *
30
+of_phy_attach(struct net_device *dev, struct device_node *phy_np,
31
+ u32 flags, phy_interface_t iface);
2832
29
-extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np);
30
-extern int of_phy_register_fixed_link(struct device_node *np);
31
-extern void of_phy_deregister_fixed_link(struct device_node *np);
32
-extern bool of_phy_is_fixed_link(struct device_node *np);
33
-
33
+struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np);
34
+int of_phy_register_fixed_link(struct device_node *np);
35
+void of_phy_deregister_fixed_link(struct device_node *np);
36
+bool of_phy_is_fixed_link(struct device_node *np);
37
+int of_mdiobus_phy_device_register(struct mii_bus *mdio, struct phy_device *phy,
38
+ struct device_node *child, u32 addr);
3439
3540 static inline int of_mdio_parse_addr(struct device *dev,
3641 const struct device_node *np)
....@@ -55,6 +60,11 @@
5560 }
5661
5762 #else /* CONFIG_OF_MDIO */
63
+static inline bool of_mdiobus_child_is_phy(struct device_node *child)
64
+{
65
+ return false;
66
+}
67
+
5868 static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
5969 {
6070 /*
....@@ -63,6 +73,18 @@
6373 */
6474
6575 return mdiobus_register(mdio);
76
+}
77
+
78
+static inline int devm_of_mdiobus_register(struct device *dev,
79
+ struct mii_bus *mdio,
80
+ struct device_node *np)
81
+{
82
+ return devm_mdiobus_register(dev, mdio);
83
+}
84
+
85
+static inline struct mdio_device *of_mdio_find_device(struct device_node *np)
86
+{
87
+ return NULL;
6688 }
6789
6890 static inline struct phy_device *of_phy_find_device(struct device_node *phy_np)
....@@ -113,6 +135,13 @@
113135 {
114136 return false;
115137 }
138
+
139
+static inline int of_mdiobus_phy_device_register(struct mii_bus *mdio,
140
+ struct phy_device *phy,
141
+ struct device_node *child, u32 addr)
142
+{
143
+ return -ENOSYS;
144
+}
116145 #endif
117146
118147