1*4882a593Smuzhiyun #ifndef SFP_H 2*4882a593Smuzhiyun #define SFP_H 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #include <linux/ethtool.h> 5*4882a593Smuzhiyun #include <linux/sfp.h> 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun struct sfp; 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun struct sfp_socket_ops { 10*4882a593Smuzhiyun void (*attach)(struct sfp *sfp); 11*4882a593Smuzhiyun void (*detach)(struct sfp *sfp); 12*4882a593Smuzhiyun void (*start)(struct sfp *sfp); 13*4882a593Smuzhiyun void (*stop)(struct sfp *sfp); 14*4882a593Smuzhiyun int (*module_info)(struct sfp *sfp, struct ethtool_modinfo *modinfo); 15*4882a593Smuzhiyun int (*module_eeprom)(struct sfp *sfp, struct ethtool_eeprom *ee, 16*4882a593Smuzhiyun u8 *data); 17*4882a593Smuzhiyun }; 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun int sfp_add_phy(struct sfp_bus *bus, struct phy_device *phydev); 20*4882a593Smuzhiyun void sfp_remove_phy(struct sfp_bus *bus); 21*4882a593Smuzhiyun void sfp_link_up(struct sfp_bus *bus); 22*4882a593Smuzhiyun void sfp_link_down(struct sfp_bus *bus); 23*4882a593Smuzhiyun int sfp_module_insert(struct sfp_bus *bus, const struct sfp_eeprom_id *id); 24*4882a593Smuzhiyun void sfp_module_remove(struct sfp_bus *bus); 25*4882a593Smuzhiyun int sfp_module_start(struct sfp_bus *bus); 26*4882a593Smuzhiyun void sfp_module_stop(struct sfp_bus *bus); 27*4882a593Smuzhiyun int sfp_link_configure(struct sfp_bus *bus, const struct sfp_eeprom_id *id); 28*4882a593Smuzhiyun struct sfp_bus *sfp_register_socket(struct device *dev, struct sfp *sfp, 29*4882a593Smuzhiyun const struct sfp_socket_ops *ops); 30*4882a593Smuzhiyun void sfp_unregister_socket(struct sfp_bus *bus); 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #endif 33