All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Ioana Ciornei <ciorneiioana@gmail.com>
Cc: davem@davemloft.net, kuba@kernel.org, hkallweit1@gmail.com,
	netdev@vger.kernel.org, Grant Likely <grant.likely@arm.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Jeremy Linton <jeremy.linton@arm.com>,
	Andrew Lunn <andrew@lunn.ch>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Marcin Wojtas <mw@semihalf.com>,
	Pieter Jansen Van Vuuren <pieter.jansenvv@bamboosystems.io>,
	Jon <jon@solid-run.com>, Saravana Kannan <saravanak@google.com>,
	Randy Dunlap <rdunlap@infradead.org>,
	calvin.johnson@oss.nxp.com,
	Cristi Sovaiala <cristian.sovaiala@nxp.com>,
	Florin Laurentiu Chiculita <florinlaurentiu.chiculita@nxp.com>,
	Madalin Bucur <madalin.bucur@nxp.com>,
	linux-arm-kernel@lists.infradead.org,
	Diana Madalina Craciun <diana.craciun@nxp.com>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux.cj@gmail.com, Laurentiu Tudor <laurentiu.tudor@nxp.com>,
	Len Brown <lenb@kernel.org>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	Ioana Ciornei <ioana.ciornei@nxp.com>
Subject: Re: [PATCH net-next v9 13/15] net: phylink: introduce phylink_fwnode_phy_connect()
Date: Fri, 11 Jun 2021 12:17:50 +0100	[thread overview]
Message-ID: <20210611111750.GH22278@shell.armlinux.org.uk> (raw)
In-Reply-To: <20210611105401.270673-14-ciorneiioana@gmail.com>

On Fri, Jun 11, 2021 at 01:53:59PM +0300, Ioana Ciornei wrote:
> From: Calvin Johnson <calvin.johnson@oss.nxp.com>
> 
> Define phylink_fwnode_phy_connect() to connect phy specified by
> a fwnode to a phylink instance.
> 
> Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com>
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> Acked-by: Grant Likely <grant.likely@arm.com>

Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Thanks.

> ---
> 
> Changes in v9: None
> Changes in v8: None
> Changes in v7: None
> Changes in v6:
> - remove OF check for fixed-link
> 
> Changes in v5: None
> Changes in v4:
> - call phy_device_free() before returning
> 
> Changes in v3: None
> Changes in v2: None
> 
> 
> 
>  drivers/net/phy/phylink.c | 54 +++++++++++++++++++++++++++++++++++++++
>  include/linux/phylink.h   |  3 +++
>  2 files changed, 57 insertions(+)
> 
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 96d8e88b4e46..9cc0f69faafe 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -5,6 +5,7 @@
>   *
>   * Copyright (C) 2015 Russell King
>   */
> +#include <linux/acpi.h>
>  #include <linux/ethtool.h>
>  #include <linux/export.h>
>  #include <linux/gpio/consumer.h>
> @@ -1125,6 +1126,59 @@ int phylink_of_phy_connect(struct phylink *pl, struct device_node *dn,
>  }
>  EXPORT_SYMBOL_GPL(phylink_of_phy_connect);
>  
> +/**
> + * phylink_fwnode_phy_connect() - connect the PHY specified in the fwnode.
> + * @pl: a pointer to a &struct phylink returned from phylink_create()
> + * @fwnode: a pointer to a &struct fwnode_handle.
> + * @flags: PHY-specific flags to communicate to the PHY device driver
> + *
> + * Connect the phy specified @fwnode to the phylink instance specified
> + * by @pl.
> + *
> + * Returns 0 on success or a negative errno.
> + */
> +int phylink_fwnode_phy_connect(struct phylink *pl,
> +			       struct fwnode_handle *fwnode,
> +			       u32 flags)
> +{
> +	struct fwnode_handle *phy_fwnode;
> +	struct phy_device *phy_dev;
> +	int ret;
> +
> +	/* Fixed links and 802.3z are handled without needing a PHY */
> +	if (pl->cfg_link_an_mode == MLO_AN_FIXED ||
> +	    (pl->cfg_link_an_mode == MLO_AN_INBAND &&
> +	     phy_interface_mode_is_8023z(pl->link_interface)))
> +		return 0;
> +
> +	phy_fwnode = fwnode_get_phy_node(fwnode);
> +	if (IS_ERR(phy_fwnode)) {
> +		if (pl->cfg_link_an_mode == MLO_AN_PHY)
> +			return -ENODEV;
> +		return 0;
> +	}
> +
> +	phy_dev = fwnode_phy_find_device(phy_fwnode);
> +	/* We're done with the phy_node handle */
> +	fwnode_handle_put(phy_fwnode);
> +	if (!phy_dev)
> +		return -ENODEV;
> +
> +	ret = phy_attach_direct(pl->netdev, phy_dev, flags,
> +				pl->link_interface);
> +	if (ret) {
> +		phy_device_free(phy_dev);
> +		return ret;
> +	}
> +
> +	ret = phylink_bringup_phy(pl, phy_dev, pl->link_config.interface);
> +	if (ret)
> +		phy_detach(phy_dev);
> +
> +	return ret;
> +}
> +EXPORT_SYMBOL_GPL(phylink_fwnode_phy_connect);
> +
>  /**
>   * phylink_disconnect_phy() - disconnect any PHY attached to the phylink
>   *   instance.
> diff --git a/include/linux/phylink.h b/include/linux/phylink.h
> index fd2acfd9b597..afb3ded0b691 100644
> --- a/include/linux/phylink.h
> +++ b/include/linux/phylink.h
> @@ -441,6 +441,9 @@ void phylink_destroy(struct phylink *);
>  
>  int phylink_connect_phy(struct phylink *, struct phy_device *);
>  int phylink_of_phy_connect(struct phylink *, struct device_node *, u32 flags);
> +int phylink_fwnode_phy_connect(struct phylink *pl,
> +			       struct fwnode_handle *fwnode,
> +			       u32 flags);
>  void phylink_disconnect_phy(struct phylink *);
>  
>  void phylink_mac_change(struct phylink *, bool up);
> -- 
> 2.31.1
> 
> 

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

WARNING: multiple messages have this Message-ID (diff)
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Ioana Ciornei <ciorneiioana@gmail.com>
Cc: davem@davemloft.net, kuba@kernel.org, hkallweit1@gmail.com,
	netdev@vger.kernel.org, Grant Likely <grant.likely@arm.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Jeremy Linton <jeremy.linton@arm.com>,
	Andrew Lunn <andrew@lunn.ch>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Marcin Wojtas <mw@semihalf.com>,
	Pieter Jansen Van Vuuren <pieter.jansenvv@bamboosystems.io>,
	Jon <jon@solid-run.com>, Saravana Kannan <saravanak@google.com>,
	Randy Dunlap <rdunlap@infradead.org>,
	calvin.johnson@oss.nxp.com,
	Cristi Sovaiala <cristian.sovaiala@nxp.com>,
	Florin Laurentiu Chiculita <florinlaurentiu.chiculita@nxp.com>,
	Madalin Bucur <madalin.bucur@nxp.com>,
	linux-arm-kernel@lists.infradead.org,
	Diana Madalina Craciun <diana.craciun@nxp.com>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux.cj@gmail.com, Laurentiu Tudor <laurentiu.tudor@nxp.com>,
	Len Brown <lenb@kernel.org>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	Ioana Ciornei <ioana.ciornei@nxp.com>
Subject: Re: [PATCH net-next v9 13/15] net: phylink: introduce phylink_fwnode_phy_connect()
Date: Fri, 11 Jun 2021 12:17:50 +0100	[thread overview]
Message-ID: <20210611111750.GH22278@shell.armlinux.org.uk> (raw)
In-Reply-To: <20210611105401.270673-14-ciorneiioana@gmail.com>

On Fri, Jun 11, 2021 at 01:53:59PM +0300, Ioana Ciornei wrote:
> From: Calvin Johnson <calvin.johnson@oss.nxp.com>
> 
> Define phylink_fwnode_phy_connect() to connect phy specified by
> a fwnode to a phylink instance.
> 
> Signed-off-by: Calvin Johnson <calvin.johnson@oss.nxp.com>
> Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
> Acked-by: Grant Likely <grant.likely@arm.com>

Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Thanks.

> ---
> 
> Changes in v9: None
> Changes in v8: None
> Changes in v7: None
> Changes in v6:
> - remove OF check for fixed-link
> 
> Changes in v5: None
> Changes in v4:
> - call phy_device_free() before returning
> 
> Changes in v3: None
> Changes in v2: None
> 
> 
> 
>  drivers/net/phy/phylink.c | 54 +++++++++++++++++++++++++++++++++++++++
>  include/linux/phylink.h   |  3 +++
>  2 files changed, 57 insertions(+)
> 
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 96d8e88b4e46..9cc0f69faafe 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -5,6 +5,7 @@
>   *
>   * Copyright (C) 2015 Russell King
>   */
> +#include <linux/acpi.h>
>  #include <linux/ethtool.h>
>  #include <linux/export.h>
>  #include <linux/gpio/consumer.h>
> @@ -1125,6 +1126,59 @@ int phylink_of_phy_connect(struct phylink *pl, struct device_node *dn,
>  }
>  EXPORT_SYMBOL_GPL(phylink_of_phy_connect);
>  
> +/**
> + * phylink_fwnode_phy_connect() - connect the PHY specified in the fwnode.
> + * @pl: a pointer to a &struct phylink returned from phylink_create()
> + * @fwnode: a pointer to a &struct fwnode_handle.
> + * @flags: PHY-specific flags to communicate to the PHY device driver
> + *
> + * Connect the phy specified @fwnode to the phylink instance specified
> + * by @pl.
> + *
> + * Returns 0 on success or a negative errno.
> + */
> +int phylink_fwnode_phy_connect(struct phylink *pl,
> +			       struct fwnode_handle *fwnode,
> +			       u32 flags)
> +{
> +	struct fwnode_handle *phy_fwnode;
> +	struct phy_device *phy_dev;
> +	int ret;
> +
> +	/* Fixed links and 802.3z are handled without needing a PHY */
> +	if (pl->cfg_link_an_mode == MLO_AN_FIXED ||
> +	    (pl->cfg_link_an_mode == MLO_AN_INBAND &&
> +	     phy_interface_mode_is_8023z(pl->link_interface)))
> +		return 0;
> +
> +	phy_fwnode = fwnode_get_phy_node(fwnode);
> +	if (IS_ERR(phy_fwnode)) {
> +		if (pl->cfg_link_an_mode == MLO_AN_PHY)
> +			return -ENODEV;
> +		return 0;
> +	}
> +
> +	phy_dev = fwnode_phy_find_device(phy_fwnode);
> +	/* We're done with the phy_node handle */
> +	fwnode_handle_put(phy_fwnode);
> +	if (!phy_dev)
> +		return -ENODEV;
> +
> +	ret = phy_attach_direct(pl->netdev, phy_dev, flags,
> +				pl->link_interface);
> +	if (ret) {
> +		phy_device_free(phy_dev);
> +		return ret;
> +	}
> +
> +	ret = phylink_bringup_phy(pl, phy_dev, pl->link_config.interface);
> +	if (ret)
> +		phy_detach(phy_dev);
> +
> +	return ret;
> +}
> +EXPORT_SYMBOL_GPL(phylink_fwnode_phy_connect);
> +
>  /**
>   * phylink_disconnect_phy() - disconnect any PHY attached to the phylink
>   *   instance.
> diff --git a/include/linux/phylink.h b/include/linux/phylink.h
> index fd2acfd9b597..afb3ded0b691 100644
> --- a/include/linux/phylink.h
> +++ b/include/linux/phylink.h
> @@ -441,6 +441,9 @@ void phylink_destroy(struct phylink *);
>  
>  int phylink_connect_phy(struct phylink *, struct phy_device *);
>  int phylink_of_phy_connect(struct phylink *, struct device_node *, u32 flags);
> +int phylink_fwnode_phy_connect(struct phylink *pl,
> +			       struct fwnode_handle *fwnode,
> +			       u32 flags);
>  void phylink_disconnect_phy(struct phylink *);
>  
>  void phylink_mac_change(struct phylink *, bool up);
> -- 
> 2.31.1
> 
> 

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-06-11 11:18 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-11 10:53 [PATCH net-next v9 00/15] ACPI support for dpaa2 driver Ioana Ciornei
2021-06-11 10:53 ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 01/15] Documentation: ACPI: DSD: Document MDIO PHY Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 02/15] net: phy: Introduce fwnode_mdio_find_device() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 11:20   ` Andy Shevchenko
2021-06-11 11:20     ` Andy Shevchenko
2021-06-11 10:53 ` [PATCH net-next v9 03/15] net: phy: Introduce phy related fwnode functions Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 11:26   ` Andy Shevchenko
2021-06-11 11:26     ` Andy Shevchenko
2021-06-11 11:40     ` Rafael J. Wysocki
2021-06-11 11:40       ` Rafael J. Wysocki
2021-06-11 12:08       ` Russell King (Oracle)
2021-06-11 12:08         ` Russell King (Oracle)
2021-06-11 12:31         ` Rafael J. Wysocki
2021-06-11 12:31           ` Rafael J. Wysocki
2021-06-11 10:53 ` [PATCH net-next v9 04/15] of: mdio: Refactor of_phy_find_device() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 11:28   ` Andy Shevchenko
2021-06-11 11:28     ` Andy Shevchenko
2021-06-11 11:30     ` Andy Shevchenko
2021-06-11 11:30       ` Andy Shevchenko
2021-06-11 11:35       ` Russell King (Oracle)
2021-06-11 11:35         ` Russell King (Oracle)
2021-06-11 10:53 ` [PATCH net-next v9 05/15] net: phy: Introduce fwnode_get_phy_id() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 06/15] of: mdio: Refactor of_get_phy_id() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 07/15] net: mii_timestamper: check NULL in unregister_mii_timestamper() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 08/15] net: mdiobus: Introduce fwnode_mdiobus_register_phy() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-15 20:15   ` andy
2021-06-11 10:53 ` [PATCH net-next v9 09/15] of: mdio: Refactor of_mdiobus_register_phy() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 10/15] ACPI: utils: Introduce acpi_get_local_address() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 11/15] net: mdio: Add ACPI support code for mdio Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 12/15] net/fsl: Use [acpi|of]_mdiobus_register Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 10:53 ` [PATCH net-next v9 13/15] net: phylink: introduce phylink_fwnode_phy_connect() Ioana Ciornei
2021-06-11 10:53   ` Ioana Ciornei
2021-06-11 11:17   ` Russell King (Oracle) [this message]
2021-06-11 11:17     ` Russell King (Oracle)
2021-06-15 20:18   ` andy
2021-06-11 10:54 ` [PATCH net-next v9 14/15] net: phylink: Refactor phylink_of_phy_connect() Ioana Ciornei
2021-06-11 10:54   ` Ioana Ciornei
2021-06-11 11:18   ` Russell King (Oracle)
2021-06-11 11:18     ` Russell King (Oracle)
2021-06-11 10:54 ` [PATCH net-next v9 15/15] net: dpaa2-mac: Add ACPI support for DPAA2 MAC driver Ioana Ciornei
2021-06-11 10:54   ` Ioana Ciornei
2021-06-11 20:20 ` [PATCH net-next v9 00/15] ACPI support for dpaa2 driver patchwork-bot+netdevbpf
2021-06-11 20:20   ` patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210611111750.GH22278@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=andrew@lunn.ch \
    --cc=andy.shevchenko@gmail.com \
    --cc=calvin.johnson@oss.nxp.com \
    --cc=ciorneiioana@gmail.com \
    --cc=cristian.sovaiala@nxp.com \
    --cc=davem@davemloft.net \
    --cc=diana.craciun@nxp.com \
    --cc=f.fainelli@gmail.com \
    --cc=florinlaurentiu.chiculita@nxp.com \
    --cc=grant.likely@arm.com \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=hkallweit1@gmail.com \
    --cc=ioana.ciornei@nxp.com \
    --cc=jeremy.linton@arm.com \
    --cc=jon@solid-run.com \
    --cc=kuba@kernel.org \
    --cc=laurentiu.tudor@nxp.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux.cj@gmail.com \
    --cc=madalin.bucur@nxp.com \
    --cc=mw@semihalf.com \
    --cc=netdev@vger.kernel.org \
    --cc=pieter.jansenvv@bamboosystems.io \
    --cc=rafael@kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=rjw@rjwysocki.net \
    --cc=saravanak@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.