.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
---|
1 | 2 | /* |
---|
2 | 3 | * OF helpers for the MDIO (Ethernet PHY) API |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (c) 2009 Secret Lab Technologies, Ltd. |
---|
5 | | - * |
---|
6 | | - * This file is released under the GPLv2 |
---|
7 | 6 | */ |
---|
8 | 7 | |
---|
9 | 8 | #ifndef __LINUX_OF_MDIO_H |
---|
10 | 9 | #define __LINUX_OF_MDIO_H |
---|
11 | 10 | |
---|
| 11 | +#include <linux/device.h> |
---|
12 | 12 | #include <linux/phy.h> |
---|
13 | 13 | #include <linux/of.h> |
---|
14 | 14 | |
---|
15 | 15 | #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 * |
---|
23 | 27 | of_phy_get_and_connect(struct net_device *dev, struct device_node *np, |
---|
24 | 28 | 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); |
---|
28 | 32 | |
---|
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); |
---|
34 | 39 | |
---|
35 | 40 | static inline int of_mdio_parse_addr(struct device *dev, |
---|
36 | 41 | const struct device_node *np) |
---|
.. | .. |
---|
55 | 60 | } |
---|
56 | 61 | |
---|
57 | 62 | #else /* CONFIG_OF_MDIO */ |
---|
| 63 | +static inline bool of_mdiobus_child_is_phy(struct device_node *child) |
---|
| 64 | +{ |
---|
| 65 | + return false; |
---|
| 66 | +} |
---|
| 67 | + |
---|
58 | 68 | static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) |
---|
59 | 69 | { |
---|
60 | 70 | /* |
---|
.. | .. |
---|
63 | 73 | */ |
---|
64 | 74 | |
---|
65 | 75 | 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; |
---|
66 | 88 | } |
---|
67 | 89 | |
---|
68 | 90 | static inline struct phy_device *of_phy_find_device(struct device_node *phy_np) |
---|
.. | .. |
---|
113 | 135 | { |
---|
114 | 136 | return false; |
---|
115 | 137 | } |
---|
| 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 | +} |
---|
116 | 145 | #endif |
---|
117 | 146 | |
---|
118 | 147 | |
---|