* [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup
@ 2025-12-31 2:38 Kendall Willis
2025-12-31 2:38 ` [PATCH v2 1/5] arm64: dts: ti: k3-am62l: Define possible system states Kendall Willis
` (6 more replies)
0 siblings, 7 replies; 11+ messages in thread
From: Kendall Willis @ 2025-12-31 2:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: d-gole, vishalm, sebin.francis, msp, khilman, a-kaur,
s-kochidanadu, linux-arm-kernel, devicetree, linux-kernel,
Kendall Willis
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.
Implementation
--------------
This series is intended to be implemented along with the following
series:
1. "pmdomain: ti_sci: handle wakeup constraint for out-of-band wakeup":
Skips setting constraints for wakeup sources that have
out-of-band wakeup capability.
https://github.com/kwillis01/linux/tree/v6.19/uart-daisy-chain/pmdomain
2. "serial: 8250: omap: set out-of-band wakeup if wakeup pinctrl exists":
Implements out-of-band wakeup from the UARTs for TI K3 SoCs.
https://github.com/kwillis01/linux/tree/v6.19/uart-daisy-chain/uart-wakeup
3. "arm64: dts: ti: k3-am62: Support Main UART wakeup": (this series)
implements the functionality to wakeup the system from the Main UART.
https://github.com/kwillis01/linux/tree/b4/uart-daisy-chain-dts
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
Revisions
---------
v1->v2:
- Define AM62L system idle states
- Enable Main UART wakeup for AM62L SoC
- Rebase to v6.19-rc3
v1: https://lore.kernel.org/all/20250904212827.3730314-1-k-willis@ti.com/
---
Kendall Willis (5):
arm64: dts: ti: k3-am62l: Define possible system states
arm64: dts: ti: k3-am62x-sk-common: Enable Main UART wakeup
arm64: dts: ti: k3-am62a7-sk: Enable Main UART wakeup
arm64: dts: ti: k3-am62p5-sk: Enable Main UART wakeup
arm64: dts: ti: k3-am62l3-evm: Enable Main UART wakeup
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 24 ++++++++++++++++++++----
arch/arm64/boot/dts/ti/k3-am62l.dtsi | 12 ++++++++++++
arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 22 ++++++++++++++++++----
arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 24 ++++++++++++++++++++----
arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 24 ++++++++++++++++++++----
5 files changed, 90 insertions(+), 16 deletions(-)
---
base-commit: f323ed34dc9831effb1ee95403bc364869d29d4c
change-id: 20251230-b4-uart-daisy-chain-dts-d01aa40560b2
Best regards,
--
Kendall Willis <k-willis@ti.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v2 1/5] arm64: dts: ti: k3-am62l: Define possible system states
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
@ 2025-12-31 2:38 ` Kendall Willis
2025-12-31 2:38 ` [PATCH v2 2/5] arm64: dts: ti: k3-am62x-sk-common: Enable Main UART wakeup Kendall Willis
` (5 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Kendall Willis @ 2025-12-31 2:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: d-gole, vishalm, sebin.francis, msp, khilman, a-kaur,
s-kochidanadu, linux-arm-kernel, devicetree, linux-kernel,
Kendall Willis
Add the system states that are available on the TI AM62L SoC.
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62l.dtsi | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62l.dtsi b/arch/arm64/boot/dts/ti/k3-am62l.dtsi
index 23acdbb301fe38e6045c0ef3ae340196009ed217..3b84ac9be6d075f5eb469c3e503b2e494c62be27 100644
--- a/arch/arm64/boot/dts/ti/k3-am62l.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62l.dtsi
@@ -64,6 +64,18 @@ pmu: pmu {
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
};
+ system-idle-states {
+ system_rtc_ddr: system-rtc-ddr {
+ compatible = "system-idle-state";
+ idle-state-name = "mem-deep";
+ };
+
+ system_deep_sleep: system-deep-sleep {
+ compatible = "system-idle-state";
+ idle-state-name = "mem";
+ };
+ };
+
cbass_main: bus@f0000 {
compatible = "simple-bus";
ranges = <0x00 0x00600000 0x00 0x00600000 0x00 0x00010100>, /* GPIO */
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 2/5] arm64: dts: ti: k3-am62x-sk-common: Enable Main UART wakeup
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
2025-12-31 2:38 ` [PATCH v2 1/5] arm64: dts: ti: k3-am62l: Define possible system states Kendall Willis
@ 2025-12-31 2:38 ` Kendall Willis
2025-12-31 2:38 ` [PATCH v2 3/5] arm64: dts: ti: k3-am62a7-sk: " Kendall Willis
` (4 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Kendall Willis @ 2025-12-31 2:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: d-gole, vishalm, sebin.francis, msp, 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.
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
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..e84356a971ee5a2c1c799eb5a1830cc8efc9adf7 100644
--- a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
@@ -143,14 +143,26 @@ &phy_gmii_sel {
&main_pmx0 {
/* First pad number is ALW package and second is AMC package */
- main_uart0_pins_default: main-uart0-default-pins {
+ main_uart0_tx_pins_default: main-uart0-tx-default-pins {
bootph-all;
pinctrl-single,pins = <
- AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14/A13) UART0_RXD */
AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14/E11) UART0_TXD */
>;
};
+ main_uart0_rx_pins_default: main-uart0-rx-default-pins {
+ bootph-all;
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14/A13) UART0_RXD */
+ >;
+ };
+
+ main_uart0_rx_pins_wakeup: main-uart0-rx-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (D14/A13) UART0_RXD */
+ >;
+ };
+
main_uart1_pins_default: main-uart1-default-pins {
bootph-pre-ram;
pinctrl-single,pins = <
@@ -322,8 +334,12 @@ &wkup_uart0 {
&main_uart0 {
bootph-all;
status = "okay";
- pinctrl-names = "default";
- pinctrl-0 = <&main_uart0_pins_default>;
+ pinctrl-names = "default", "wakeup";
+ pinctrl-0 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_default>;
+ pinctrl-1 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_wakeup>;
+ wakeup-source = <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
};
&main_uart1 {
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 3/5] arm64: dts: ti: k3-am62a7-sk: Enable Main UART wakeup
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
2025-12-31 2:38 ` [PATCH v2 1/5] arm64: dts: ti: k3-am62l: Define possible system states Kendall Willis
2025-12-31 2:38 ` [PATCH v2 2/5] arm64: dts: ti: k3-am62x-sk-common: Enable Main UART wakeup Kendall Willis
@ 2025-12-31 2:38 ` Kendall Willis
2025-12-31 2:38 ` [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: " Kendall Willis
` (3 subsequent siblings)
6 siblings, 0 replies; 11+ messages in thread
From: Kendall Willis @ 2025-12-31 2:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: d-gole, vishalm, sebin.francis, msp, 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.
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
index e99bdbc2e0cbdf858f1631096f9c2a086191bab3..85f93975fa728e3e65f5c7562e67e684cd5a4da2 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
@@ -274,14 +274,26 @@ AM62AX_IOPAD(0x078, PIN_OUTPUT, 1) /* (T21) GPMC0_AD15.VOUT0_DATA23 */
>;
};
- main_uart0_pins_default: main-uart0-default-pins {
+ main_uart0_tx_pins_default: main-uart0-tx-default-pins {
pinctrl-single,pins = <
- AM62AX_IOPAD(0x1c8, PIN_INPUT, 0) /* (E14) UART0_RXD */
AM62AX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (D15) UART0_TXD */
>;
bootph-all;
};
+ main_uart0_rx_pins_default: main-uart0-rx-default-pins {
+ pinctrl-single,pins = <
+ AM62AX_IOPAD(0x1c8, PIN_INPUT, 0) /* (E14) UART0_RXD */
+ >;
+ bootph-all;
+ };
+
+ main_uart0_rx_pins_wakeup: main-uart0-rx-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62AX_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (E14) UART0_RXD */
+ >;
+ };
+
main_uart1_pins_default: main-uart1-default-pins {
pinctrl-single,pins = <
AM62AX_IOPAD(0x01ac, PIN_INPUT, 2) /* (B21) MCASP0_AFSR.UART1_RXD */
@@ -717,8 +729,12 @@ &main_gpio_intr {
&main_uart0 {
status = "okay";
- pinctrl-names = "default";
- pinctrl-0 = <&main_uart0_pins_default>;
+ pinctrl-names = "default", "wakeup";
+ pinctrl-0 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_default>;
+ pinctrl-1 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_wakeup>;
+ wakeup-source = <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
bootph-all;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: Enable Main UART wakeup
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
` (2 preceding siblings ...)
2025-12-31 2:38 ` [PATCH v2 3/5] arm64: dts: ti: k3-am62a7-sk: " Kendall Willis
@ 2025-12-31 2:38 ` Kendall Willis
2026-01-05 13:52 ` Nishanth Menon
2025-12-31 2:38 ` [PATCH v2 5/5] arm64: dts: ti: k3-am62l3-evm: " Kendall Willis
` (2 subsequent siblings)
6 siblings, 1 reply; 11+ messages in thread
From: Kendall Willis @ 2025-12-31 2:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: d-gole, vishalm, sebin.francis, msp, 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.
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
index ef719c6334fc094f01d9e8185992f2f58320e17d..96bba65f4f16792834567324db6f7f2bdee7bc06 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
@@ -328,14 +328,26 @@ AM62PX_IOPAD(0x0164, PIN_INPUT, 0) /* (A20) RGMII2_TX_CTL */
bootph-all;
};
- main_uart0_pins_default: main-uart0-default-pins {
+ main_uart0_tx_pins_default: main-uart0-tx-default-pins {
pinctrl-single,pins = <
- AM62PX_IOPAD(0x1c8, PIN_INPUT, 0) /* (A22) UART0_RXD */
AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (B22) UART0_TXD */
>;
bootph-all;
};
+ main_uart0_rx_pins_default: main-uart0-rx-default-pins {
+ pinctrl-single,pins = <
+ AM62PX_IOPAD(0x1c8, PIN_INPUT, 0) /* (A22) UART0_RXD */
+ >;
+ bootph-all;
+ };
+
+ main_uart0_rx_pins_wakeup: main-uart0-rx-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62PX_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (A22) UART0_RXD */
+ >;
+ };
+
main_uart1_pins_default: main-uart1-default-pins {
pinctrl-single,pins = <
AM62PX_IOPAD(0x0194, PIN_INPUT, 2) /* (D25) MCASP0_AXR3.UART1_CTSn */
@@ -692,8 +704,12 @@ partition@3fc0000 {
};
&main_uart0 {
- pinctrl-names = "default";
- pinctrl-0 = <&main_uart0_pins_default>;
+ pinctrl-names = "default", "wakeup";
+ pinctrl-0 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_default>;
+ pinctrl-1 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_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] 11+ messages in thread
* [PATCH v2 5/5] arm64: dts: ti: k3-am62l3-evm: Enable Main UART wakeup
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
` (3 preceding siblings ...)
2025-12-31 2:38 ` [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: " Kendall Willis
@ 2025-12-31 2:38 ` Kendall Willis
2026-01-05 10:33 ` [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support " Markus Schneider-Pargmann
2026-01-05 13:17 ` Dhruva Gole
6 siblings, 0 replies; 11+ messages in thread
From: Kendall Willis @ 2025-12-31 2:38 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: d-gole, vishalm, sebin.francis, msp, 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.
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
index cae04cce337366b50928d39b0c888550b14e43d3..911719278e7191d96a886ce1e818f98085dd5d67 100644
--- a/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62l3-evm.dts
@@ -280,14 +280,26 @@ AM62LX_IOPAD(0x0234, PIN_INPUT, 0) /* (B6) MMC1_SDCD */
bootph-all;
};
- uart0_pins_default: uart0-default-pins {
+ uart0_tx_pins_default: uart0-tx-default-pins {
pinctrl-single,pins = <
- AM62LX_IOPAD(0x01b4, PIN_INPUT, 0) /* (D13) UART0_RXD */
AM62LX_IOPAD(0x01b8, PIN_OUTPUT, 0) /* (C13) UART0_TXD */
>;
bootph-all;
};
+ uart0_rx_pins_default: uart0-rx-default-pins {
+ pinctrl-single,pins = <
+ AM62LX_IOPAD(0x01b4, PIN_INPUT, 0) /* (D13) UART0_RXD */
+ >;
+ bootph-all;
+ };
+
+ uart0_rx_pins_wakeup: uart0-rx-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62LX_IOPAD(0x01b4, PIN_INPUT | PIN_WKUP_EN, 0) /* (D13) UART0_RXD */
+ >;
+ };
+
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 */
@@ -328,8 +340,10 @@ &sdhci1 {
};
&uart0 {
- pinctrl-0 = <&uart0_pins_default>;
- pinctrl-names = "default";
+ pinctrl-0 = <&uart0_tx_pins_default>, <&uart0_rx_pins_default>;
+ pinctrl-1 = <&uart0_tx_pins_default>, <&uart0_rx_pins_wakeup>;
+ pinctrl-names = "default", "wakeup";
+ wakeup-source = <&system_deep_sleep>;
status = "okay";
bootph-all;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
` (4 preceding siblings ...)
2025-12-31 2:38 ` [PATCH v2 5/5] arm64: dts: ti: k3-am62l3-evm: " Kendall Willis
@ 2026-01-05 10:33 ` Markus Schneider-Pargmann
2026-01-05 13:17 ` Dhruva Gole
6 siblings, 0 replies; 11+ messages in thread
From: Markus Schneider-Pargmann @ 2026-01-05 10:33 UTC (permalink / raw)
To: Kendall Willis, Nishanth Menon, Vignesh Raghavendra, Tero Kristo,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: d-gole, vishalm, sebin.francis, msp, khilman, a-kaur,
s-kochidanadu, linux-arm-kernel, devicetree, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 494 bytes --]
On Wed Dec 31, 2025 at 3:38 AM CET, Kendall Willis wrote:
> 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.
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
Best
Markus
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 289 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
` (5 preceding siblings ...)
2026-01-05 10:33 ` [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support " Markus Schneider-Pargmann
@ 2026-01-05 13:17 ` Dhruva Gole
6 siblings, 0 replies; 11+ messages in thread
From: Dhruva Gole @ 2026-01-05 13:17 UTC (permalink / raw)
To: Kendall Willis
Cc: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, vishalm, sebin.francis, msp,
khilman, a-kaur, s-kochidanadu, linux-arm-kernel, devicetree,
linux-kernel
On Dec 30, 2025 at 20:38:19 -0600, Kendall Willis wrote:
> 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.
>
> Implementation
> --------------
> This series is intended to be implemented along with the following
> series:
>
> 1. "pmdomain: ti_sci: handle wakeup constraint for out-of-band wakeup":
> Skips setting constraints for wakeup sources that have
> out-of-band wakeup capability.
> https://github.com/kwillis01/linux/tree/v6.19/uart-daisy-chain/pmdomain
>
> 2. "serial: 8250: omap: set out-of-band wakeup if wakeup pinctrl exists":
> Implements out-of-band wakeup from the UARTs for TI K3 SoCs.
> https://github.com/kwillis01/linux/tree/v6.19/uart-daisy-chain/uart-wakeup
>
> 3. "arm64: dts: ti: k3-am62: Support Main UART wakeup": (this series)
> implements the functionality to wakeup the system from the Main UART.
> https://github.com/kwillis01/linux/tree/b4/uart-daisy-chain-dts
>
> 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
>
> Revisions
> ---------
> v1->v2:
> - Define AM62L system idle states
> - Enable Main UART wakeup for AM62L SoC
> - Rebase to v6.19-rc3
For the series,
Reviewed-by: Dhruva Gole <d-gole@ti.com>
>
> v1: https://lore.kernel.org/all/20250904212827.3730314-1-k-willis@ti.com/
>
> ---
> Kendall Willis (5):
> arm64: dts: ti: k3-am62l: Define possible system states
> arm64: dts: ti: k3-am62x-sk-common: Enable Main UART wakeup
> arm64: dts: ti: k3-am62a7-sk: Enable Main UART wakeup
> arm64: dts: ti: k3-am62p5-sk: Enable Main UART wakeup
> arm64: dts: ti: k3-am62l3-evm: Enable Main UART wakeup
>
> arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 24 ++++++++++++++++++++----
> arch/arm64/boot/dts/ti/k3-am62l.dtsi | 12 ++++++++++++
> arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 22 ++++++++++++++++++----
> arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 24 ++++++++++++++++++++----
> arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 24 ++++++++++++++++++++----
> 5 files changed, 90 insertions(+), 16 deletions(-)
> ---
> base-commit: f323ed34dc9831effb1ee95403bc364869d29d4c
> change-id: 20251230-b4-uart-daisy-chain-dts-d01aa40560b2
>
> Best regards,
> --
> Kendall Willis <k-willis@ti.com>
>
--
Best regards,
Dhruva Gole
Texas Instruments Incorporated
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: Enable Main UART wakeup
2025-12-31 2:38 ` [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: " Kendall Willis
@ 2026-01-05 13:52 ` Nishanth Menon
2026-01-05 22:06 ` Kendall Willis
0 siblings, 1 reply; 11+ messages in thread
From: Nishanth Menon @ 2026-01-05 13:52 UTC (permalink / raw)
To: Kendall Willis
Cc: Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, d-gole, vishalm, sebin.francis,
msp, khilman, a-kaur, s-kochidanadu, linux-arm-kernel, devicetree,
linux-kernel
On 20:38-20251230, Kendall Willis wrote:
> 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.
Is the tx and rx pin register states both lost? I wonder why during
"wakeup" we set PIN_WKUP_EN ? is'nt that supposed to be set while
entering "suspend" state?
if the tx pin register state is not lost, then all we need to do is
play with the rx pin state (and leave pinctrl-0 as is)?
>
> Signed-off-by: Kendall Willis <k-willis@ti.com>
> ---
> arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 24 ++++++++++++++++++++----
> 1 file changed, 20 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
> index ef719c6334fc094f01d9e8185992f2f58320e17d..96bba65f4f16792834567324db6f7f2bdee7bc06 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
> @@ -328,14 +328,26 @@ AM62PX_IOPAD(0x0164, PIN_INPUT, 0) /* (A20) RGMII2_TX_CTL */
> bootph-all;
> };
>
> - main_uart0_pins_default: main-uart0-default-pins {
> + main_uart0_tx_pins_default: main-uart0-tx-default-pins {
> pinctrl-single,pins = <
> - AM62PX_IOPAD(0x1c8, PIN_INPUT, 0) /* (A22) UART0_RXD */
> AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (B22) UART0_TXD */
> >;
> bootph-all;
> };
>
> + main_uart0_rx_pins_default: main-uart0-rx-default-pins {
> + pinctrl-single,pins = <
> + AM62PX_IOPAD(0x1c8, PIN_INPUT, 0) /* (A22) UART0_RXD */
> + >;
> + bootph-all;
> + };
> +
> + main_uart0_rx_pins_wakeup: main-uart0-rx-wakeup-pins {
> + pinctrl-single,pins = <
> + AM62PX_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (A22) UART0_RXD */
> + >;
> + };
> +
> main_uart1_pins_default: main-uart1-default-pins {
> pinctrl-single,pins = <
> AM62PX_IOPAD(0x0194, PIN_INPUT, 2) /* (D25) MCASP0_AXR3.UART1_CTSn */
> @@ -692,8 +704,12 @@ partition@3fc0000 {
> };
>
> &main_uart0 {
> - pinctrl-names = "default";
> - pinctrl-0 = <&main_uart0_pins_default>;
> + pinctrl-names = "default", "wakeup";
> + pinctrl-0 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_default>;
> + pinctrl-1 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_wakeup>;
> + wakeup-source = <&system_deep_sleep>,
> + <&system_mcu_only>,
> + <&system_standby>;
> status = "okay";
> bootph-all;
> };
>
> --
> 2.34.1
>
--
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
https://ti.com/opensource
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: Enable Main UART wakeup
2026-01-05 13:52 ` Nishanth Menon
@ 2026-01-05 22:06 ` Kendall Willis
2026-01-06 11:57 ` Nishanth Menon
0 siblings, 1 reply; 11+ messages in thread
From: Kendall Willis @ 2026-01-05 22:06 UTC (permalink / raw)
To: Nishanth Menon
Cc: Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, d-gole, vishalm, sebin.francis,
msp, khilman, a-kaur, s-kochidanadu, linux-arm-kernel, devicetree,
linux-kernel
On 1/5/26 07:52, Nishanth Menon wrote:
> On 20:38-20251230, Kendall Willis wrote:
>> 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.
>
> Is the tx and rx pin register states both lost? I wonder why during
> "wakeup" we set PIN_WKUP_EN ? is'nt that supposed to be set while
> entering "suspend" state?
>
The UART driver uses the default pinctrl state when the system is
active. During the process of suspend, the wakeup pinctrl state is
selected by the UART driver in order to allow wakeup. Upon resume, the
default pinctrl state is selected again.
> if the tx pin register state is not lost, then all we need to do is
> play with the rx pin state (and leave pinctrl-0 as is)?
>
Yes, it can be done where the pinctrl-0 does not change, and there is an
additional pinctrl pins that has the TX and RX with PIN_WKUP_EN. The
logic behind both implementations are the same, just a different approach.
>>
>> Signed-off-by: Kendall Willis <k-willis@ti.com>
>> ---
>> arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 24 ++++++++++++++++++++----
>> 1 file changed, 20 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
>> index ef719c6334fc094f01d9e8185992f2f58320e17d..96bba65f4f16792834567324db6f7f2bdee7bc06 100644
>> --- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
>> +++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
>> @@ -328,14 +328,26 @@ AM62PX_IOPAD(0x0164, PIN_INPUT, 0) /* (A20) RGMII2_TX_CTL */
>> bootph-all;
>> };
>>
>> - main_uart0_pins_default: main-uart0-default-pins {
>> + main_uart0_tx_pins_default: main-uart0-tx-default-pins {
>> pinctrl-single,pins = <
>> - AM62PX_IOPAD(0x1c8, PIN_INPUT, 0) /* (A22) UART0_RXD */
>> AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (B22) UART0_TXD */
>> >;
>> bootph-all;
>> };
>>
>> + main_uart0_rx_pins_default: main-uart0-rx-default-pins {
>> + pinctrl-single,pins = <
>> + AM62PX_IOPAD(0x1c8, PIN_INPUT, 0) /* (A22) UART0_RXD */
>> + >;
>> + bootph-all;
>> + };
>> +
>> + main_uart0_rx_pins_wakeup: main-uart0-rx-wakeup-pins {
>> + pinctrl-single,pins = <
>> + AM62PX_IOPAD(0x1c8, PIN_INPUT | PIN_WKUP_EN, 0) /* (A22) UART0_RXD */
>> + >;
>> + };
>> +
>> main_uart1_pins_default: main-uart1-default-pins {
>> pinctrl-single,pins = <
>> AM62PX_IOPAD(0x0194, PIN_INPUT, 2) /* (D25) MCASP0_AXR3.UART1_CTSn */
>> @@ -692,8 +704,12 @@ partition@3fc0000 {
>> };
>>
>> &main_uart0 {
>> - pinctrl-names = "default";
>> - pinctrl-0 = <&main_uart0_pins_default>;
>> + pinctrl-names = "default", "wakeup";
>> + pinctrl-0 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_default>;
>> + pinctrl-1 = <&main_uart0_tx_pins_default>, <&main_uart0_rx_pins_wakeup>;
>> + wakeup-source = <&system_deep_sleep>,
>> + <&system_mcu_only>,
>> + <&system_standby>;
>> status = "okay";
>> bootph-all;
>> };
>>
>> --
>> 2.34.1
>>
>
Best,
Kendall
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: Enable Main UART wakeup
2026-01-05 22:06 ` Kendall Willis
@ 2026-01-06 11:57 ` Nishanth Menon
0 siblings, 0 replies; 11+ messages in thread
From: Nishanth Menon @ 2026-01-06 11:57 UTC (permalink / raw)
To: Kendall Willis
Cc: Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, d-gole, vishalm, sebin.francis,
msp, khilman, a-kaur, s-kochidanadu, linux-arm-kernel, devicetree,
linux-kernel
On 16:06-20260105, Kendall Willis wrote:
> On 1/5/26 07:52, Nishanth Menon wrote:
> > On 20:38-20251230, Kendall Willis wrote:
> > > 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.
> >
> > Is the tx and rx pin register states both lost? I wonder why during
> > "wakeup" we set PIN_WKUP_EN ? is'nt that supposed to be set while
> > entering "suspend" state?
> >
>
> The UART driver uses the default pinctrl state when the system is active.
> During the process of suspend, the wakeup pinctrl state is selected by the
> UART driver in order to allow wakeup. Upon resume, the default pinctrl state
> is selected again.
>
> > if the tx pin register state is not lost, then all we need to do is
> > play with the rx pin state (and leave pinctrl-0 as is)?
> >
>
> Yes, it can be done where the pinctrl-0 does not change, and there is an
> additional pinctrl pins that has the TX and RX with PIN_WKUP_EN. The logic
> behind both implementations are the same, just a different approach.
>
Keep the diff to as minimal as needed + update the commit message
please.
--
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
https://ti.com/opensource
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2026-01-06 11:57 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-31 2:38 [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support Main UART wakeup Kendall Willis
2025-12-31 2:38 ` [PATCH v2 1/5] arm64: dts: ti: k3-am62l: Define possible system states Kendall Willis
2025-12-31 2:38 ` [PATCH v2 2/5] arm64: dts: ti: k3-am62x-sk-common: Enable Main UART wakeup Kendall Willis
2025-12-31 2:38 ` [PATCH v2 3/5] arm64: dts: ti: k3-am62a7-sk: " Kendall Willis
2025-12-31 2:38 ` [PATCH v2 4/5] arm64: dts: ti: k3-am62p5-sk: " Kendall Willis
2026-01-05 13:52 ` Nishanth Menon
2026-01-05 22:06 ` Kendall Willis
2026-01-06 11:57 ` Nishanth Menon
2025-12-31 2:38 ` [PATCH v2 5/5] arm64: dts: ti: k3-am62l3-evm: " Kendall Willis
2026-01-05 10:33 ` [PATCH v2 0/5] arm64: dts: ti: k3-am62: Support " Markus Schneider-Pargmann
2026-01-05 13:17 ` Dhruva Gole
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox