arm64: dts: freescale: imx8mp-verdin-dahlia: support sleep-moci
authorStefan Eichenberger <stefan.eichenberger@toradex.com>
Fri, 5 Apr 2024 16:07:18 +0000 (18:07 +0200)
committerShawn Guo <shawnguo@kernel.org>
Mon, 22 Apr 2024 04:36:56 +0000 (12:36 +0800)
Previously, we had the sleep-moci pin set to always on. However, the
Dahlia carrier board supports disabling the sleep-moci when the system
is suspended to power down peripherals that support it. This reduces
overall power consumption. This commit adds support for this feature by
disabling the reg_force_sleep_moci regulator and adding two new
regulators for the USB hub and PCIe that can be turned off when the
system is suspended.

Signed-off-by: Stefan Eichenberger <stefan.eichenberger@toradex.com>
Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi

index 718004fe983f0ea3352b248b031df01b075253c3..b62d6482da666171e63849c06f6e145f7a98f59a 100644 (file)
                        sound-dai = <&sai1>;
                };
        };
+
+       reg_usb_hub: regulator-usb-hub {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
+               gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+               regulator-boot-on;
+               regulator-name = "HUB_PWR_EN";
+       };
+
+       reg_pcie: regulator-pcie {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
+               gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+               regulator-boot-on;
+               regulator-name = "PCIE_1_PWR_EN";
+               startup-delay-us = <100000>;
+       };
 };
 
 &backlight {
 
 /* Verdin PCIE_1 */
 &pcie {
+       vpcie-supply = <&reg_pcie>;
        status = "okay";
 };
 
        vin-supply = <&reg_3p3v>;
 };
 
+/* We support turning off sleep moci on Dahlia */
+&reg_force_sleep_moci {
+       status = "disabled";
+};
+
 /* Verdin I2S_1 */
 &sai1 {
        assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
        status = "okay";
 };
 
+&usb_dwc3_1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       usb_hub_3_0: usb-hub@1 {
+               compatible = "usb424,5744";
+               reg = <1>;
+               peer-hub = <&usb_hub_2_0>;
+               vdd-supply = <&reg_usb_hub>;
+       };
+
+       usb_hub_2_0: usb-hub@2 {
+               compatible = "usb424,2744";
+               reg = <2>;
+               peer-hub = <&usb_hub_3_0>;
+               vdd-supply = <&reg_usb_hub>;
+       };
+};
+
 /* Verdin SD_1 */
 &usdhc2 {
        status = "okay";