lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAP4nuTXUd23e6k6iqRVJw6Rcsc46+RrLGR9ZCu=o28g3u2FKSQ@mail.gmail.com>
Date: Tue, 13 Jan 2026 17:38:10 +0800
From: Nick Xie <xieqinick@...il.com>
To: Jerome Brunet <jbrunet@...libre.com>
Cc: neil.armstrong@...aro.org, khilman@...libre.com, 
	martin.blumenstingl@...glemail.com, xianwei.zhao@...ogic.com, 
	devicetree@...r.kernel.org, linux-arm-kernel@...ts.infradead.org, 
	linux-amlogic@...ts.infradead.org, linux-kernel@...r.kernel.org, 
	krzk+dt@...nel.org, conor+dt@...nel.org, robh@...nel.org, nick@...das.com
Subject: Re: [PATCH] arm64: dts: amlogic: S4: fix SD card initialization failure

Jerome Brunet <jbrunet@...libre.com> 于2026年1月13日周二 16:57写道:
>
> On mar. 13 janv. 2026 at 09:19, Nick Xie <xieqinick@...il.com> wrote:
>
> > The SD controller (sd@...8a000) 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@...das.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@...8a000 {
> >                       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

Hello Jerome,

Thanks for your review.

I also checked the Amlogic 5.15 vendor kernel [1], it also use xtal as clkin0.

[1] - https://github.com/khadas/common_drivers/blob/khadas-vims-5.15.y/arch/arm64/boot/dts/amlogic/meson-s4.dtsi#L1358

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ