VIM3 sd card reader only support ‘SD HighSpeed’ at 25MB/s io speed default.
According to link VIM3 and sdcard reader in sdr-104 / UHS-I mode and datasheet, the sd is capable of sdr-104/UHS-1 mode.
In the fenix sdk, the sd card reader’s dts node:
&sd_emmc_c {
status = "okay";
emmc {
caps = "MMC_CAP_8_BIT_DATA",
"MMC_CAP_MMC_HIGHSPEED",
"MMC_CAP_SD_HIGHSPEED",
"MMC_CAP_NONREMOVABLE",
/* "MMC_CAP_1_8V_DDR", */
"MMC_CAP_HW_RESET",
"MMC_CAP_ERASE",
"MMC_CAP_CMD23",
"MMC_CAP_DRIVER_TYPE_A";
caps2 = "MMC_CAP2_HS200";
/*MMC_CAP2_HS400"*/
f_min = <400000>;
f_max = <200000000>;
};
};
&sd_emmc_b {
status = "okay";
sd {
caps = "MMC_CAP_4_BIT_DATA",
"MMC_CAP_MMC_HIGHSPEED",
"MMC_CAP_SD_HIGHSPEED";
f_min = <400000>;
f_max = <50000000>;
};
};
&sd_emmc_a {
status = "okay";
sdio {
caps = "MMC_CAP_4_BIT_DATA",
"MMC_CAP_MMC_HIGHSPEED",
"MMC_CAP_SD_HIGHSPEED",
"MMC_CAP_NONREMOVABLE",
"MMC_CAP_UHS_SDR12",
"MMC_CAP_UHS_SDR25",
"MMC_CAP_UHS_SDR50",
"MMC_CAP_UHS_SDR104",
"MMC_PM_KEEP_POWER",
"MMC_CAP_SDIO_IRQ";
f_min = <400000>;
f_max = <200000000>;
};
};
sd_emmc_c
is internal emmc, sd_emmc_b
is sd card, sd_emmc_a
is sdio wifi/bt.
I tried to modify sd_emmc_b
, add MMC_CAP_UHS_SDR104
and other MMC_CAP_UHS_XXX
to the caps
, change f_max
to 200000000
, then rebuild kernel and dtb, and flash the VIM3 board.
After reboot, when insert a sd card in reader, dmesg show errors, and NO /dev/mmcblk1
device does exists.
So, how to do to enable UHS-1 mode for sd card, really appreciated for your support!