ARM64: dts: meson-gxbb: odroidc2: enable sdcard UHS modes
Subsystems (2)
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
@@ -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
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
@@ -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
Quoted 13 lines · Anand Moon
Enable UHS modes for sdcard, on odroidc2.
Signed-off-by Anand Moon <[email protected]>--- 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@@ -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
-0max-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
Hi Jerome
Quoted 83 lines · Jerome Brunet
Quoted 13 lines · Anand Moon
Enable UHS modes for sdcard, on odroidc2.
Signed-off-by Anand Moon <[email protected]>--- 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@@ -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
-0max-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:
Tested-by Jerome Brunet <[email protected]>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