[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180418121356.GA31643@lunn.ch>
Date: Wed, 18 Apr 2018 14:13:56 +0200
From: Andrew Lunn <andrew@...n.ch>
To: Michael Schmitz <schmitzmic@...il.com>
Cc: netdev@...r.kernel.org, fthain@...egraphics.com.au,
geert@...ux-m68k.org, f.fainelli@...il.com,
linux-m68k@...r.kernel.org, Michael.Karcher@...berlin.de
Subject: Re: [PATCH v3 1/9] net: phy: new Asix Electronics PHY driver
> +
> +/**
> + * asix_soft_reset - software reset the PHY via BMCR_RESET bit
> + * @phydev: target phy_device struct
> + *
> + * Description: Perform a software PHY reset using the standard
> + * BMCR_RESET bit and poll for the reset bit to be cleared.
> + * Toggle BMCR_RESET bit off to accomodate broken PHY implementations
> + * such as used on the Individual Computers' X-Surf 100 Zorro card.
> + *
> + * Returns: 0 on success, < 0 on failure
> + */
> +static int asix_soft_reset(struct phy_device *phydev)
> +{
> + int ret;
> +
> + /* Asix PHY won't reset unless reset bit toggles */
> + ret = phy_write(phydev, MII_BMCR, 0);
> + if (ret < 0)
> + return ret;
> +
> + phy_write(phydev, MII_BMCR, BMCR_RESET);
> +
> + return phy_poll_reset(phydev);
> +}
Why not simply:
static int asix_soft_reset(struct phy_device *phydev)
{
int ret;
/* Asix PHY won't reset unless reset bit toggles */
ret = phy_write(phydev, MII_BMCR, 0);
if (ret < 0)
return ret;
return genphy_soft_reset(phydev);
}
Andrew
Powered by blists - more mailing lists