From: Quentin Schulz <quentin.schulz@cherry.de>
To: Alexey Charkov <alchark@gmail.com>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Shawn Lin <shawn.lin@rock-chips.com>,
Manivannan Sadhasivam <mani@kernel.org>
Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH] arm64: dts: rockchip: Explicitly request UFS reset pin on RK3576
Date: Mon, 19 Jan 2026 12:08:15 +0100 [thread overview]
Message-ID: <b0904cb5-3659-41cc-8395-79eec9e82f01@cherry.de> (raw)
In-Reply-To: <20260119-ufs-rst-v1-1-c8e96493948c@gmail.com>
Hi Alexey,
On 1/19/26 10:22 AM, Alexey Charkov wrote:
> Rockchip RK3576 UFS controller uses a dedicated pin to reset the connected
> UFS device, which can operate either in a hardware controlled mode or as a
> GPIO pin.
>
> Power-on default is GPIO mode, but the boot ROM reconfigures it to a
> hardware controlled mode if it uses UFS to load the next boot stage.
>
> Given that existing bindings (and rk3576.dtsi) expect a GPIO-controlled
> device reset, request the required pin config explicitly.
>
> This doesn't appear to affect Linux, but it does affect U-boot:
>
> Before:
> => md.l 0x2604b398
> 2604b398: 00000011 00000000 00000000 00000000 ................
> < ... snip ... >
> => ufs init
> ufshcd-rockchip ufshc@2a2d0000: [RX, TX]: gear=[3, 3], lane[2, 2], pwr[FASTAUTO_MODE, FASTAUTO_MODE], rate = 2
> => md.l 0x2604b398
> 2604b398: 00000011 00000000 00000000 00000000 ................
>
> After:
> => md.l 0x2604b398
> 2604b398: 00000011 00000000 00000000 00000000 ................
> < ... snip ...>
> => ufs init
> ufshcd-rockchip ufshc@2a2d0000: [RX, TX]: gear=[3, 3], lane[2, 2], pwr[FASTAUTO_MODE, FASTAUTO_MODE], rate = 2
> => md.l 0x2604b398
> 2604b398: 00000010 00000000 00000000 00000000 ................
>
> (0x2604b398 is the respective pin mux register, with its BIT0 driving the
> mode of UFS_RST: unset = GPIO, set = hardware controlled UFS_RST)
>
> This helps ensure that GPIO-driven device reset actually fires when the
> system requests it, not when whatever black box magic inside the UFSHC
> decides to reset the flash chip.
>
> Cc: stable@vger.kernel.org
> Fixes: c75e5e010fef ("scsi: arm64: dts: rockchip: Add UFS support for RK3576 SoC")
> Reported-by: Quentin Schulz <quentin.schulz@cherry.de>
> Signed-off-by: Alexey Charkov <alchark@gmail.com>
> ---
> This has originally surfaced during the review of UFS patches for U-boot
> at [1], where it was found that the UFS reset line is not requested to be
> configured as GPIO but used as such. This leads in some cases to the UFS
> driver appearing to control device resets, while in fact it is the
> internal controller logic that drives the reset line (perhaps in
> unexpected ways).
>
> Thanks Quentin Schulz for spotting this issue.
>
> [1] https://lore.kernel.org/u-boot/259fc358-f72b-4a24-9a71-ad90f2081335@cherry.de/
> ---
> arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi | 7 +++++++
> arch/arm64/boot/dts/rockchip/rk3576.dtsi | 2 +-
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi b/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
> index 0b0851a7e4ea..20cfd3393a75 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3576-pinctrl.dtsi
> @@ -5228,6 +5228,13 @@ ufs_rst: ufs-rst {
> /* ufs_rstn */
> <4 RK_PD0 1 &pcfg_pull_none>;
> };
> +
> + /omit-if-no-ref/
> + ufs_rst_gpio: ufs-rst-gpio {
> + rockchip,pins =
> + /* ufs_rstn */
> + <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
The SoC default is pull-down according to the TRM. Can you check please?
For example, the Rock 4D doesn't seem to have a hardware pull-up or
pull-down on the line and the UFS module only seems to have a debouncer
(capacitor between the line and ground). So except if the chip itself
has a PU/PD, this may be an issue?
Cheers,
Quentin
next prev parent reply other threads:[~2026-01-19 11:08 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-19 9:22 [PATCH] arm64: dts: rockchip: Explicitly request UFS reset pin on RK3576 Alexey Charkov
2026-01-19 11:08 ` Quentin Schulz [this message]
2026-01-19 13:43 ` Alexey Charkov
2026-01-19 13:58 ` Quentin Schulz
2026-01-19 14:05 ` Alexey Charkov
2026-01-19 14:42 ` Heiko Stübner
2026-01-20 9:21 ` Heiko Stuebner
2026-01-20 1:39 ` Shawn Lin
2026-01-20 7:13 ` Alexey Charkov
2026-01-20 8:55 ` Heiko Stuebner
2026-01-20 10:21 ` Quentin Schulz
2026-01-20 10:26 ` Heiko Stuebner
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=b0904cb5-3659-41cc-8395-79eec9e82f01@cherry.de \
--to=quentin.schulz@cherry.de \
--cc=alchark@gmail.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mani@kernel.org \
--cc=martin.petersen@oracle.com \
--cc=robh@kernel.org \
--cc=shawn.lin@rock-chips.com \
--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