From: Jerome Brunet <jbrunet@baylibre.com>
To: Nick Xie <xieqinick@gmail.com>
Cc: neil.armstrong@linaro.org, khilman@baylibre.com,
martin.blumenstingl@googlemail.com, xianwei.zhao@amlogic.com,
devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, robh@kernel.org,
nick@khadas.com
Subject: Re: [PATCH] arm64: dts: amlogic: S4: fix SD card initialization failure
Date: Tue, 13 Jan 2026 09:57:34 +0100 [thread overview]
Message-ID: <1jsec9ritd.fsf@starbuckisacylon.baylibre.com> (raw)
In-Reply-To: <20260113011931.40424-1-nick@khadas.com> (Nick Xie's message of "Tue, 13 Jan 2026 09:19:31 +0800")
On mar. 13 janv. 2026 at 09:19, Nick Xie <xieqinick@gmail.com> wrote:
> The SD controller (sd@fe08a000) requires a clock source capable of
> generating a 400kHz frequency for the identification phase.
>
> Currently, the sd node uses CLKID_SD_EMMC_B as clkin0 and CLKID_FCLK_DIV2
> as clkin1. Both of these are high-frequency clocks (e.g., ~1GHz).
The reason you are having this problem is because CLKID_SD_EMMC_B does
not provide 400kHz by default on this platform. We have been operating
with this (weak) assumption so far ... and it was OK until now.
> The internal divider of the SD controller is limited to a maximum value
> of 64 (2^6). With input frequencies significantly higher than 25.6MHz
> (400kHz * 64), the driver is unable to generate the required 400kHz
> clock, causing the probe to fail with -EINVAL.
>
> Fix this by reparenting clkin0 to the 24MHz XTAL clock, consistent with
> the configuration of the sdio and emmc nodes. This allows the divider
> to successfully generate 400kHz (24MHz / 60).
>
DT generally describe what the HW is, not how you wish to configure it.
What you are doing here does not reparent anything. You are actually
mis-representing the clock tree, making the MMC device believe it has
24MHz on its clkin0, even-though what it is really has still is
CLKID_SD_EMMC_B (presumably running a 1GHz)
So if my understanding is correct, you are indeed setting the divider to
60 instead of 64, but you are still dividing 1GHz so what you actually
get it 16,6MHz
If you want to get 24MHz the clkin0, we need to assign the rate,
something we probably should have done before.
I'll send something for this
> Verified on Khadas VIM1S with SoC S4 S905Y4.
>
> Fixes: 3ab9d54b5d847 ("arm64: dts: amlogic: enable some device nodes for S4")
>
> Signed-off-by: Nick Xie <nick@khadas.com>
> ---
> arch/arm64/boot/dts/amlogic/meson-s4.dtsi | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi
> index 9d99ed2994dfa..b87bc83b5a9bb 100644
> --- a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi
> +++ b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi
> @@ -833,7 +833,7 @@ sd: mmc@fe08a000 {
> reg = <0x0 0xfe08a000 0x0 0x800>;
> interrupts = <GIC_SPI 177 IRQ_TYPE_EDGE_RISING>;
> clocks = <&clkc_periphs CLKID_SDEMMC_B>,
> - <&clkc_periphs CLKID_SD_EMMC_B>,
> + <&xtal>,
> <&clkc_pll CLKID_FCLK_DIV2>;
> clock-names = "core", "clkin0", "clkin1";
> resets = <&reset RESET_SD_EMMC_B>;
--
Jerome
next prev parent reply other threads:[~2026-01-13 8:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-13 1:19 [PATCH] arm64: dts: amlogic: S4: fix SD card initialization failure Nick Xie
2026-01-13 8:57 ` Jerome Brunet [this message]
2026-01-13 9:38 ` Nick Xie
2026-01-13 10:01 ` neil.armstrong
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=1jsec9ritd.fsf@starbuckisacylon.baylibre.com \
--to=jbrunet@baylibre.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=khilman@baylibre.com \
--cc=krzk+dt@kernel.org \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.blumenstingl@googlemail.com \
--cc=neil.armstrong@linaro.org \
--cc=nick@khadas.com \
--cc=robh@kernel.org \
--cc=xianwei.zhao@amlogic.com \
--cc=xieqinick@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