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