Skip to contentSkip to conversation

ARM64: dts: meson-gxbb: odroidc2: enable sdcard UHS modes

PATCH In review Anand Moon 2 participants 4 messages May 1, 2018 – May 15, 2018

Subsystems (2)
lore
Share & tools
lore

Anand Moon

author
#0 lore raw

PATCH 1/2 ARM64: dts: meson-gxbb: odroidc2: enable sdcard UHS modes

Enable UHS modes for sdcard, on odroidc2.

---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +5 -0
index 54954b314a45..c90f8b46c60c 100644
@@ -258,6 +258,11 @@
 	cap-sd-highspeed;
 	max-frequency = <100000000>;
 	disable-wp;
+	sd-uhs-sdr12;
+	sd-uhs-sdr25;
+	sd-uhs-sdr50;
+	sd-uhs-sdr104;
+	sd-uhs-ddr50;
 
 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
 	cd-inverted;
Signature · 1 line
2.17.0
author
#1 lore raw

PATCH 2/2 ARM64: dts: meson: update maximum frequency for sdcard to 200MHz

update the maximum frequency of the sdcard to 200Mhz to support high speed read/write with uhs mode.

---

odroid@odroid64:~$ sudo cat /sys/kernel/debug/mmc1/ios
[sudo] password for odroid:
clock:          200000000 Hz
actual clock:   200000000 Hz
vdd:            21 (3.3 ~ 3.4 V)
bus mode:       2 (push-pull)
chip select:    0 (don't care)
power mode:     2 (on)
bus width:      2 (4 bits)
timing spec:    6 (sd uhs SDR104)
signal voltage: 1 (1.80 V)
driver type:    0 (driver type B)
---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +1 -1
index c90f8b46c60c..ab868eaddb46 100644
@@ -256,7 +256,7 @@
 
 	bus-width = <4>;
 	cap-sd-highspeed;
-	max-frequency = <100000000>;
+	max-frequency = <200000000>;
 	disable-wp;
 	sd-uhs-sdr12;
 	sd-uhs-sdr25;
Signature · 1 line
2.17.0
reviewer Tested-by on v1 1/2
#2 lore raw
In reply to Anand Moon
Quoted 13 lines · Anand Moon

Enable UHS modes for sdcard, on odroidc2.

---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +0 -0
index 54954b314a45..c90f8b46c60c 100644
@@ -258,6 +258,11 @@
 	cap-sd-highspeed;

arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts line 268

Quoted 10 lines
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +5 -0
 	max-frequency = <100000000>;
 	disable-wp;
+	sd-uhs-sdr12;
+	sd-uhs-sdr25;
+	sd-uhs-sdr50;
+	sd-uhs-sdr104;
+	sd-uhs-ddr50;
 
 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
 	cd-inverted;

Hi Anand,

I tried a few sdcards on the OC2 with your 2 patches.
Like with the libretech-cc, sdr104 at 200Mhz works "mostly", but, with some sdcards, it does not - please see below. The same sdcards appear to be working fine on my laptop.

This is something I have not been able to crack yet on the libretech-cc.

I'd suggest dropping sdr104 and keeping the max frequency at 100Mhz until we can figure out the problem here.

With this changed:

dd if=/dev/mmcblk1 of=/dev/zero bs=4M

[  446.925817] mmc1: tuning execution failed: -5                               
[  446.956597] mmc1: tuning execution failed: -5                               
[  489.957810] print_req_error: I/O error, dev mmcblk1, sector 6654424         
[  490.141975] print_req_error: I/O error, dev mmcblk1, sector 6656440         
[  490.148304] print_req_error: I/O error, dev mmcblk1, sector 6656944         
[  490.349650] print_req_error: I/O error, dev mmcblk1, sector 6658456         
[  491.804382] print_req_error: I/O error, dev mmcblk1, sector 6747688         
[  492.281246] print_req_error: I/O error, dev mmcblk1, sector 6784992         
[  492.419034] print_req_error: I/O error, dev mmcblk1, sector 6785496         
[  492.865878] print_req_error: I/O error, dev mmcblk1, sector 6791800         
[  493.023809] print_req_error: I/O error, dev mmcblk1, sector 6792192         
[  493.024435] Buffer I/O error on dev mmcblk1, logical block 849024, async page
read                                                                         
[  493.217751] print_req_error: I/O error, dev mmcblk1, sector 6792808         
[  494.891779] mmc1: tuning execution failed: -5                               
[  495.374186] print_req_error: 3 callbacks suppressed                         
[  495.374193] print_req_error: I/O error, dev mmcblk1, sector 6854576         
[  495.767498] print_req_error: I/O error, dev mmcblk1, sector 6860000         
[  496.013104] print_req_error: I/O error, dev mmcblk1, sector 6863024         
[  496.223042] print_req_error: I/O error, dev mmcblk1, sector 6864032         
[  496.227003] print_req_error: I/O error, dev mmcblk1, sector 6864536         
[  496.375175] print_req_error: I/O error, dev mmcblk1, sector 6864176         
[  496.375806] Buffer I/O error on dev mmcblk1, logical block 858022, async page
read                                                                         
[  496.521229] print_req_error: I/O error, dev mmcblk1, sector 6864184         
[  496.521852] Buffer I/O error on dev mmcblk1, logical block 858023, async page
read                                                                         
[  503.596978] print_req_error: I/O error, dev mmcblk1, sector 6983312         
[  503.597606] Buffer I/O error on dev mmcblk1, logical block 872914, async page
read                                                                         
[  505.280621] print_req_error: I/O error, dev mmcblk1, sector 7004536         
[  505.281249] Buffer I/O error on dev mmcblk1, logical block 875567, async page
read                                                                         
[  507.372560] print_req_error: I/O error, dev mmcblk1, sector 7048696         
[  507.373192] Buffer I/O error on dev mmcblk1, logical block 881087, async page
read                                                                         
[  511.355248] print_req_error: I/O error, dev mmcblk1, sector 7131352         
[  511.355883] Buffer I/O error on dev mmcblk1, logical block 891419, async page
read                                                                         
[  511.369076] print_req_error: I/O error, dev mmcblk1, sector 7131352         
[  511.369694] Buffer I/O error on dev mmcblk1, logical block 891419, async page

read
dd: error reading '/dev/mmcblk1': Input/output error 868+7 records in
868+7 records out
3651252224 bytes (3.7 GB, 3.4 GiB) copied, 66.7736 s, 54.7 MB/s

author
#3 lore raw

Hi Jerome

Quoted 83 lines · Jerome Brunet
Quoted 13 lines · Anand Moon

Enable UHS modes for sdcard, on odroidc2.

---
 arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 5 +++++
 1 file changed, 5 insertions(+)
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +0 -0
index 54954b314a45..c90f8b46c60c 100644
@@ -258,6 +258,11 @@
      cap-sd-highspeed;

arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts line 268

Quoted 10 lines
arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +5 -0
      max-frequency = <100000000>;
      disable-wp;
+     sd-uhs-sdr12;
+     sd-uhs-sdr25;
+     sd-uhs-sdr50;
+     sd-uhs-sdr104;
+     sd-uhs-ddr50;
 
      cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
      cd-inverted;

Hi Anand,

I tried a few sdcards on the OC2 with your 2 patches.
Like with the libretech-cc, sdr104 at 200Mhz works "mostly", but, with some sdcards, it does not - please see below. The same sdcards appear to be working fine on my laptop.

This is something I have not been able to crack yet on the libretech-cc.

I'd suggest dropping sdr104 and keeping the max frequency at 100Mhz until we can figure out the problem here.

With this changed:

dd if=/dev/mmcblk1 of=/dev/zero bs=4M

[  446.925817] mmc1: tuning execution failed: -5
[  446.956597] mmc1: tuning execution failed: -5
[  489.957810] print_req_error: I/O error, dev mmcblk1, sector 6654424
[  490.141975] print_req_error: I/O error, dev mmcblk1, sector 6656440
[  490.148304] print_req_error: I/O error, dev mmcblk1, sector 6656944
[  490.349650] print_req_error: I/O error, dev mmcblk1, sector 6658456
[  491.804382] print_req_error: I/O error, dev mmcblk1, sector 6747688
[  492.281246] print_req_error: I/O error, dev mmcblk1, sector 6784992
[  492.419034] print_req_error: I/O error, dev mmcblk1, sector 6785496
[  492.865878] print_req_error: I/O error, dev mmcblk1, sector 6791800
[  493.023809] print_req_error: I/O error, dev mmcblk1, sector 6792192
[  493.024435] Buffer I/O error on dev mmcblk1, logical block 849024, async page
read
[  493.217751] print_req_error: I/O error, dev mmcblk1, sector 6792808
[  494.891779] mmc1: tuning execution failed: -5
[  495.374186] print_req_error: 3 callbacks suppressed
[  495.374193] print_req_error: I/O error, dev mmcblk1, sector 6854576
[  495.767498] print_req_error: I/O error, dev mmcblk1, sector 6860000
[  496.013104] print_req_error: I/O error, dev mmcblk1, sector 6863024
[  496.223042] print_req_error: I/O error, dev mmcblk1, sector 6864032
[  496.227003] print_req_error: I/O error, dev mmcblk1, sector 6864536
[  496.375175] print_req_error: I/O error, dev mmcblk1, sector 6864176
[  496.375806] Buffer I/O error on dev mmcblk1, logical block 858022, async page
read
[  496.521229] print_req_error: I/O error, dev mmcblk1, sector 6864184
[  496.521852] Buffer I/O error on dev mmcblk1, logical block 858023, async page
read
[  503.596978] print_req_error: I/O error, dev mmcblk1, sector 6983312
[  503.597606] Buffer I/O error on dev mmcblk1, logical block 872914, async page
read
[  505.280621] print_req_error: I/O error, dev mmcblk1, sector 7004536
[  505.281249] Buffer I/O error on dev mmcblk1, logical block 875567, async page
read
[  507.372560] print_req_error: I/O error, dev mmcblk1, sector 7048696
[  507.373192] Buffer I/O error on dev mmcblk1, logical block 881087, async page
read
[  511.355248] print_req_error: I/O error, dev mmcblk1, sector 7131352
[  511.355883] Buffer I/O error on dev mmcblk1, logical block 891419, async page
read
[  511.369076] print_req_error: I/O error, dev mmcblk1, sector 7131352
[  511.369694] Buffer I/O error on dev mmcblk1, logical block 891419, async page
Quoted 5 lines

read
dd: error reading '/dev/mmcblk1': Input/output error 868+7 records in
868+7 records out
3651252224 bytes (3.7 GB, 3.4 GiB) copied, 66.7736 s, 54.7 MB/s

Thank for your testing, I will also do some more testing on all the sdcard and share you the result..

Mean while Sandisk Ultra microSDHC UHS-I card @A1 32GB shows.

On my Odroid C2:

[    1.165784] meson-gx-mmc d0074000.mmc: allocated mmc-pwrseq
[    1.403756] meson-gx-mmc d0072000.mmc: Got CD GPIO
[    1.456160] Waiting for root device /dev/mmcblk1p2...
[    1.608180] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
[    1.610002] mmcblk1: mmc1:aaaa JULIE 29.7 GiB
[    1.617811]  mmcblk1: p1 p2

Also I did not encounter and read/write failure on the sdcard but I will re-test them.

root at odroid64:~# dd if=/dev/mmcblk1 of=/dev/zero bs=4M 7609+1 records in
7609+1 records out
31914983424 bytes (32 GB, 30 GiB) copied, 368.637 s, 86.6 MB/s root at odroid64:~#

Best Regards
-Anand