Blame view
include/linux/of_mdio.h
2.98 KB
8bc487d15
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/* * OF helpers for the MDIO (Ethernet PHY) API * * Copyright (c) 2009 Secret Lab Technologies, Ltd. * * This file is released under the GPLv2 */ #ifndef __LINUX_OF_MDIO_H #define __LINUX_OF_MDIO_H #include <linux/phy.h> #include <linux/of.h> |
e6e14f63d
|
14 |
#if IS_ENABLED(CONFIG_OF_MDIO) |
8bc487d15
|
15 16 17 18 19 20 |
extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); extern struct phy_device *of_phy_find_device(struct device_node *phy_np); extern struct phy_device *of_phy_connect(struct net_device *dev, struct device_node *phy_np, void (*hndlr)(struct net_device *), u32 flags, phy_interface_t iface); |
b78624125
|
21 22 23 |
extern struct phy_device * of_phy_get_and_connect(struct net_device *dev, struct device_node *np, void (*hndlr)(struct net_device *)); |
7614aba6a
|
24 25 26 |
struct phy_device *of_phy_attach(struct net_device *dev, struct device_node *phy_np, u32 flags, phy_interface_t iface); |
8bc487d15
|
27 |
|
251060220
|
28 |
extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np); |
a5e4bd991
|
29 |
extern int of_phy_register_fixed_link(struct device_node *np); |
3f65047c8
|
30 |
extern void of_phy_deregister_fixed_link(struct device_node *np); |
a5e4bd991
|
31 |
extern bool of_phy_is_fixed_link(struct device_node *np); |
251060220
|
32 |
|
4798a714d
|
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
static inline int of_mdio_parse_addr(struct device *dev, const struct device_node *np) { u32 addr; int ret; ret = of_property_read_u32(np, "reg", &addr); if (ret < 0) { dev_err(dev, "%s has invalid PHY address ", np->full_name); return ret; } /* A PHY must have a reg property in the range [0-31] */ if (addr >= PHY_MAX_ADDR) { dev_err(dev, "%s PHY address %i is too large ", np->full_name, addr); return -EINVAL; } return addr; } |
e6e14f63d
|
57 |
#else /* CONFIG_OF_MDIO */ |
2a5cf8016
|
58 |
static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) |
f9dc9ac51
|
59 |
{ |
23a456f05
|
60 61 62 63 64 65 |
/* * Fall back to the non-DT function to register a bus. * This way, we don't have to keep compat bits around in drivers. */ return mdiobus_register(mdio); |
f9dc9ac51
|
66 |
} |
2a5cf8016
|
67 |
static inline struct phy_device *of_phy_find_device(struct device_node *phy_np) |
f9dc9ac51
|
68 69 70 |
{ return NULL; } |
2a5cf8016
|
71 72 73 74 |
static inline struct phy_device *of_phy_connect(struct net_device *dev, struct device_node *phy_np, void (*hndlr)(struct net_device *), u32 flags, phy_interface_t iface) |
f9dc9ac51
|
75 76 77 |
{ return NULL; } |
b78624125
|
78 79 80 81 82 83 |
static inline struct phy_device * of_phy_get_and_connect(struct net_device *dev, struct device_node *np, void (*hndlr)(struct net_device *)) { return NULL; } |
7614aba6a
|
84 85 86 87 88 89 |
static inline struct phy_device *of_phy_attach(struct net_device *dev, struct device_node *phy_np, u32 flags, phy_interface_t iface) { return NULL; } |
2a5cf8016
|
90 |
static inline struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np) |
f9dc9ac51
|
91 92 93 |
{ return NULL; } |
33d673776
|
94 95 96 97 98 99 |
static inline int of_mdio_parse_addr(struct device *dev, const struct device_node *np) { return -ENOSYS; } |
3be2a49e5
|
100 101 102 103 |
static inline int of_phy_register_fixed_link(struct device_node *np) { return -ENOSYS; } |
3f65047c8
|
104 105 106 |
static inline void of_phy_deregister_fixed_link(struct device_node *np) { } |
3be2a49e5
|
107 108 109 110 111 |
static inline bool of_phy_is_fixed_link(struct device_node *np) { return false; } #endif |
8bc487d15
|
112 |
#endif /* __LINUX_OF_MDIO_H */ |