]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: dts: rockchip: add sdmmc UHS support for roc-rk3328-cc
authorLevin Du <djw@t-chip.com.cn>
Tue, 31 Jul 2018 05:59:22 +0000 (13:59 +0800)
committerHeiko Stuebner <heiko@sntech.de>
Mon, 27 Aug 2018 04:16:48 +0000 (06:16 +0200)
In roc-rk3328-cc board, the signal voltage of sdmmc is supplied by the
vcc_sdio regulator, which is a mux between 1.8V and 3.3V, controlled by
a special output only gpio pin labeled "gpiomut_pmuio_iout",
corresponding bit 1 of the syscon GRF_SOC_CON10.

This special pin can now be reference as <&grf_gpio 0>, thanks to the
gpio-syscon driver, which makes writing regulator-gpio possible.

If the signal voltage changes, the io domain needs to change
correspondingly.

To use this feature, the following options are required in kernel config:
 - CONFIG_GPIO_SYSCON=y
 - CONFIG_POWER_AVS=y
 - CONFIG_ROCKCHIP_IODOMAIN=y

Signed-off-by: Levin Du <djw@t-chip.com.cn>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
arch/arm64/boot/dts/rockchip/rk3328-roc-cc.dts

index b983abd3d9c8601b5d129e2c57c063b9d9534ebc..99d0d9912950bf6d33fecd4519c98eadc8e89e35 100644 (file)
                vin-supply = <&vcc_io>;
        };
 
+       vcc_sdio: sdmmcio-regulator {
+               compatible = "regulator-gpio";
+               gpios = <&grf_gpio 0 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x1
+                         3300000 0x0>;
+               regulator-name = "vcc_sdio";
+               regulator-type = "voltage";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               vin-supply = <&vcc_sys>;
+       };
+
        vcc_host1_5v: vcc_otg_5v: vcc-host1-5v-regulator {
                compatible = "regulator-fixed";
                enable-active-high;
 
        vccio1-supply = <&vcc_io>;
        vccio2-supply = <&vcc18_emmc>;
-       vccio3-supply = <&vcc_io>;
+       vccio3-supply = <&vcc_sdio>;
        vccio4-supply = <&vcc_18>;
        vccio5-supply = <&vcc_io>;
        vccio6-supply = <&vcc_io>;
        max-frequency = <150000000>;
        pinctrl-names = "default";
        pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4>;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
        vmmc-supply = <&vcc_sd>;
+       vqmmc-supply = <&vcc_sdio>;
        status = "okay";
 };