> -----Original Message----- > From: U-Boot <u-boot-boun...@lists.denx.de> On Behalf Of Markus Koch > Sent: Tuesday, January 4, 2022 17:42 > To: Ioana Ciornei <ioana.cior...@nxp.com>; joe.hershber...@ni.com; > rfried....@gmail.com > Cc: Madalin Bucur (OSS) <madalin.bu...@oss.nxp.com>; Camelia Alexandra > Groza <camelia.gr...@nxp.com>; u-boot@lists.denx.de; Markus Koch > <mar...@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 <mar...@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