]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
rockchip: puma-rk3399: use gpio-hog instead of fixed-regulator for enabling eMMC...
authorQuentin Schulz <quentin.schulz@theobroma-systems.com>
Thu, 15 Sep 2022 09:14:22 +0000 (11:14 +0200)
committerKever Yang <kever.yang@rock-chips.com>
Wed, 19 Oct 2022 11:30:49 +0000 (19:30 +0800)
On Haikou devkit, it is possible to disable eMMC and SPI-NOR to force
booting from SD card or USB via rkdeveloptool by toggling a switch. This
switch needs to be overridden in software to be able to access eMMC and
SPI-NOR once the device has booted from SD Card. Puma SoM can override
this pin via gpio3_d5.

Until now, fixed regulator device was abused to model this, but since
there's now support for GPIO hogs, let's use it.

Since we want to be able to boot the SPL from SD Card but give it the
ability to load U-Boot proper from a fallback medium such as eMMC and
SPI-NOR, SPL support for GPIO hogs needs to be enabled too. Support for
other kinds of regulators are not needed anymore, so let's disable them.

Cc: Quentin Schulz <foss+uboot@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
arch/arm/dts/rk3399-puma-haikou-u-boot.dtsi
configs/puma-rk3399_defconfig

index e0476ab25c9d7963f8c3b5e39b4e4872678084c8..b9b6ac3f6c61b4cd252839a53678bf5d9c9a7f0c 100644 (file)
                spi5 = &spi5;
        };
 
-       /*
-        * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module
-        * eMMC and SPI flash powered-down initially (in fact it keeps the
-        * reset signal asserted).  Even though it is an enable signal, we
-        * model this as a regulator.
-        */
-       bios_enable: bios_enable {
-               compatible = "regulator-fixed";
-               u-boot,dm-pre-reloc;
-               regulator-name = "bios_enable";
-               enable-active-high;
-               gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-       };
-
        vdd_log: vdd-log {
                compatible = "pwm-regulator";
                pwms = <&pwm2 0 25000 1>;
 
 &gpio3 {
        u-boot,dm-pre-reloc;
+
+       /*
+        * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module
+        * eMMC and SPI flash powered-down initially (in fact it keeps the
+        * reset signal asserted). BIOS_DISABLE_OVERRIDE pin allows to re-enable
+        * eMMC and SPI after the SPL has been booted from SD Card.
+        */
+       bios_disable_override {
+               u-boot,dm-pre-reloc;
+               gpios = <RK_PD5 GPIO_ACTIVE_LOW>;
+               output-high;
+               line-name = "bios_disable_override";
+               gpio-hog;
+       };
 };
 
 &norflash {
index 6acc442ba84603624d64981c00cacc9939741462..6082b675233c03a3445cd2115e2363238acdf568 100644 (file)
@@ -58,6 +58,8 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
 CONFIG_SYS_MMC_ENV_DEV=1
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_GPIO_HOG=y
+CONFIG_SPL_GPIO_HOG=y
 CONFIG_ROCKCHIP_GPIO=y
 CONFIG_SYS_I2C_ROCKCHIP=y
 CONFIG_MISC=y
@@ -80,10 +82,7 @@ CONFIG_PHY_ROCKCHIP_TYPEC=y
 CONFIG_DM_PMIC_FAN53555=y
 CONFIG_PMIC_RK8XX=y
 CONFIG_SPL_PMIC_RK8XX=y
-CONFIG_SPL_DM_REGULATOR=y
 CONFIG_REGULATOR_PWM=y
-CONFIG_SPL_DM_REGULATOR_FIXED=y
-CONFIG_DM_REGULATOR_GPIO=y
 CONFIG_REGULATOR_RK8XX=y
 CONFIG_PWM_ROCKCHIP=y
 CONFIG_DM_RESET=y