[PATCH v2] net: fsl_mdio: Fix busy flag polling register
Camelia Alexandra Groza (OSS)
camelia.groza at oss.nxp.com
Fri Jan 7 17:23:00 CET 2022
> -----Original Message-----
> From: U-Boot <u-boot-bounces at lists.denx.de> On Behalf Of Markus Koch
> Sent: Tuesday, January 4, 2022 17:42
> To: Ioana Ciornei <ioana.ciornei at nxp.com>; joe.hershberger at ni.com;
> rfried.dev at gmail.com
> Cc: Madalin Bucur (OSS) <madalin.bucur at oss.nxp.com>; Camelia Alexandra
> Groza <camelia.groza at nxp.com>; u-boot at lists.denx.de; Markus Koch
> <markus at notsyncing.net>
> Subject: [PATCH v2] net: fsl_mdio: Fix busy flag polling register
>
> NXP's mEMAC reference manual, Chapter 6.5.5 "MDIO Ethernet
> Management
> Interface usage", specifies to poll the BSY (0) bit in the CFG/STAT
> register to wait until a transaction has finished, not bit 31 in the
> data register.
>
> In the Linux kernel, this has already been fixed in commit 26eee0210ad7
> ("net/fsl: fix a bug in xgmac_mdio").
>
> Signed-off-by: Markus Koch <markus at notsyncing.net>
I am ok with the change for the mEMAC driver but MDIO_DATA_BSY is still
used by the fsl_ls_mdio driver. The MDIO driver suffers from the same issue.
Please send a v3 and either patch both drivers or don't remove the define.
Also, if removing the define, please mention it explicitly in the patch
description.
Thanks,
Camelia
> ---
>
> Changed to use the mdio_stat register. Thanks, Ioana!
>
> drivers/net/fm/memac_phy.c | 2 +-
> include/fsl_memac.h | 1 -
> 2 files changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/net/fm/memac_phy.c b/drivers/net/fm/memac_phy.c
> index 72b500a6d1..3ddae97e09 100644
> --- a/drivers/net/fm/memac_phy.c
> +++ b/drivers/net/fm/memac_phy.c
> @@ -64,7 +64,7 @@ static int memac_wait_until_done(struct
> memac_mdio_controller *regs)
> {
> unsigned int timeout = MAX_NUM_RETRIES;
>
> - while ((memac_in_32(®s->mdio_data) & MDIO_DATA_BSY) &&
> timeout--)
> + while ((memac_in_32(®s->mdio_stat) & MDIO_STAT_BSY) &&
> timeout--)
> ;
>
> if (!timeout) {
> diff --git a/include/fsl_memac.h b/include/fsl_memac.h
> index d067f1511c..6ac1e558b9 100644
> --- a/include/fsl_memac.h
> +++ b/include/fsl_memac.h
> @@ -254,7 +254,6 @@ struct memac_mdio_controller {
> #define MDIO_CTL_READ (1 << 15)
>
> #define MDIO_DATA(x) (x & 0xffff)
> -#define MDIO_DATA_BSY (1 << 31)
>
> struct fsl_enet_mac;
>
> --
> 2.34.1
More information about the U-Boot
mailing list