[U-Boot] [PATCH] net: phy: micrel: fix KSZ9031 clock skew for values greater 0ps
Andreas Pretzsch
apr at cn-eng.de
Mon Jan 7 20:32:27 UTC 2019
Request for inclusion of below patch.
CC Joe Hershberger as listed maintainer for 'drivers/net/'.
Thanks,
Andreas
On Thu, 2018-11-29 at 20:04 +0100, Andreas Pretzsch wrote:
> For KSZ9021, all skew register fields are 4-bit wide.
> For KSZ9031, the clock skew register fields are 5-bit wide.
>
> The common code in ksz90x1_of_config_group calculating the combined
> register value checks if the requested value is above the maximum
> and uses this maximum if so. The calculation of this maximum uses
> the register width, but the check itself does not. It uses a
> hardcoded
> value of 0xf, which is too low in case of the 5-bit clock (0x1f).
> This detail was probably lost during driver unification.
>
> Effect (only for KSZ9031 clock skews): For values greater 900 (==
> 0ps),
> this silently results in 1860 (== +960ps) instead of the requested
> one.
>
> Fix the check by using the bit width instead of hardcoded value(s).
>
> Signed-off-by: Andreas Pretzsch <apr at cn-eng.de>
> ---
> drivers/net/phy/micrel_ksz90x1.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/phy/micrel_ksz90x1.c
> b/drivers/net/phy/micrel_ksz90x1.c
> index 3951535bf1..63e7b0242b 100644
> --- a/drivers/net/phy/micrel_ksz90x1.c
> +++ b/drivers/net/phy/micrel_ksz90x1.c
> @@ -123,8 +123,8 @@ static int ksz90x1_of_config_group(struct
> phy_device *phydev,
> } else {
> changed = 1; /* Value was changed in OF */
> /* Calculate the register value and fix corner
> cases */
> - if (val[i] > ps_to_regval * 0xf) {
> - max = (1 << ofcfg->grp[i].size) - 1;
> + max = (1 << ofcfg->grp[i].size) - 1;
> + if (val[i] > ps_to_regval * max) {
> regval |= max << offset;
> } else {
> regval |= (val[i] / ps_to_regval) <<
> offset;
--
carpe noctem engineering
Ingenieurbuero fuer Hard- & Software-Entwicklung Andreas Pretzsch
Dipl.-Ing. (FH) Andreas Pretzsch Tel. +49-(0)7307-936088-1
Lange Strasse 28a Fax: +49-(0)7307-936088-9
89250 Senden, Germany email: apr at cn-eng.de
More information about the U-Boot
mailing list