The Problem: On ASUS Tinker Board S, when booting from the eMMC, and there is no card sd slot, then there are constant errors. Cause: Thanks must go to Robin Murphy @ ARM for idenifying the problem. The rk808 on the Tinker Board and Tinker Board S has many regulators, one vccio_sd powers the IO for the sd card. Unfortunatly this is also used in the card detect. Now when no card is install, the regulator is powered down. This means that the card detect floats, and this means random card detection. The Solution: Make sure that the sd IO is always powered, this means card detection is always active, which is what should be done on a board with an sd slot, which both the Tinker Board and Tinker Board S are. Hence change is made to the .dtsi which takes effect on all Tinker Boards as required. The change also adds "regulator-boot-on" the Tinker Board boot from uboot, and the sd card is always one option. Hence the IO must be powered in uboot, and so setting this flag. Also removed is "disable-wp" the micro sd card which are used have no write protection, so the concept doesn't mean anything, and the Tinker Boards work without this. Hence it is removed to simply. This change came from ArchLinux Arm, but we note it is the fix also used by Armbian: https://github.com/Miouyouyou/RockMyy/blob/master/patches/kernel/v5.0/DTS/0016-ARM-DTSI-rk3288-tinker-Setting-up-the-SD-regulators.patch Signed-off-by: David Summers <beagleboard@xxxxxxxxxxxxxxxxxxx> --- arch/arm/boot/dts/rk3288-tinker.dtsi | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi index aa107ee41b8b..6b7e55085b0c 100644 --- a/arch/arm/boot/dts/rk3288-tinker.dtsi +++ b/arch/arm/boot/dts/rk3288-tinker.dtsi @@ -254,6 +254,8 @@ }; vccio_sd: LDO_REG5 { + regulator-always-on; + regulator-boot-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; regulator-name = "vccio_sd"; @@ -431,7 +433,6 @@ cap-mmc-highspeed; cap-sd-highspeed; card-detect-delay = <200>; - disable-wp; /* wp not hooked up */ pinctrl-names = "default"; pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; status = "okay"; -- beagleboard@xxxxxxxxxxxxxxxxxxx