OSDN Git Service

sfp: convert to fwnode
authorRussell King <rmk+kernel@armlinux.org.uk>
Fri, 1 Dec 2017 10:25:03 +0000 (10:25 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 Dec 2017 16:16:19 +0000 (11:16 -0500)
Convert sfp-bus to use fwnode rather than device_node internally, so
we can support more than just device tree firmware.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/phylink.c
drivers/net/phy/sfp-bus.c
include/linux/sfp.h

index 5a1bd48..bca142a 100644 (file)
@@ -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;
index a288590..1356dba 100644 (file)
@@ -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) {
index b6089fe..47ea32d 100644 (file)
@@ -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)
 {