* [PATCH v4 1/4] arm64: dts: ti: k3-am62x-sk-common: Enable Main UART wakeup
2026-01-22 17:38 [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
@ 2026-01-22 17:38 ` Kendall Willis
2026-01-22 17:38 ` [PATCH v4 2/4] arm64: dts: ti: k3-am62a7-sk: " Kendall Willis
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Kendall Willis @ 2026-01-22 17:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, d-gole, msp
Cc: vishalm, sebin.francis, khilman, a-kaur, s-kochidanadu,
linux-arm-kernel, devicetree, linux-kernel, Kendall Willis
The Main UART can resume from suspend to RAM states when PIN_WKUP_EN
is enabled. Add the necessary pins needed to wakeup the system. Add the
system idle states that the Main UART can wakeup the system from.
The UART driver uses the "default" pinctrl state when the system is
active. In the suspend hook, if the UART is wakeup enabled, the "wakeup"
pinctrl state is selected by the UART driver in order to allow wakeup.
Upon resume, the default pinctrl state is selected again.
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
index 50ed859ae06c47af38b11753d909a91485d438e5..ab9e58c2d225eb44c054d984aad8f0bed92bf7e9 100644
--- a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
@@ -151,6 +151,13 @@ AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14/E11) UART0_TXD */
>;
};
+ main_uart0_pins_wakeup: main-uart0-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (D14/A13) UART0_RXD */
+ AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14/E11) UART0_TXD */
+ >;
+ };
+
main_uart1_pins_default: main-uart1-default-pins {
bootph-pre-ram;
pinctrl-single,pins = <
@@ -322,8 +329,12 @@ &wkup_uart0 {
&main_uart0 {
bootph-all;
status = "okay";
- pinctrl-names = "default";
+ pinctrl-names = "default", "wakeup";
pinctrl-0 = <&main_uart0_pins_default>;
+ pinctrl-1 = <&main_uart0_pins_wakeup>;
+ wakeup-source = <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
};
&main_uart1 {
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v4 2/4] arm64: dts: ti: k3-am62a7-sk: Enable Main UART wakeup
2026-01-22 17:38 [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
2026-01-22 17:38 ` [PATCH v4 1/4] arm64: dts: ti: k3-am62x-sk-common: Enable " Kendall Willis
@ 2026-01-22 17:38 ` Kendall Willis
2026-01-22 17:38 ` [PATCH v4 3/4] arm64: dts: ti: k3-am62p5-sk: " Kendall Willis
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Kendall Willis @ 2026-01-22 17:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, d-gole, msp
Cc: vishalm, sebin.francis, khilman, a-kaur, s-kochidanadu,
linux-arm-kernel, devicetree, linux-kernel, Kendall Willis
The Main UART can resume from suspend to RAM states when PIN_WKUP_EN
is enabled. Add the necessary pins needed to wakeup the system. Add the
system idle states that the Main UART can wakeup the system from.
The UART driver uses the "default" pinctrl state when the system is
active. In the suspend hook, if the UART is wakeup enabled, the "wakeup"
pinctrl state is selected by the UART driver in order to allow wakeup.
Upon resume, the default pinctrl state is selected again.
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
index e99bdbc2e0cbdf858f1631096f9c2a086191bab3..112f0f2a3d449b324d479c0e2a7d07d0ee57caf6 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
@@ -282,6 +282,13 @@ AM62AX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
bootph-all;
};
+ main_uart0_pins_wakeup: main-uart0-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62AX_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (E14) UART0_RXD */
+ AM62AX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
+ >;
+ };
+
main_uart1_pins_default: main-uart1-default-pins {
pinctrl-single,pins = <
AM62AX_IOPAD(0x01ac, PIN_INPUT, 2) /* (B21) MCASP0_AFSR.UART1_RXD */
@@ -717,8 +724,12 @@ &main_gpio_intr {
&main_uart0 {
status = "okay";
- pinctrl-names = "default";
+ pinctrl-names = "default", "wakeup";
pinctrl-0 = <&main_uart0_pins_default>;
+ pinctrl-1 = <&main_uart0_pins_wakeup>;
+ wakeup-source = <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
bootph-all;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v4 3/4] arm64: dts: ti: k3-am62p5-sk: Enable Main UART wakeup
2026-01-22 17:38 [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
2026-01-22 17:38 ` [PATCH v4 1/4] arm64: dts: ti: k3-am62x-sk-common: Enable " Kendall Willis
2026-01-22 17:38 ` [PATCH v4 2/4] arm64: dts: ti: k3-am62a7-sk: " Kendall Willis
@ 2026-01-22 17:38 ` Kendall Willis
2026-01-22 17:38 ` [PATCH v4 4/4] arm64: dts: ti: k3-am62l3-evm: " Kendall Willis
2026-01-27 20:14 ` [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support " Kevin Hilman
4 siblings, 0 replies; 6+ messages in thread
From: Kendall Willis @ 2026-01-22 17:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, d-gole, msp
Cc: vishalm, sebin.francis, khilman, a-kaur, s-kochidanadu,
linux-arm-kernel, devicetree, linux-kernel, Kendall Willis
The Main UART can resume from suspend to RAM states when PIN_WKUP_EN
is enabled. Add the necessary pins needed to wakeup the system. Add the
system idle states that the Main UART can wakeup the system from.
The UART driver uses the "default" pinctrl state when the system is
active. In the suspend hook, if the UART is wakeup enabled, the "wakeup"
pinctrl state is selected by the UART driver in order to allow wakeup.
Upon resume, the default pinctrl state is selected again.
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
index 4f7f6f95b02ef94a140edcef595ad8f6cc4b4113..fd323a64880970e17007ab130161dae56efd09d7 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
@@ -336,6 +336,13 @@ AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (B22) UART0_TXD */
bootph-all;
};
+ main_uart0_pins_wakeup: main-uart0-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62PX_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (A22) UART0_RXD */
+ AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (B22) UART0_TXD */
+ >;
+ };
+
main_uart1_pins_default: main-uart1-default-pins {
pinctrl-single,pins = <
AM62PX_IOPAD(0x0194, PIN_INPUT, 2) /* (D25) MCASP0_AXR3.UART1_CTSn */
@@ -692,8 +699,12 @@ partition@3fc0000 {
};
&main_uart0 {
- pinctrl-names = "default";
+ pinctrl-names = "default", "wakeup";
pinctrl-0 = <&main_uart0_pins_default>;
+ pinctrl-1 = <&main_uart0_pins_wakeup>;
+ wakeup-source = <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
status = "okay";
bootph-all;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v4 4/4] arm64: dts: ti: k3-am62l3-evm: Enable Main UART wakeup
2026-01-22 17:38 [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
` (2 preceding siblings ...)
2026-01-22 17:38 ` [PATCH v4 3/4] arm64: dts: ti: k3-am62p5-sk: " Kendall Willis
@ 2026-01-22 17:38 ` Kendall Willis
2026-01-27 20:14 ` [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support " Kevin Hilman
4 siblings, 0 replies; 6+ messages in thread
From: Kendall Willis @ 2026-01-22 17:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, d-gole, msp
Cc: vishalm, sebin.francis, khilman, a-kaur, s-kochidanadu,
linux-arm-kernel, devicetree, linux-kernel, Kendall Willis
The Main UART can resume from suspend to RAM states when PIN_WKUP_EN
is enabled. Add the necessary pins needed to wakeup the system. Add the
system idle states that the Main UART can wakeup the system from.
The UART driver uses the "default" pinctrl state when the system is
active. In the suspend hook, if the UART is wakeup enabled, the "wakeup"
pinctrl state is selected by the UART driver in order to allow wakeup.
Upon resume, the default pinctrl state is selected again.
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
index cae04cce337366b50928d39b0c888550b14e43d3..943a5b9408b119eb09426fabaa798de4879fd03b 100644
--- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
@@ -288,6 +288,13 @@ AM62LX_IOPAD(0x01b8, PIN_OUTPUT, 0) /* (C13) UART0_TXD */
bootph-all;
};
+ uart0_pins_wakeup: uart0-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62LX_IOPAD(0x01b4, PIN_INPUT | PIN_WKUP_EN, 0) /* (D13) UART0_RXD */
+ AM62LX_IOPAD(0x01b8, PIN_OUTPUT, 0) /* (C13) UART0_TXD */
+ >;
+ };
+
usb1_default_pins: usb1-default-pins {
pinctrl-single,pins = <
AM62LX_IOPAD(0x0248, PIN_INPUT | PIN_DS_PULLUD_ENABLE | PIN_DS_PULL_UP, 0) /* (A5) USB1_DRVVBUS */
@@ -329,7 +336,9 @@ &sdhci1 {
&uart0 {
pinctrl-0 = <&uart0_pins_default>;
- pinctrl-names = "default";
+ pinctrl-1 = <&uart0_pins_wakeup>;
+ pinctrl-names = "default", "wakeup";
+ wakeup-source;
status = "okay";
bootph-all;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support Main UART wakeup
2026-01-22 17:38 [PATCH v4 0/4] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
` (3 preceding siblings ...)
2026-01-22 17:38 ` [PATCH v4 4/4] arm64: dts: ti: k3-am62l3-evm: " Kendall Willis
@ 2026-01-27 20:14 ` Kevin Hilman
4 siblings, 0 replies; 6+ messages in thread
From: Kevin Hilman @ 2026-01-27 20:14 UTC (permalink / raw)
To: Kendall Willis, Nishanth Menon, Vignesh Raghavendra, Tero Kristo,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, d-gole, msp
Cc: vishalm, sebin.francis, a-kaur, s-kochidanadu, linux-arm-kernel,
devicetree, linux-kernel, Kendall Willis
Kendall Willis <k-willis@ti.com> writes:
> This series adds wakeup support for the Main UART in the device tree of
> the TI AM62 family of devices. It defines the specific pins and pinctrl
> states needed to wakeup the system from the Main UART via I/O
> daisy-chaining. The wakeup-source property is configured to describe the
> low power modes the system can wakeup from using the Main UART.
>
> Dependency
> ----------
> This series depends on the "serial: 8250: omap: set out-of-band wakeup if
> wakeup pinctrl exists" [1] patch. This series should NOT be merged until
> "serial: 8250: omap: set out-of-band wakeup if wakeup pinctrl exists"
> is merged.
>
> Testing
> -------
> Tested on a AM62P SK EVM board and a AM62L EVM board with all the above
> mentioned series implemented. Suspend/resume verified with the Main UART
> wakeup source by entering a keypress on the console.
>
> This github branch has all the necessary patches to test the series
> using v6.19-rc1:
> https://github.com/kwillis01/linux/tree/v6.19/uart-daisy-chain/all
>
> [1] https://lore.kernel.org/all/20260116-uart-wakeup-v2-1-0078ae9996e4@ti.com/
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
^ permalink raw reply [flat|nested] 6+ messages in thread