Edge sd card uhs-1 mode enable

Edge board sd card default not enable ush-1 mode, but can be enable by modify dts.

according to some patch, I modified u-boot dts and kernel dts as follow:

u-boot dts (file Khadas/fenix/u-boot/arch/arm/dts/rk3399-kedge.dts) sdmmc node, :

&sdmmc {
	bus-width = <4>;
        // add following 5 lines
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	num-slots = <1>;
	sd-uhs-sdr104;

	status = "okay";
};

kernel dts (file Khadas/fenix/linux/arch/arm64/boot/dts/rockchip/rk3399-khadas-edge.dtsi) sdmmc node, uncomment uhs-sdr104:

&sdmmc {
	clock-frequency = <150000000>;
	clock-freq-min-max = <100000 150000000>;
	supports-sd;
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	num-slots = <1>;
	//sd-uhs-sdr104;
        sd-uhs-sdr104;
	vmmc-supply = <&vcc_sd>;
	vqmmc-supply = <&vccio_sd>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
	status = "okay";
};

but after build u-boot/kernel and install, but test result still in high-speed mode, no uhs-1 enabled.

sudo cat /sys/kernel/debug/mmc1/ios

clock:		50000000 Hz
actual clock:	50000000 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:	2 (sd high-speed)
signal voltage:	0 (3.30 V)
driver type:	0 (driver type B)
sudo dmesg | grep mmc1

[    2.596560] mmc_host mmc1: Bus speed (slot 0) = 400000Hz (slot req 400000Hz, actual 400000HZ div = 0)
[    2.891677] mmc_host mmc1: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ div = 0)
[    2.892930] mmc1: new high speed SDXC card at address e624
[    2.894206] mmcblk1: mmc1:e624 SN128 119 GiB 

So, how to enable uhs-1 mode for sd card of Edge, actually?

Are you sure you upgrade the kernel successfully?

Build kernel debian packages:

$ make kernel
$ make kernel-deb

You need to install both kernel & dtb.

  • linux-dtb-rockchip-4.4_*_arm64.deb
  • linux-image-rockchip-4.4_*_arm64.deb

I installed image Edge_Ubuntu-gnome-focal_Linux-5.7_arm64_EMMC_V0.9.1-20200602.img and build mainline kernel(now is linux-mainline-5.10-rc6)。

Now I try to flash and rebuild kernel 4.4. Is it only suitable for kernel 4.4?

I haven’t tested on 5.x kernel, please check 4.4 kernel first.

1 Like

OHHH, 4.4 works, now it support sdr104 mode. Thanks very much!