From: Miguel Jesus Seron Gonzalez <info@gluon.es>
To: Heiko Stuebner <heiko@sntech.de>
Cc: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Dongjin Kim <tobetter@gmail.com>,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH] arm64: dts: rockchip: odroid-m1: keep vcc3v3_pcie enabled from boot
Date: Mon, 19 Oct 2026 15:24:58 +0200 [thread overview]
Message-ID: <20261019132458.855-1-info@gluon.es> (raw)
The 3.3V supply of the M.2 slot is a GPIO-controlled fixed regulator
without regulator-boot-on. When the regulator driver probes, it
requests the enable GPIO as low, cutting power to an NVMe drive that
the bootloader has already powered up and used. When the PCIe
controller is built in, it probes a few milliseconds later and
re-enables the supply. The drive therefore sees a brief power glitch
without enough time to fully discharge.
Some drives do not survive this. With a DRAM-less Transcend MTE110S
(TS128GMTE110S), the board froze during NVMe probe in roughly half of
the cold boots, before the display came up. Kernels that probe PCIe
later (e.g. as modules, ~3.7 s after boot) are not affected, because
the drive stays off long enough to reset cleanly.
Mark the regulator as boot-on, so that the regulator driver keeps the
enable GPIO high when it probes and the supply is never toggled after
the bootloader has enabled it. The PCIe controller then takes it as
its vpcie3v3-supply, which keeps it enabled afterwards.
With this change, 5 out of 5 cold boots after power cuts of 2, 6, 30
and 60 seconds succeeded. Afterwards the supply remained enabled with
one user, with no NVMe or regulator errors and NVMe reads at 1.2 GB/s.
Fixes: 35b28582aa3d ("arm64: dts: rockchip: Add PCIEe v3 nodes to ODROID-M1")
Signed-off-by: Miguel Jesus Seron Gonzalez <info@gluon.es>
---
Notes:
Found while debugging Home Assistant OS on an ODROID-M1, where the same
change is being carried as a downstream patch:
https://github.com/home-assistant/operating-system/issues/5103
https://github.com/home-assistant/operating-system/pull/5104
arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts b/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
index 442a2bc43..6d29fa926 100644
--- a/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts
@@ -106,6 +106,7 @@ simple-audio-card,codec {
vcc3v3_pcie: regulator-vcc3v3-pcie {
compatible = "regulator-fixed";
regulator-name = "vcc3v3_pcie";
+ regulator-boot-on;
enable-active-high;
gpio = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
base-commit: c03c1a14507dfaf8b856c2608f9ac216021fc222
--
2.53.0
next reply other threads:[~2026-10-19 13:25 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-19 13:24 Miguel Jesus Seron Gonzalez [this message]
2026-10-19 19:27 ` [PATCH] arm64: dts: rockchip: odroid-m1: keep vcc3v3_pcie enabled from boot Miguel Jesus Seron Gonzalez
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=20261019132458.855-1-info@gluon.es \
--to=info@gluon.es \
--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=robh@kernel.org \
--cc=tobetter@gmail.com \
/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