1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __PHY_FIXED_H 3 #define __PHY_FIXED_H 4 5 struct fixed_phy_status { 6 int link; 7 int speed; 8 int duplex; 9 int pause; 10 int asym_pause; 11 }; 12 13 struct device_node; 14 struct gpio_desc; 15 16 #if IS_ENABLED(CONFIG_FIXED_PHY) 17 extern int fixed_phy_change_carrier(struct net_device *dev, bool new_carrier); 18 extern int fixed_phy_add(unsigned int irq, int phy_id, 19 struct fixed_phy_status *status); 20 extern struct phy_device *fixed_phy_register(unsigned int irq, 21 struct fixed_phy_status *status, 22 struct device_node *np); 23 24 extern struct phy_device * 25 fixed_phy_register_with_gpiod(unsigned int irq, 26 struct fixed_phy_status *status, 27 struct gpio_desc *gpiod); 28 29 extern void fixed_phy_unregister(struct phy_device *phydev); 30 extern int fixed_phy_set_link_update(struct phy_device *phydev, 31 int (*link_update)(struct net_device *, 32 struct fixed_phy_status *)); 33 #else 34 static inline int fixed_phy_add(unsigned int irq, int phy_id, 35 struct fixed_phy_status *status) 36 { 37 return -ENODEV; 38 } 39 static inline struct phy_device *fixed_phy_register(unsigned int irq, 40 struct fixed_phy_status *status, 41 struct device_node *np) 42 { 43 return ERR_PTR(-ENODEV); 44 } 45 46 static inline struct phy_device * 47 fixed_phy_register_with_gpiod(unsigned int irq, 48 struct fixed_phy_status *status, 49 struct gpio_desc *gpiod) 50 { 51 return ERR_PTR(-ENODEV); 52 } 53 54 static inline void fixed_phy_unregister(struct phy_device *phydev) 55 { 56 } 57 static inline int fixed_phy_set_link_update(struct phy_device *phydev, 58 int (*link_update)(struct net_device *, 59 struct fixed_phy_status *)) 60 { 61 return -ENODEV; 62 } 63 static inline int fixed_phy_change_carrier(struct net_device *dev, bool new_carrier) 64 { 65 return -EINVAL; 66 } 67 #endif /* CONFIG_FIXED_PHY */ 68 69 #endif /* __PHY_FIXED_H */ 70