Blame view

include/linux/of_mdio.h 2.98 KB
8bc487d15   Grant Likely   openfirmware: Add...
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   Florian Fainelli   of_mdio: Correct ...
14
  #if IS_ENABLED(CONFIG_OF_MDIO)
8bc487d15   Grant Likely   openfirmware: Add...
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   Dongpo Li   of_mdio: Abstract...
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   Andy Fleming   phylib: Add of_ph...
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   Grant Likely   openfirmware: Add...
27

251060220   David Daney   netdev/of/phy: Ne...
28
  extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np);
a5e4bd991   Arnd Bergmann   of_mdio: select f...
29
  extern int of_phy_register_fixed_link(struct device_node *np);
3f65047c8   Johan Hovold   of_mdio: add help...
30
  extern void of_phy_deregister_fixed_link(struct device_node *np);
a5e4bd991   Arnd Bergmann   of_mdio: select f...
31
  extern bool of_phy_is_fixed_link(struct device_node *np);
251060220   David Daney   netdev/of/phy: Ne...
32

4798a714d   Jon Mason   of_mdio: move of_...
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   Florian Fainelli   of_mdio: Correct ...
57
  #else /* CONFIG_OF_MDIO */
2a5cf8016   Mark Brown   of/mdio: Staticis...
58
  static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
f9dc9ac51   Srinivas Kandagatla   of/mdio: Add dumm...
59
  {
23a456f05   Daniel Mack   net: mdio: of_mdi...
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   Srinivas Kandagatla   of/mdio: Add dumm...
66
  }
2a5cf8016   Mark Brown   of/mdio: Staticis...
67
  static inline struct phy_device *of_phy_find_device(struct device_node *phy_np)
f9dc9ac51   Srinivas Kandagatla   of/mdio: Add dumm...
68
69
70
  {
  	return NULL;
  }
2a5cf8016   Mark Brown   of/mdio: Staticis...
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   Srinivas Kandagatla   of/mdio: Add dumm...
75
76
77
  {
  	return NULL;
  }
b78624125   Dongpo Li   of_mdio: Abstract...
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   Andy Fleming   phylib: Add of_ph...
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   Mark Brown   of/mdio: Staticis...
90
  static inline struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np)
f9dc9ac51   Srinivas Kandagatla   of/mdio: Add dumm...
91
92
93
  {
  	return NULL;
  }
33d673776   Florian Fainelli   of: mdio: export ...
94
95
96
97
98
99
  
  static inline int of_mdio_parse_addr(struct device *dev,
  				     const struct device_node *np)
  {
  	return -ENOSYS;
  }
3be2a49e5   Thomas Petazzoni   of: provide a bin...
100
101
102
103
  static inline int of_phy_register_fixed_link(struct device_node *np)
  {
  	return -ENOSYS;
  }
3f65047c8   Johan Hovold   of_mdio: add help...
104
105
106
  static inline void of_phy_deregister_fixed_link(struct device_node *np)
  {
  }
3be2a49e5   Thomas Petazzoni   of: provide a bin...
107
108
109
110
111
  static inline bool of_phy_is_fixed_link(struct device_node *np)
  {
  	return false;
  }
  #endif
8bc487d15   Grant Likely   openfirmware: Add...
112
  #endif /* __LINUX_OF_MDIO_H */