Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c19bb000 authored by Russell King's avatar Russell King Committed by David S. Miller
Browse files

sfp: convert to fwnode



Convert sfp-bus to use fwnode rather than device_node internally, so
we can support more than just device tree firmware.

Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b6e67d6d
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -499,7 +499,8 @@ static int phylink_register_sfp(struct phylink *pl, struct device_node *np)
	if (!sfp_np)
		return 0;

	pl->sfp_bus = sfp_register_upstream(sfp_np, pl->netdev, pl,
	pl->sfp_bus = sfp_register_upstream(of_fwnode_handle(sfp_np),
					    pl->netdev, pl,
					    &sfp_phylink_ops);
	if (!pl->sfp_bus)
		return -ENOMEM;
+7 −7
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ struct sfp_bus {
	/* private: */
	struct kref kref;
	struct list_head node;
	struct device_node *device_node;
	struct fwnode_handle *fwnode;

	const struct sfp_socket_ops *socket_ops;
	struct device *sfp_dev;
@@ -260,7 +260,7 @@ static const struct sfp_upstream_ops *sfp_get_upstream_ops(struct sfp_bus *bus)
	return bus->registered ? bus->upstream_ops : NULL;
}

static struct sfp_bus *sfp_bus_get(struct device_node *np)
static struct sfp_bus *sfp_bus_get(struct fwnode_handle *fwnode)
{
	struct sfp_bus *sfp, *new, *found = NULL;

@@ -269,7 +269,7 @@ static struct sfp_bus *sfp_bus_get(struct device_node *np)
	mutex_lock(&sfp_mutex);

	list_for_each_entry(sfp, &sfp_buses, node) {
		if (sfp->device_node == np) {
		if (sfp->fwnode == fwnode) {
			kref_get(&sfp->kref);
			found = sfp;
			break;
@@ -278,7 +278,7 @@ static struct sfp_bus *sfp_bus_get(struct device_node *np)

	if (!found && new) {
		kref_init(&new->kref);
		new->device_node = np;
		new->fwnode = fwnode;
		list_add(&new->node, &sfp_buses);
		found = new;
		new = NULL;
@@ -423,11 +423,11 @@ EXPORT_SYMBOL_GPL(sfp_upstream_stop);
 *
 * On error, returns %NULL.
 */
struct sfp_bus *sfp_register_upstream(struct device_node *np,
struct sfp_bus *sfp_register_upstream(struct fwnode_handle *fwnode,
				      struct net_device *ndev, void *upstream,
				      const struct sfp_upstream_ops *ops)
{
	struct sfp_bus *bus = sfp_bus_get(np);
	struct sfp_bus *bus = sfp_bus_get(fwnode);
	int ret = 0;

	if (bus) {
@@ -537,7 +537,7 @@ EXPORT_SYMBOL_GPL(sfp_module_remove);
struct sfp_bus *sfp_register_socket(struct device *dev, struct sfp *sfp,
				    const struct sfp_socket_ops *ops)
{
	struct sfp_bus *bus = sfp_bus_get(dev->of_node);
	struct sfp_bus *bus = sfp_bus_get(dev->fwnode);
	int ret = 0;

	if (bus) {
+4 −3
Original line number Diff line number Diff line
@@ -356,7 +356,7 @@ enum {
	SFP_PAGE			= 0x7f,
};

struct device_node;
struct fwnode_handle;
struct ethtool_eeprom;
struct ethtool_modinfo;
struct net_device;
@@ -397,7 +397,7 @@ int sfp_get_module_eeprom(struct sfp_bus *bus, struct ethtool_eeprom *ee,
			  u8 *data);
void sfp_upstream_start(struct sfp_bus *bus);
void sfp_upstream_stop(struct sfp_bus *bus);
struct sfp_bus *sfp_register_upstream(struct device_node *np,
struct sfp_bus *sfp_register_upstream(struct fwnode_handle *fwnode,
				      struct net_device *ndev, void *upstream,
				      const struct sfp_upstream_ops *ops);
void sfp_unregister_upstream(struct sfp_bus *bus);
@@ -441,7 +441,8 @@ static inline void sfp_upstream_stop(struct sfp_bus *bus)
{
}

static inline struct sfp_bus *sfp_register_upstream(struct device_node *np,
static inline struct sfp_bus *sfp_register_upstream(
	struct fwnode_handle *fwnode,
	struct net_device *ndev, void *upstream,
	const struct sfp_upstream_ops *ops)
{