[U-Boot] [PATCH v3 3/7] net: mvpp2: mark phy as invalid in case of missing appropriate driver
Ramon Fried
rfried.dev at gmail.com
Wed Aug 7 17:52:59 UTC 2019
On Tue, Aug 6, 2019 at 6:52 PM <nhed+uboot at starry.com> wrote:
>
> From: Grzegorz Jaszczyk <jaz at semihalf.com>
>
> If the phy doesn't match with any existing u-boot drivers, the phy
> framework will connect it to the generic one which uid ==
> 0xffffffff. In this case, act as if the phy wouldn't be declared in
> dts. Otherwise, in case of 3310 (for which the driver doesn't exist)
> the link is marked as always down. Removing phy entry from dts in case
> of 3310 is not a good option because it is required for the
> phy_fw_down procedure.
>
> This patch fixes the issue with the link always down on MCBIN board.
>
> Signed-off-by: Grzegorz Jaszczyk <jaz at semihalf.com>
> Reviewed-by: Igal Liberman <igall at marvell.com>
> Tested-by: Igal Liberman <igall at marvell.com>
> ---
> drivers/net/mvpp2.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/drivers/net/mvpp2.c b/drivers/net/mvpp2.c
> index b6dfed5c54..fae7090121 100644
> --- a/drivers/net/mvpp2.c
> +++ b/drivers/net/mvpp2.c
> @@ -4484,6 +4484,27 @@ static void mvpp2_phy_connect(struct udevice *dev, struct mvpp2_port *port)
> if (!port->init || port->link == 0) {
> phy_dev = phy_connect(port->bus, port->phyaddr, dev,
> port->phy_interface);
> +
> + /* If the phy doesn't match with any existing u-boot drivers the
> + * phy framework will connect it to generic one which
> + * uid == 0xffffffff. In this case act as if the phy wouldn't be
> + * declared in dts. Otherwise in case of 3310 (for which the
> + * driver doesn't exist) the link will not be correctly
> + * detected. Removing phy entry from dts in case of 3310 is not
> + * an option because it is required for the phy_fw_down
> + * procedure.
> + */
> + if (phy_dev->drv->uid == 0xffffffff) {/* Generic phy */
> + netdev_warn(port->dev,
> + "Marking phy as invalid, link will not be checked\n");
> + /* set phy_addr to invalid value */
> + port->phyaddr = PHY_MAX_ADDR;
> + mvpp2_egress_enable(port);
> + mvpp2_ingress_enable(port);
> +
> + return;
> + }
> +
> port->phy_dev = phy_dev;
> if (!phy_dev) {
> netdev_err(port->dev, "cannot connect to phy\n");
> --
> 2.21.0
>
Reviewed-By: Ramon Fried <rfried.dev at gmail.com>
More information about the U-Boot
mailing list