The SHDCI controller on aries devices is a little bit peculiar about the clocks and with a slightly off clock can run into errors such as [ 141.533993] mmc2: ADMA error: 0x02000000 [ 141.535137] mmc2: sdhci: ============ SDHCI REGISTER DUMP =========== [ 141.540246] mmc2: sdhci: Sys addr: 0x347e4cc4 | Version: 0x00002401 [ 141.545358] mmc2: sdhci: Blk size: 0x00007004 | Blk cnt: 0x0000fffc [ 141.550470] mmc2: sdhci: Argument: 0x00000000 | Trn mode: 0x00000013 [ 141.555583] mmc2: sdhci: Present: 0x01fa0000 | Host ctl: 0x00000012 [ 141.560696] mmc2: sdhci: Power: 0x00000000 | Blk gap: 0x00000000 [ 141.565809] mmc2: sdhci: Wake-up: 0x00000000 | Clock: 0x0000010f [ 141.570921] mmc2: sdhci: Timeout: 0x0000000a | Int stat: 0x00000003 [ 141.576034] mmc2: sdhci: Int enab: 0x03ff004b | Sig enab: 0x03ff004b [ 141.581147] mmc2: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000001 [ 141.586259] mmc2: sdhci: Caps: 0x05e80080 | Caps_1: 0x00000000 [ 141.591372] mmc2: sdhci: Cmd: 0x0000163a | Max curr: 0x00000000 [ 141.596485] mmc2: sdhci: Resp[0]: 0x00000920 | Resp[1]: 0x00000000 [ 141.601597] mmc2: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000 [ 141.606710] mmc2: sdhci: Host ctl2: 0x00000000 [ 141.609831] mmc2: sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x349a3208 [ 141.614942] mmc2: sdhci: ============================================ [ 141.620057] mmc2: sdhci: 349a3200: DMA 0x347e4cc0, LEN 0x0004, Attr=0x23 Specifically assign the mmc sclks to be parented from MPLL with specific rates that match the vendor kernel. Signed-off-by: Jonathan Bakker <xc-racer2@xxxxxxx> --- arch/arm/boot/dts/s5pv210-aries.dtsi | 8 ++++++++ arch/arm/boot/dts/s5pv210-galaxys.dts | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi index a103ddb0d720..7e113d750b97 100644 --- a/arch/arm/boot/dts/s5pv210-aries.dtsi +++ b/arch/arm/boot/dts/s5pv210-aries.dtsi @@ -734,6 +734,10 @@ non-removable; status = "okay"; + assigned-clocks = <&clocks MOUT_MMC1>, <&clocks SCLK_MMC1>; + assigned-clock-rates = <0>, <50000000>; + assigned-clock-parents = <&clocks MOUT_MPLL>; + wlan@1 { reg = <1>; compatible = "brcm,bcm4329-fmac"; @@ -750,6 +754,10 @@ pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &tf_detect>; pinctrl-names = "default"; status = "okay"; + + assigned-clocks = <&clocks MOUT_MMC2>, <&clocks SCLK_MMC2>; + assigned-clock-rates = <0>, <50000000>; + assigned-clock-parents = <&clocks MOUT_MPLL>; }; &uart0 { diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts index f5c13eb8ae71..6958fe040106 100644 --- a/arch/arm/boot/dts/s5pv210-galaxys.dts +++ b/arch/arm/boot/dts/s5pv210-galaxys.dts @@ -354,4 +354,8 @@ pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4>; pinctrl-names = "default"; status = "okay"; + + assigned-clocks = <&clocks MOUT_MMC0>, <&clocks SCLK_MMC0>; + assigned-clock-rates = <0>, <52000000>; + assigned-clock-parents = <&clocks MOUT_MPLL>; }; -- 2.20.1