| 
									
										
										
										
											2009-04-25 12:52:56 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * 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>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | #ifdef CONFIG_OF
 | 
					
						
							| 
									
										
										
										
											2009-04-25 12:52:56 +00:00
										 |  |  | 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); | 
					
						
							| 
									
										
										
										
											2014-01-10 14:28:11 +08:00
										 |  |  | struct phy_device *of_phy_attach(struct net_device *dev, | 
					
						
							|  |  |  | 				 struct device_node *phy_np, u32 flags, | 
					
						
							|  |  |  | 				 phy_interface_t iface); | 
					
						
							| 
									
										
										
										
											2009-04-25 12:52:56 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-02 15:16:37 +00:00
										 |  |  | extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-24 09:34:26 +02:00
										 |  |  | extern void of_mdiobus_link_phydev(struct mii_bus *mdio, | 
					
						
							|  |  |  | 				   struct phy_device *phydev); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | #else /* CONFIG_OF */
 | 
					
						
							| 
									
										
										
										
											2012-10-09 18:33:38 +00:00
										 |  |  | static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2014-05-06 18:52:16 +02:00
										 |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * 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); | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-09 18:33:38 +00:00
										 |  |  | static inline struct phy_device *of_phy_find_device(struct device_node *phy_np) | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	return NULL; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-09 18:33:38 +00:00
										 |  |  | 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) | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	return NULL; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-10 14:28:11 +08:00
										 |  |  | 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; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-09 18:33:38 +00:00
										 |  |  | static inline struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np) | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | { | 
					
						
							|  |  |  | 	return NULL; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2014-05-24 09:34:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static inline void of_mdiobus_link_phydev(struct mii_bus *mdio, | 
					
						
							|  |  |  | 					  struct phy_device *phydev) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2012-08-24 01:58:59 +00:00
										 |  |  | #endif /* CONFIG_OF */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-16 16:14:05 +02:00
										 |  |  | #if defined(CONFIG_OF) && defined(CONFIG_FIXED_PHY)
 | 
					
						
							|  |  |  | extern int of_phy_register_fixed_link(struct device_node *np); | 
					
						
							|  |  |  | extern bool of_phy_is_fixed_link(struct device_node *np); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | static inline int of_phy_register_fixed_link(struct device_node *np) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return -ENOSYS; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | static inline bool of_phy_is_fixed_link(struct device_node *np) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return false; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-25 12:52:56 +00:00
										 |  |  | #endif /* __LINUX_OF_MDIO_H */
 |