mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 09:01:34 +00:00
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: Russell King <rmk+kernel@armlinux.org.uk> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b6e67d6d46
commit
c19bb00070
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user