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