Skip to content

Instantly share code, notes, and snippets.

@hyphop
Last active August 14, 2019 04:47
Show Gist options
  • Save hyphop/e9970766661a63c65546af9c041b6f43 to your computer and use it in GitHub Desktop.
Save hyphop/e9970766661a63c65546af9c041b6f43 to your computer and use it in GitHub Desktop.
vim2_linux_mainline_emmc_bug.md

plz check my bug! for emmc read is fail but write is ok )))

uname -a
Linux Krescue 5.0.4 #2 SMP PREEMPT Tue Aug 13 13:21:42 MSK 2019 aarch64 GNU/Linux

VIM2 linux-mainline-5.0.4 + uboot legacy

sd works ok

dd if=/dev/mmcblk0 bs=1M count=1 of=/dev/null && echo ok
1+0 records in
1+0 records out
ok

mmc read fail

dd if=/dev/mmcblk1 bs=1M count=1 of=/dev/null && echo ok
dd: /dev/mmcblk1: I/O error

but write ok ))

dd if=/dev/zero bs=1M count=1 of=/dev/mmcblk1 && echo ok
1+0 records in
1+0 records out
ok

check messages

dmesg -c
[  184.597308]  mmcblk0: p1
[  231.159037]  mmcblk0: p1
[  235.336846] print_req_error: I/O error, dev mmcblk1, sector 0 flags 80700
[  235.337771] print_req_error: I/O error, dev mmcblk1, sector 0 flags 0
[  235.337781] Buffer I/O error on dev mmcblk1, logical block 0, async page read
[  235.338875] print_req_error: I/O error, dev mmcblk1, sector 0 flags 0
[  235.338884] Buffer I/O error on dev mmcblk1, logical block 0, async page read
[  268.461628] print_req_error: I/O error, dev mmcblk1, sector 0 flags 80700
[  268.463128] print_req_error: I/O error, dev mmcblk1, sector 0 flags 0
[  268.463139] Buffer I/O error on dev mmcblk1, logical block 0, async page read

configs

zcat /proc/config.gz | grep MMC | grep -v \#
CONFIG_MMC=y
CONFIG_PWRSEQ_EMMC=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=32
CONFIG_MMC_ARMMMCI=y
CONFIG_MMC_STM32_SDMMC=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
CONFIG_MMC_SDHCI_OF_ARASAN=y
CONFIG_MMC_SDHCI_OF_DWCMSHC=m
CONFIG_MMC_SDHCI_CADENCE=y
CONFIG_MMC_MESON_GX=y
CONFIG_MMC_MESON_MX_SDIO=y
CONFIG_MMC_SPI=y
CONFIG_MMC_DW=y
CONFIG_MMC_DW_PLTFM=y
CONFIG_MMC_DW_EXYNOS=y
CONFIG_MMC_DW_K3=y
CONFIG_MMC_REALTEK_USB=m
CONFIG_MMC_CQHCI=y
CONFIG_MTK_MMC=m

dts

dtc /sys/firmware/fdt 2>/dev/null | grep "mmc@" -A21
                        mmc@70000 {
                                compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
                                reg = <0x0 0x70000 0x0 0x800>;
                                interrupts = <0x0 0xd8 0x1>;
                                status = "okay";
                                clocks = <0xc 0x5e 0xc 0x77 0xc 0x4>;
                                clock-names = "core", "clkin0", "clkin1";
                                resets = <0x10 0x2c>;
                                pinctrl-0 = <0x2c>;
                                pinctrl-1 = <0x2d>;
                                pinctrl-names = "default", "clk-gate";
                                #address-cells = <0x1>;
                                #size-cells = <0x0>;
                                bus-width = <0x4>;
                                cap-sd-highspeed;
                                max-frequency = <0x5f5e100>;
                                non-removable;
                                disable-wp;
                                mmc-pwrseq = <0x2e>;
                                vmmc-supply = <0x2f>;
                                vqmmc-supply = <0x30>;

--
                        mmc@72000 {
                                compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
                                reg = <0x0 0x72000 0x0 0x800>;
                                interrupts = <0x0 0xd9 0x1>;
                                status = "okay";
                                clocks = <0xc 0x5f 0xc 0x7a 0xc 0x4>;
                                clock-names = "core", "clkin0", "clkin1";
                                resets = <0x10 0x2d>;
                                pinctrl-0 = <0x31>;
                                pinctrl-names = "default";
                                bus-width = <0x4>;
                                cap-sd-highspeed;
                                max-frequency = <0x5f5e100>;
                                disable-wp;
                                cd-gpios = <0x14 0x30 0x1>;
                                vmmc-supply = <0x2f>;
                                vqmmc-supply = <0x30>;
                        };

                        mmc@74000 {
                                compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
                                reg = <0x0 0x74000 0x0 0x800>;
                                interrupts = <0x0 0xda 0x1>;
                                status = "okay";
                                clocks = <0xc 0x60 0xc 0x7d 0xc 0x4>;
                                clock-names = "core", "clkin0", "clkin1";
                                resets = <0x10 0x2e>;
                                pinctrl-0 = <0x32 0x33>;
                                pinctrl-names = "default";
                                bus-width = <0x8>;
                                cap-sd-highspeed;
                                cap-mmc-highspeed;
                                max-frequency = <0x5f5e100>;
                                non-removable;
                                disable-wp;
                                mmc-ddr-1_8v;
                                mmc-pwrseq = <0x34>;
                                vmmc-supply = <0x35>;
                                vqmmc-supply = <0x30>;
                        };
@hyphop
Copy link
Author

hyphop commented Aug 13, 2019

uboot works ok

U-Boot 2015.01 (Aug 13 2019 - 13:25:02)
aarch64-none-elf-gcc (crosstool-NG linaro-1.13.1-4.8-2013.11 - Linaro GCC 2013.10) 4.8.3 20131111 (prerelease)
GNU ld (crosstool-NG linaro-1.13.1-4.8-2013.11 - Linaro GCC 2013.10) 2.23.2.20130610 Linaro 2013.10-4

kvim2#mmc list
SDIO Port B: 0
SDIO Port C: 1
kvim2#mmc dev 1
emmc/sd response timeout, cmd8, status=0x3ff2800
emmc/sd response timeout, cmd55, status=0x3ff2800
init_part() 293: PART_TYPE_AML
[mmc_init] mmc init success
switch to partitions #0, OK
mmc1(part 0) is current device
kvim2#mmc info 
Device: SDIO Port C
Manufacturer ID: 15
OEM: 100
Name: CJNB4 
Tran Speed: 52000000
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 58.2 GiB
mmc clock: 40000000
Bus Width: 8-bit
kvim2#mmc read 10000000 0 10 && echo ok

MMC read: dev # 1, block # 0, count 16 ... 16 blocks read: OK
ok


@hyphop
Copy link
Author

hyphop commented Aug 14, 2019

dmesg | mmc1

root@Krescue:~# dmesg | grep mmc1
[   12.439121] mmc1: new DDR MMC card at address 0001
[   12.443842] mmcblk1: mmc1:0001 CJNB4R 58.2 GiB 
[   12.446729] mmcblk1boot0: mmc1:0001 CJNB4R partition 1 4.00 MiB
[   12.449648] mmcblk1boot1: mmc1:0001 CJNB4R partition 2 4.00 MiB
[   12.450342] mmcblk1rpmb: mmc1:0001 CJNB4R partition 3 4.00 MiB, chardev (245:0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment