2014-12-04 02:50:10

by addy ke

[permalink] [raw]
Subject: [PATCH] ARM: dts: rockchip: set dw_mmc max-freq 150Mhz

All of mmc controllers include SDMMC, SDIO0, SDIO1, and EMMC on RK3288
are limited to 150Mhz. It was mainly caused by two reasons:
- RK3288's IO pad(except DDR IO pad) is generic, which can only support
the max of 150Mhz.
- Mmc controller was designed at 150Mhz, and the pressure test by IC team
was based on this freequency point.

Signed-off-by: Addy Ke <[email protected]>
---
arch/arm/boot/dts/rk3288.dtsi | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
index acb6a2f..9c35a1d 100644
--- a/arch/arm/boot/dts/rk3288.dtsi
+++ b/arch/arm/boot/dts/rk3288.dtsi
@@ -149,6 +149,7 @@

sdmmc: dwmmc@ff0c0000 {
compatible = "rockchip,rk3288-dw-mshc";
+ clock-freq-min-max = <400000 150000000>;
clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
clock-names = "biu", "ciu";
fifo-depth = <0x100>;
@@ -159,6 +160,7 @@

sdio0: dwmmc@ff0d0000 {
compatible = "rockchip,rk3288-dw-mshc";
+ clock-freq-min-max = <400000 150000000>;
clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>;
clock-names = "biu", "ciu";
fifo-depth = <0x100>;
@@ -169,6 +171,7 @@

sdio1: dwmmc@ff0e0000 {
compatible = "rockchip,rk3288-dw-mshc";
+ clock-freq-min-max = <400000 150000000>;
clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>;
clock-names = "biu", "ciu";
fifo-depth = <0x100>;
@@ -179,6 +182,7 @@

emmc: dwmmc@ff0f0000 {
compatible = "rockchip,rk3288-dw-mshc";
+ clock-freq-min-max = <400000 150000000>;
clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
clock-names = "biu", "ciu";
fifo-depth = <0x100>;
--
1.8.3.2


2014-12-04 16:09:00

by Doug Anderson

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: rockchip: set dw_mmc max-freq 150Mhz

Addy,

On Wed, Dec 3, 2014 at 6:49 PM, Addy Ke <[email protected]> wrote:
> All of mmc controllers include SDMMC, SDIO0, SDIO1, and EMMC on RK3288
> are limited to 150Mhz. It was mainly caused by two reasons:
> - RK3288's IO pad(except DDR IO pad) is generic, which can only support
> the max of 150Mhz.
> - Mmc controller was designed at 150Mhz, and the pressure test by IC team
> was based on this freequency point.
>
> Signed-off-by: Addy Ke <[email protected]>
> ---
> arch/arm/boot/dts/rk3288.dtsi | 4 ++++
> 1 file changed, 4 insertions(+)

Your explanation is reasonable. The 150MHz rate is also listed in the
latest datasheet. It's unfortunate that we won't get full speed of
SDR104 or hs200 on this SoC, but correctness certainly outweighs
performance.

Reviewed-by: Doug Anderson <[email protected]>

I have tested that this prevents the speed from going above 150MHz on
rk3288-pinky on SD Cards, so:

Tested-by: Doug Anderson <[email protected]>

-Doug

2014-12-05 21:42:09

by Heiko Stuebner

[permalink] [raw]
Subject: Re: [PATCH] ARM: dts: rockchip: set dw_mmc max-freq 150Mhz

Am Donnerstag, 4. Dezember 2014, 10:49:35 schrieb Addy Ke:
> All of mmc controllers include SDMMC, SDIO0, SDIO1, and EMMC on RK3288
> are limited to 150Mhz. It was mainly caused by two reasons:
> - RK3288's IO pad(except DDR IO pad) is generic, which can only support
> the max of 150Mhz.
> - Mmc controller was designed at 150Mhz, and the pressure test by IC team
> was based on this freequency point.
>
> Signed-off-by: Addy Ke <[email protected]>

applied to my wip dts branch for 3.20 (on github)


Thanks
Heiko