All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Krummenacher <max.oss.09@gmail.com>
To: max.krummenacher@toradex.com
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
	linux-pm@vger.kernel.org,
	Francesco Dolcini <francesco.dolcini@toradex.com>,
	Mark Brown <broonie@kernel.org>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Kevin Hilman <khilman@kernel.org>,
	Andrejs Cainikovs <andrejs.cainikovs@toradex.com>,
	Fabio Estevam <festevam@gmail.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Marcel Ziswiler <marcel.ziswiler@toradex.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Rob Herring <robh+dt@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Shawn Guo <shawnguo@kernel.org>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [RFC PATCH v1 5/5] ARM64: verdin-imx8mm: use regulator power domain to model sleep-moci
Date: Thu,  9 Jun 2022 17:08:51 +0200	[thread overview]
Message-ID: <20220609150851.23084-6-max.oss.09@gmail.com> (raw)
In-Reply-To: <20220609150851.23084-1-max.oss.09@gmail.com>

From: Max Krummenacher <max.krummenacher@toradex.com>

The Verdin CTRL_SLEEP_MOCI# pin signals the carrier board that the module
is in sleep and it may switch off unneeded power.

Control this pin with a regulator power domain controller which uses a
fixed regulator with a gpio enable.

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>

---

 .../dts/freescale/imx8mm-verdin-dahlia.dtsi   |  1 +
 .../boot/dts/freescale/imx8mm-verdin-dev.dtsi |  2 ++
 .../boot/dts/freescale/imx8mm-verdin.dtsi     | 35 +++++++++++++------
 3 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi
index c2a5c2f7b204..03416dc593d8 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi
@@ -92,6 +92,7 @@
 
 /* Verdin PCIE_1 */
 &pcie0 {
+	power-domains = <&pd_sleep_moci>;
 	status = "okay";
 };
 
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi
index 73cc3fafa018..f887b907fdde 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi
@@ -50,6 +50,7 @@
 	/* Audio Codec */
 	nau8822_1a: audio-codec@1a {
 		compatible = "nuvoton,nau8822";
+		power-domains = <&pd_sleep_moci>;
 		reg = <0x1a>;
 	};
 };
@@ -59,6 +60,7 @@
 	linux,rs485-enabled-at-boot-time;
 	rs485-rts-active-low;
 	rs485-rx-during-tx;
+	power-domains = <&pd_sleep_moci>;
 };
 
 /* Limit frequency on dev board due to long traces and bad signal integrity */
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
index eafa88d980b3..b5daa8f83bef 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
@@ -53,6 +53,14 @@
 		};
 	};
 
+	pd_sleep_moci: power-domain-sleep-moci {
+		compatible = "regulator-pm-pd";
+		label = "pd_sleep_moci";
+		power-domains = <&pgc_pcie>;
+		power-supply = <&reg_sleep_moci>;
+		#power-domain-cells = <0>;
+	};
+
 	/* Carrier Board Supplies */
 	reg_1p8v: regulator-1p8v {
 		compatible = "regulator-fixed";
@@ -90,6 +98,19 @@
 		startup-delay-us = <200000>;
 	};
 
+	reg_sleep_moci: regulator-sleep-moci {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+		off-on-delay = <2000>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
+		regulator-max-microvolt = <1800000>;
+		regulator-min-microvolt = <1800000>;
+		regulator-name = "CTRL_SLEEP_MOCI#";
+		startup-delay-us = <2000>;
+	};
+
 	reg_usb_otg1_vbus: regulator-usb-otg1 {
 		compatible = "regulator-fixed";
 		enable-active-high;
@@ -109,6 +130,7 @@
 		gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_reg_usb2_en>;
+		power-domains = <&pd_sleep_moci>;
 		regulator-max-microvolt = <5000000>;
 		regulator-min-microvolt = <5000000>;
 		regulator-name = "USB_2_EN";
@@ -198,6 +220,7 @@
 		interrupts-extended = <&gpio1 6 IRQ_TYPE_EDGE_FALLING>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_can1_int>;
+		power-domains = <&pd_sleep_moci>;
 		reg = <0>;
 		spi-max-frequency = <8500000>;
 	};
@@ -305,16 +328,6 @@
 			  "SODIMM_212",
 			  "SODIMM_151",
 			  "SODIMM_153";
-
-	ctrl-sleep-moci-hog {
-		gpio-hog;
-		/* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
-		gpios = <1 GPIO_ACTIVE_HIGH>;
-		line-name = "CTRL_SLEEP_MOCI#";
-		output-high;
-		pinctrl-names = "default";
-		pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
-	};
 };
 
 /* On-module I2C */
@@ -560,6 +573,7 @@
 		enable-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_gpio_10_dsi>;
+		power-domains = <&pd_sleep_moci>;
 		reg = <0x2c>;
 		status = "disabled";
 	};
@@ -576,6 +590,7 @@
 		compatible = "lontium,lt8912b";
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_gpio_10_dsi>, <&pinctrl_pwm_3_dsi_hpd_gpio>;
+		power-domains = <&pd_sleep_moci>;
 		reg = <0x48>;
 		/* Verdin GPIO_9_DSI (LT8912 INT, SODIMM 17, unused) */
 		/* Verdin GPIO_10_DSI (SODIMM 21) */
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: Max Krummenacher <max.oss.09@gmail.com>
To: max.krummenacher@toradex.com
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
	linux-pm@vger.kernel.org,
	Francesco Dolcini <francesco.dolcini@toradex.com>,
	Mark Brown <broonie@kernel.org>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Kevin Hilman <khilman@kernel.org>,
	Andrejs Cainikovs <andrejs.cainikovs@toradex.com>,
	Fabio Estevam <festevam@gmail.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Marcel Ziswiler <marcel.ziswiler@toradex.com>,
	NXP Linux Team <linux-imx@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Rob Herring <robh+dt@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Shawn Guo <shawnguo@kernel.org>,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [RFC PATCH v1 5/5] ARM64: verdin-imx8mm: use regulator power domain to model sleep-moci
Date: Thu,  9 Jun 2022 17:08:51 +0200	[thread overview]
Message-ID: <20220609150851.23084-6-max.oss.09@gmail.com> (raw)
In-Reply-To: <20220609150851.23084-1-max.oss.09@gmail.com>

From: Max Krummenacher <max.krummenacher@toradex.com>

The Verdin CTRL_SLEEP_MOCI# pin signals the carrier board that the module
is in sleep and it may switch off unneeded power.

Control this pin with a regulator power domain controller which uses a
fixed regulator with a gpio enable.

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>

---

 .../dts/freescale/imx8mm-verdin-dahlia.dtsi   |  1 +
 .../boot/dts/freescale/imx8mm-verdin-dev.dtsi |  2 ++
 .../boot/dts/freescale/imx8mm-verdin.dtsi     | 35 +++++++++++++------
 3 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi
index c2a5c2f7b204..03416dc593d8 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi
@@ -92,6 +92,7 @@
 
 /* Verdin PCIE_1 */
 &pcie0 {
+	power-domains = <&pd_sleep_moci>;
 	status = "okay";
 };
 
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi
index 73cc3fafa018..f887b907fdde 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin-dev.dtsi
@@ -50,6 +50,7 @@
 	/* Audio Codec */
 	nau8822_1a: audio-codec@1a {
 		compatible = "nuvoton,nau8822";
+		power-domains = <&pd_sleep_moci>;
 		reg = <0x1a>;
 	};
 };
@@ -59,6 +60,7 @@
 	linux,rs485-enabled-at-boot-time;
 	rs485-rts-active-low;
 	rs485-rx-during-tx;
+	power-domains = <&pd_sleep_moci>;
 };
 
 /* Limit frequency on dev board due to long traces and bad signal integrity */
diff --git a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
index eafa88d980b3..b5daa8f83bef 100644
--- a/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi
@@ -53,6 +53,14 @@
 		};
 	};
 
+	pd_sleep_moci: power-domain-sleep-moci {
+		compatible = "regulator-pm-pd";
+		label = "pd_sleep_moci";
+		power-domains = <&pgc_pcie>;
+		power-supply = <&reg_sleep_moci>;
+		#power-domain-cells = <0>;
+	};
+
 	/* Carrier Board Supplies */
 	reg_1p8v: regulator-1p8v {
 		compatible = "regulator-fixed";
@@ -90,6 +98,19 @@
 		startup-delay-us = <200000>;
 	};
 
+	reg_sleep_moci: regulator-sleep-moci {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+		off-on-delay = <2000>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
+		regulator-max-microvolt = <1800000>;
+		regulator-min-microvolt = <1800000>;
+		regulator-name = "CTRL_SLEEP_MOCI#";
+		startup-delay-us = <2000>;
+	};
+
 	reg_usb_otg1_vbus: regulator-usb-otg1 {
 		compatible = "regulator-fixed";
 		enable-active-high;
@@ -109,6 +130,7 @@
 		gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_reg_usb2_en>;
+		power-domains = <&pd_sleep_moci>;
 		regulator-max-microvolt = <5000000>;
 		regulator-min-microvolt = <5000000>;
 		regulator-name = "USB_2_EN";
@@ -198,6 +220,7 @@
 		interrupts-extended = <&gpio1 6 IRQ_TYPE_EDGE_FALLING>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_can1_int>;
+		power-domains = <&pd_sleep_moci>;
 		reg = <0>;
 		spi-max-frequency = <8500000>;
 	};
@@ -305,16 +328,6 @@
 			  "SODIMM_212",
 			  "SODIMM_151",
 			  "SODIMM_153";
-
-	ctrl-sleep-moci-hog {
-		gpio-hog;
-		/* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
-		gpios = <1 GPIO_ACTIVE_HIGH>;
-		line-name = "CTRL_SLEEP_MOCI#";
-		output-high;
-		pinctrl-names = "default";
-		pinctrl-0 = <&pinctrl_ctrl_sleep_moci>;
-	};
 };
 
 /* On-module I2C */
@@ -560,6 +573,7 @@
 		enable-gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_gpio_10_dsi>;
+		power-domains = <&pd_sleep_moci>;
 		reg = <0x2c>;
 		status = "disabled";
 	};
@@ -576,6 +590,7 @@
 		compatible = "lontium,lt8912b";
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_gpio_10_dsi>, <&pinctrl_pwm_3_dsi_hpd_gpio>;
+		power-domains = <&pd_sleep_moci>;
 		reg = <0x48>;
 		/* Verdin GPIO_9_DSI (LT8912 INT, SODIMM 17, unused) */
 		/* Verdin GPIO_10_DSI (SODIMM 21) */
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-06-09 15:10 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-09 15:08 [PATCH v1 0/5] power: domain: Add driver for a PM domain provider which controls Max Krummenacher
2022-06-09 15:08 ` Max Krummenacher
2022-06-09 15:08 ` [PATCH v1 1/5] dt-bindings: power: Add bindings for a power domain controlled by a regulator Max Krummenacher
2022-06-10  2:57   ` Rob Herring
2022-06-15 15:19     ` Max Krummenacher
2022-06-15 17:16       ` Krzysztof Kozlowski
2022-06-14  7:23   ` Geert Uytterhoeven
2022-06-15 15:18     ` Max Krummenacher
2022-06-09 15:08 ` [PATCH v1 2/5] pm: add regulator power domain controller Max Krummenacher
2022-06-09 15:08 ` [PATCH v1 3/5] MAINTAINERS: add REGULATOR POWER DOMAIN Max Krummenacher
2022-06-09 15:08 ` [RFC PATCH v1 4/5] arm64: defconfig: Enable generic power domain controller controlling a regulator Max Krummenacher
2022-06-09 15:08   ` Max Krummenacher
2022-06-09 15:08 ` Max Krummenacher [this message]
2022-06-09 15:08   ` [RFC PATCH v1 5/5] ARM64: verdin-imx8mm: use regulator power domain to model sleep-moci Max Krummenacher
2022-06-14  7:29   ` Geert Uytterhoeven
2022-06-14  7:29     ` Geert Uytterhoeven
2022-06-15 15:32     ` Max Krummenacher
2022-06-15 15:32       ` Max Krummenacher
2022-06-13 19:15 ` [PATCH v1 0/5] power: domain: Add driver for a PM domain provider which controls Rob Herring
2022-06-13 19:15   ` Rob Herring
2022-06-14  7:22   ` Geert Uytterhoeven
2022-06-14  7:22     ` Geert Uytterhoeven
2022-06-15 16:10     ` Max Krummenacher
2022-06-15 16:10       ` Max Krummenacher
2022-06-15 17:15       ` Krzysztof Kozlowski
2022-06-15 17:15         ` Krzysztof Kozlowski
2022-06-15 17:31         ` Marcel Ziswiler
2022-06-15 17:31           ` Marcel Ziswiler
2022-06-15 17:37           ` Krzysztof Kozlowski
2022-06-15 17:37             ` Krzysztof Kozlowski
2022-06-15 18:13             ` Marcel Ziswiler
2022-06-15 18:13               ` Marcel Ziswiler
2022-06-15 18:48               ` Dmitry Baryshkov
2022-06-15 18:48                 ` Dmitry Baryshkov
2022-06-15 20:48               ` Krzysztof Kozlowski
2022-06-15 20:48                 ` Krzysztof Kozlowski
2022-06-15 18:24           ` Robin Murphy
2022-06-15 18:24             ` Robin Murphy
2022-06-15 19:12             ` Mark Brown
2022-06-15 19:12               ` Mark Brown
2022-06-15 21:14 ` Ulf Hansson
2022-06-15 21:14   ` Ulf Hansson
2022-06-16 12:50 ` Linus Walleij
2022-06-16 12:50   ` Linus Walleij
2022-06-23 16:14   ` Max Krummenacher
2022-06-23 16:14     ` Max Krummenacher
2022-07-13 11:43     ` Ulf Hansson
2022-07-13 11:43       ` Ulf Hansson
2022-07-18  9:49       ` Linus Walleij
2022-07-18  9:49         ` Linus Walleij
2022-07-26 16:03       ` Francesco Dolcini
2022-07-26 16:03         ` Francesco Dolcini
2022-07-28  9:37         ` Ulf Hansson
2022-07-28  9:37           ` Ulf Hansson
2022-07-28 11:21           ` Francesco Dolcini
2022-07-28 11:21             ` Francesco Dolcini
2022-08-26 13:50             ` Ulf Hansson
2022-08-26 13:50               ` Ulf Hansson
2022-09-09 14:22               ` Francesco Dolcini
2022-09-09 14:22                 ` Francesco Dolcini
2022-09-22 13:49                 ` Ulf Hansson
2022-09-22 13:49                   ` Ulf Hansson
2022-09-23 18:00                   ` Krzysztof Kozlowski
2022-09-23 18:00                     ` Krzysztof Kozlowski
2022-09-26 10:12                     ` Ulf Hansson
2022-09-26 10:12                       ` Ulf Hansson
2022-09-26 15:11                       ` Krzysztof Kozlowski
2022-09-26 15:11                         ` Krzysztof Kozlowski
2022-09-27  9:48                         ` Ulf Hansson
2022-09-27  9:48                           ` Ulf Hansson
2022-09-27 12:49                           ` Geert Uytterhoeven
2022-09-27 12:49                             ` Geert Uytterhoeven
2022-09-27 14:26                             ` Krzysztof Kozlowski
2022-09-27 14:26                               ` Krzysztof Kozlowski
2022-09-28  7:59                               ` Ulf Hansson
2022-09-28  7:59                                 ` Ulf Hansson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220609150851.23084-6-max.oss.09@gmail.com \
    --to=max.oss.09@gmail.com \
    --cc=andrejs.cainikovs@toradex.com \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=francesco.dolcini@toradex.com \
    --cc=kernel@pengutronix.de \
    --cc=khilman@kernel.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=marcel.ziswiler@toradex.com \
    --cc=max.krummenacher@toradex.com \
    --cc=rafael@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.