#ifndef SFP_H
#define SFP_H

#include <linux/ethtool.h>
#include <linux/sfp.h>

struct sfp;

struct sfp_socket_ops {
	void (*start)(struct sfp *sfp);
	void (*stop)(struct sfp *sfp);
	int (*module_info)(struct sfp *sfp, struct ethtool_modinfo *modinfo);
	int (*module_eeprom)(struct sfp *sfp, struct ethtool_eeprom *ee,
			     u8 *data);
};

int sfp_add_phy(struct sfp_bus *bus, struct phy_device *phydev);
void sfp_remove_phy(struct sfp_bus *bus);
void sfp_link_up(struct sfp_bus *bus);
void sfp_link_down(struct sfp_bus *bus);
int sfp_module_insert(struct sfp_bus *bus, const struct sfp_eeprom_id *id);
void sfp_module_remove(struct sfp_bus *bus);
int sfp_link_configure(struct sfp_bus *bus, const struct sfp_eeprom_id *id);
struct sfp_bus *sfp_register_socket(struct device *dev, struct sfp *sfp,
				    const struct sfp_socket_ops *ops);
void sfp_unregister_socket(struct sfp_bus *bus);

#endif
