lkml.org 
[lkml]   [2021]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[net-next PATCH v3 02/15] net: phy: Introduce fwnode_mdio_find_device()
    Date
    Define fwnode_mdio_find_device() to get a pointer to the
    mdio_device from fwnode passed to the function.

    Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com>
    ---

    Changes in v3: None
    Changes in v2: None

    drivers/net/mdio/of_mdio.c | 11 +----------
    drivers/net/phy/phy_device.c | 23 +++++++++++++++++++++++
    include/linux/phy.h | 6 ++++++
    3 files changed, 30 insertions(+), 10 deletions(-)

    diff --git a/drivers/net/mdio/of_mdio.c b/drivers/net/mdio/of_mdio.c
    index 4daf94bb56a5..7bd33b930116 100644
    --- a/drivers/net/mdio/of_mdio.c
    +++ b/drivers/net/mdio/of_mdio.c
    @@ -347,16 +347,7 @@ EXPORT_SYMBOL(of_mdiobus_register);
    */
    struct mdio_device *of_mdio_find_device(struct device_node *np)
    {
    - struct device *d;
    -
    - if (!np)
    - return NULL;
    -
    - d = bus_find_device_by_of_node(&mdio_bus_type, np);
    - if (!d)
    - return NULL;
    -
    - return to_mdio_device(d);
    + return fwnode_mdio_find_device(of_fwnode_handle(np));
    }
    EXPORT_SYMBOL(of_mdio_find_device);

    diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
    index 8447e56ba572..06e0ddcca8c9 100644
    --- a/drivers/net/phy/phy_device.c
    +++ b/drivers/net/phy/phy_device.c
    @@ -2829,6 +2829,29 @@ static bool phy_drv_supports_irq(struct phy_driver *phydrv)
    return phydrv->config_intr && phydrv->handle_interrupt;
    }

    +/**
    + * fwnode_mdio_find_device - Given a fwnode, find the mdio_device
    + * @np: pointer to the mdio_device's fwnode
    + *
    + * If successful, returns a pointer to the mdio_device with the embedded
    + * struct device refcount incremented by one, or NULL on failure.
    + * The caller should call put_device() on the mdio_device after its use
    + */
    +struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode)
    +{
    + struct device *d;
    +
    + if (!fwnode)
    + return NULL;
    +
    + d = bus_find_device_by_fwnode(&mdio_bus_type, fwnode);
    + if (!d)
    + return NULL;
    +
    + return to_mdio_device(d);
    +}
    +EXPORT_SYMBOL(fwnode_mdio_find_device);
    +
    /**
    * phy_probe - probe and init a PHY device
    * @dev: device to probe and init
    diff --git a/include/linux/phy.h b/include/linux/phy.h
    index 9effb511acde..ce3987e4e615 100644
    --- a/include/linux/phy.h
    +++ b/include/linux/phy.h
    @@ -1342,11 +1342,17 @@ struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id,
    bool is_c45,
    struct phy_c45_device_ids *c45_ids);
    #if IS_ENABLED(CONFIG_PHYLIB)
    +struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode);
    struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45);
    int phy_device_register(struct phy_device *phy);
    void phy_device_free(struct phy_device *phydev);
    #else
    static inline
    +struct mdio_device *fwnode_mdio_find_device(struct fwnode_handle *fwnode)
    +{
    + return 0;
    +}
    +static inline
    struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45)
    {
    return NULL;
    --
    2.17.1
    \
     
     \ /
      Last update: 2021-01-12 14:45    [W:7.479 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site