mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jonathan Schmid <kernel@picomail.one>
To: Heiko Stuebner <heiko@sntech.de>
Cc: Detlev Casanova <detlev.casanova@collabora.com>,
	linux-rockchip@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Jonathan Schmid <kernel@picomail.one>,
	stable@vger.kernel.org
Subject: [PATCH] arm64: dts: rockchip: Pull down the eMMC data strobe on RK3576
Date: Mon,  9 Nov 2026 15:50:22 +0100	[thread overview]
Message-ID: <20261109145022.75261-1-kernel@picomail.one> (raw)

The eMMC data strobe (DS) is only driven by the card while it sends data
or the CRC status token; in between, the card releases the line. RK3576
configures emmc_strb with pcfg_pull_none, so DS floats between
transfers.

In HS400 the host samples the CRC status token that follows each written
block with DS. With the floating line it misreads the token now and
then: the write ends with a data CRC error and is retried. Nothing is
logged and the data ends up intact, but the errors show up in the
controller's err_stats in debugfs, and write throughput drops.

On a board with RK3576S and a 64 GB eMMC 5.1 in HS400 enhanced strobe
mode at 200 MHz, mainline shows about one data CRC error per 16 MiB
written (1123 over 18 GiB) and writes at about 50 MB/s. Changing only
the strobe pin from pull-none to pull-down at runtime gives 0 errors
over 15 GiB written and about 176 MB/s; the drive strength and the pull
of the clock pin made no difference.

Pull-down is the reset value of the pad, which the vendor kernel keeps
(its eMMC node has no pinctrl), and RK3588 already uses pcfg_pull_down
for its eMMC data strobe.

Fixes: 57b1ce903966 ("arm64: dts: rockchip: Add rk3576 SoC base DT")
Cc: stable@vger.kernel.org
Signed-off-by: Jonathan Schmid <kernel@picomail.one>
---
 arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi b/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
index 98c9f8013..2ce5e1bfd 100644
--- a/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
@@ -613,7 +613,7 @@ emmc_cmd: emmc-cmd {
 		emmc_strb: emmc-strb {
 			rockchip,pins =
 				/* emmc_strb */
-				<1 RK_PB2 1 &pcfg_pull_none>;
+				<1 RK_PB2 1 &pcfg_pull_down>;
 		};
 	};
 
-- 
2.55.0


                 reply	other threads:[~2026-11-09 14:50 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261109145022.75261-1-kernel@picomail.one \
    --to=kernel@picomail.one \
    --cc=detlev.casanova@collabora.com \
    --cc=devicetree@vger.kernel.org \
    --cc=heiko@sntech.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®