From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1DF16C433EF for ; Tue, 11 Jan 2022 18:25:34 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id EEC0481D5D; Tue, 11 Jan 2022 19:25:31 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=notsyncing.net Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id 7F49C82A71; Tue, 11 Jan 2022 19:25:30 +0100 (CET) Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.24]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id F34A381B4B for ; Tue, 11 Jan 2022 19:25:27 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=notsyncing.net Authentication-Results: phobos.denx.de; spf=none smtp.mailfrom=markus@notsyncing.net Received: from localhost.localdomain ([88.152.184.187]) by mrelayeu.kundenserver.de (mreue106 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MF418-1n9atW3rtg-00FRmM; Tue, 11 Jan 2022 19:25:23 +0100 From: Markus Koch To: camelia.groza@nxp.com, joe.hershberger@ni.com, rfried.dev@gmail.com Cc: madalin.bucur@oss.nxp.com, ioana.ciornei@nxp.com, u-boot@lists.denx.de, Markus Koch Subject: [PATCH v3] net: fsl: Fix busy flag polling register Date: Tue, 11 Jan 2022 19:22:54 +0100 Message-Id: <20220111182252.58682-1-markus@notsyncing.net> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K1:sVLhT+Hdv6HO4RXaG7QiL6Im/FFalM8m02E3gJn0CuDvypnyqQf 83mAAnQgTb1OFosL56hVG92Qcx9qHX2lrUcD8q/87kPgGTrOlaQfNyDsrvPzXFBetMuFGzA mzp/mzeMZdXiKdctIoTnpzX2inPfiV8x0RubI2gSIfJmoqnhCLK3sNFnicvNcOfSqf2gDdf nGP/vCjqm4watyq0THptQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:KEqIk2IOb9U=:jb6GTJIN+3qmvvx9GMQ2du jAgbZE/cdm4Wq7jeadb0RSFsUq1phjBl7WWE2inPYvWvMFsqjWO74GD0T1KMs3WKf8qGaR2IN MIt/wEF8eDpCqDKNHpfpgn3KonqcmRGIs1uNP2z1E/7gShh/+Yj/J4vkoUann6wCMVFeghoao DOni++2wpai7utIiQ1UKYBTxlVYysOI20wte1flf7RP0ToGVwGpHZNHO6y7DJ97EiRQPI8+uK +r/+0muaZwua/c20qsplwPLGiBVrTD623Hycewaq4CM1b2iguqVW/fWk0ssP/1+j3bU9rcTyM zxWR56oavWObdpeBXEoDg3763MHOZCGUjGiyf0n7vAtOLdYnOpGXmAKyJur/rsrxpstbLHZ5Y Nimfg2ce1fR7zQl/SW+NToVM0Vf5eO0PQqL/XbQGTJUvayBS/OnnmMiibV/5ktV+SAJy1jRLF C521oJgeIPAUPcJzUxICdtYCs68yknF6x98p6IJ/O6Q9wyDYDQ+DFL4a+SzocLAINQBJ4uNUA OV0yN903QPXbgK+feZkIwac7alrhgFlS9dd2WKRZJRuKQl6ghzW7WRzRSEr8coojg4v7SWzbF jH0yTWOdxBL/L7lYFwcFWtAKjr4ouKEQFiu/pI9b6yx3MVPpiXawf5GA6QpHEq2feAX4HmPZs bmrtN/tlJlkQN+Jd3Faz3HgHMoctaobyHo9hhM36RtGZpsNALymUVzIOZ1wH8OKLhKgo= X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean 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"). This patch changes the register in the fman_mdio and fsl_ls_mdio drivers. As the MDIO_DATA_BSY define is no longer in use, this patch also removes its definition from the fsl_memac header. Signed-off-by: Markus Koch --- v1->v2: * Fix register v2->v3: * Also apply fix to fsl_ls_mdio * Add note about define-removal in commit message Thanks, Camelia! drivers/net/fm/memac_phy.c | 2 +- drivers/net/fsl_ls_mdio.c | 4 ++-- include/fsl_memac.h | 1 - 3 files changed, 3 insertions(+), 4 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/drivers/net/fsl_ls_mdio.c b/drivers/net/fsl_ls_mdio.c index 6d4e682fdf..f213e0dd85 100644 --- a/drivers/net/fsl_ls_mdio.c +++ b/drivers/net/fsl_ls_mdio.c @@ -84,7 +84,7 @@ static int dm_fsl_ls_mdio_read(struct udevice *dev, int addr, memac_out_32(®s->mdio_ctl, mdio_ctl); /* Wait till the MDIO write is complete */ - while ((memac_in_32(®s->mdio_data)) & MDIO_DATA_BSY) + while ((memac_in_32(®s->mdio_stat)) & MDIO_STAT_BSY) ; /* Return all Fs if nothing was there */ @@ -107,7 +107,7 @@ static int dm_fsl_ls_mdio_write(struct udevice *dev, int addr, int devad, memac_out_32(®s->mdio_data, MDIO_DATA(val)); /* Wait till the MDIO write is complete */ - while ((memac_in_32(®s->mdio_data)) & MDIO_DATA_BSY) + while ((memac_in_32(®s->mdio_stat)) & MDIO_STAT_BSY) ; return 0; 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