arch/arm64/boot/dts/ti/k3-am62l-wakeup.dtsi | 2 +- arch/arm64/boot/dts/ti/k3-am62l.dtsi | 4 ++-- arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-)
K3 TI AM62L SoC supports wakeup from WKUP UART when the SoC is in the
DeepSleep low power mode. To allow wakeup from WKUP UART the target-module
device tree node is enabled. The ti-sysc interconnect target module driver
is used to configure the the SYSCONFIG related registers. In this case,
the interconnect target module node configures the WKUP UART to be able to
wakeup from system suspend. The SYSC register is used to enable wakeup
from system suspend for the WKUP UART. Refer to 14.7.2.5 UART in the
AM62L Techincal Reference Manual for registers referenced [1].
Previous TI SoCs configure the WKUP UART to wakeup from system suspend
using the ti-sysc interconnect target module driver. Refer to commit
ce27f7f9e328 ("arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for
wkup_uart0") for an example of this.
Testing
-------
Tested on AM62L EVM.
[1] https://www.ti.com/lit/ug/sprujb4a/sprujb4a.pdf
Signed-off-by: Kendall Willis <k-willis@ti.com>
---
Changes in v2:
- Change subject of commit "arm64: boot: dts: ti: k3-am62l3-evm: enable
target-module node" to better match the code logic of the patch.
- Link to v1: https://lore.kernel.org/r/20251230-wkup-uart-wakeup-v1-0-cd6e15f8d956@ti.com
---
Kendall Willis (3):
arm64: dts: ti: k3-am62l: include WKUP_UART0 in wakeup peripheral window
arm64: boot: dts: ti: k3-am62l-wakeup: create label for target-module
arm64: boot: dts: ti: k3-am62l3-evm: enable target-module node
arch/arm64/boot/dts/ti/k3-am62l-wakeup.dtsi | 2 +-
arch/arm64/boot/dts/ti/k3-am62l.dtsi | 4 ++--
arch/arm64/boot/dts/ti/k3-am62l3-evm.dts | 4 ++++
3 files changed, 7 insertions(+), 3 deletions(-)
---
base-commit: 6cd6c12031130a349a098dbeb19d8c3070d2dfbe
change-id: 20251230-wkup-uart-wakeup-8bbc95aa8f8e
Best regards,
--
Kendall Willis <k-willis@ti.com>
On January 6, 2026 thus sayeth Kendall Willis:
> K3 TI AM62L SoC supports wakeup from WKUP UART when the SoC is in the
> DeepSleep low power mode. To allow wakeup from WKUP UART the target-module
> device tree node is enabled. The ti-sysc interconnect target module driver
> is used to configure the the SYSCONFIG related registers. In this case,
> the interconnect target module node configures the WKUP UART to be able to
> wakeup from system suspend. The SYSC register is used to enable wakeup
> from system suspend for the WKUP UART. Refer to 14.7.2.5 UART in the
> AM62L Techincal Reference Manual for registers referenced [1].
>
> Previous TI SoCs configure the WKUP UART to wakeup from system suspend
> using the ti-sysc interconnect target module driver. Refer to commit
> ce27f7f9e328 ("arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for
> wkup_uart0") for an example of this.
I think I may be confused. What is setting the pinmux for the wkup_uart
to allow us to trigger the wake event? It looks like they reset to GPIO
pins if not set. Is firmware doing this?
~Bryan
On 1/7/26 10:45, Bryan Brattlof wrote:
> On January 6, 2026 thus sayeth Kendall Willis:
>> K3 TI AM62L SoC supports wakeup from WKUP UART when the SoC is in the
>> DeepSleep low power mode. To allow wakeup from WKUP UART the target-module
>> device tree node is enabled. The ti-sysc interconnect target module driver
>> is used to configure the the SYSCONFIG related registers. In this case,
>> the interconnect target module node configures the WKUP UART to be able to
>> wakeup from system suspend. The SYSC register is used to enable wakeup
>> from system suspend for the WKUP UART. Refer to 14.7.2.5 UART in the
>> AM62L Techincal Reference Manual for registers referenced [1].
>>
>> Previous TI SoCs configure the WKUP UART to wakeup from system suspend
>> using the ti-sysc interconnect target module driver. Refer to commit
>> ce27f7f9e328 ("arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for
>> wkup_uart0") for an example of this.
>
> I think I may be confused. What is setting the pinmux for the wkup_uart
> to allow us to trigger the wake event? It looks like they reset to GPIO
> pins if not set. Is firmware doing this?
On AM62L, the WKUP UART pinmux is initially set by TFA so that it is set
to the UART pins, not GPIO. The target-module node sets the WKUP UART
SYSC register so that wakeup is enabled.
Best,
Kendall
>
> ~Bryan
On January 7, 2026 thus sayeth Kendall Willis:
> On 1/7/26 10:45, Bryan Brattlof wrote:
> > On January 6, 2026 thus sayeth Kendall Willis:
> > > K3 TI AM62L SoC supports wakeup from WKUP UART when the SoC is in the
> > > DeepSleep low power mode. To allow wakeup from WKUP UART the target-module
> > > device tree node is enabled. The ti-sysc interconnect target module driver
> > > is used to configure the the SYSCONFIG related registers. In this case,
> > > the interconnect target module node configures the WKUP UART to be able to
> > > wakeup from system suspend. The SYSC register is used to enable wakeup
> > > from system suspend for the WKUP UART. Refer to 14.7.2.5 UART in the
> > > AM62L Techincal Reference Manual for registers referenced [1].
> > >
> > > Previous TI SoCs configure the WKUP UART to wakeup from system suspend
> > > using the ti-sysc interconnect target module driver. Refer to commit
> > > ce27f7f9e328 ("arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for
> > > wkup_uart0") for an example of this.
> >
> > I think I may be confused. What is setting the pinmux for the wkup_uart
> > to allow us to trigger the wake event? It looks like they reset to GPIO
> > pins if not set. Is firmware doing this?
>
> On AM62L, the WKUP UART pinmux is initially set by TFA so that it is set to
> the UART pins, not GPIO. The target-module node sets the WKUP UART SYSC
> register so that wakeup is enabled.
>
Nice however should we mark the UART in the board file as reserved for
TFA or is it free to be used by Linux and only during the low power
modes after Linux is asleep will it be used by TFA?
~Bryan
On 1/8/26 11:05, Bryan Brattlof wrote:
> On January 7, 2026 thus sayeth Kendall Willis:
>> On 1/7/26 10:45, Bryan Brattlof wrote:
>>> On January 6, 2026 thus sayeth Kendall Willis:
>>>> K3 TI AM62L SoC supports wakeup from WKUP UART when the SoC is in the
>>>> DeepSleep low power mode. To allow wakeup from WKUP UART the target-module
>>>> device tree node is enabled. The ti-sysc interconnect target module driver
>>>> is used to configure the the SYSCONFIG related registers. In this case,
>>>> the interconnect target module node configures the WKUP UART to be able to
>>>> wakeup from system suspend. The SYSC register is used to enable wakeup
>>>> from system suspend for the WKUP UART. Refer to 14.7.2.5 UART in the
>>>> AM62L Techincal Reference Manual for registers referenced [1].
>>>>
>>>> Previous TI SoCs configure the WKUP UART to wakeup from system suspend
>>>> using the ti-sysc interconnect target module driver. Refer to commit
>>>> ce27f7f9e328 ("arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for
>>>> wkup_uart0") for an example of this.
>>>
>>> I think I may be confused. What is setting the pinmux for the wkup_uart
>>> to allow us to trigger the wake event? It looks like they reset to GPIO
>>> pins if not set. Is firmware doing this?
>>
>> On AM62L, the WKUP UART pinmux is initially set by TFA so that it is set to
>> the UART pins, not GPIO. The target-module node sets the WKUP UART SYSC
>> register so that wakeup is enabled.
>>
>
> Nice however should we mark the UART in the board file as reserved for
> TFA or is it free to be used by Linux and only during the low power
> modes after Linux is asleep will it be used by TFA?
>
> ~Bryan
Sorry for the confusion, I said earlier that the WKUP UART could be used
by firmware, but that is not to say it is specifically reserved by the
firmware in general. TFA sets the WKUP UART pins, but it does not use
the WKUP UART for anything else. The only exception for TFA using the
WKUP UART is if the user chooses to use the WKUP UART for TFA debugging [1].
All of this to say that the WKUP UART *can* be used by Linux, it does
not need to be reserved for firmware.
[1]
https://software-dl.ti.com/processor-sdk-linux/esd/AM62LX/latest/exports/docs/linux/Foundational_Components/Power_Management/pm_am62lx_debug.html
Best,
Kendall
On 11:52-20260108, Kendall Willis wrote:
> On 1/8/26 11:05, Bryan Brattlof wrote:
> > On January 7, 2026 thus sayeth Kendall Willis:
> > > On 1/7/26 10:45, Bryan Brattlof wrote:
> > > > On January 6, 2026 thus sayeth Kendall Willis:
> > > > > K3 TI AM62L SoC supports wakeup from WKUP UART when the SoC is in the
> > > > > DeepSleep low power mode. To allow wakeup from WKUP UART the target-module
> > > > > device tree node is enabled. The ti-sysc interconnect target module driver
> > > > > is used to configure the the SYSCONFIG related registers. In this case,
> > > > > the interconnect target module node configures the WKUP UART to be able to
> > > > > wakeup from system suspend. The SYSC register is used to enable wakeup
> > > > > from system suspend for the WKUP UART. Refer to 14.7.2.5 UART in the
> > > > > AM62L Techincal Reference Manual for registers referenced [1].
> > > > >
> > > > > Previous TI SoCs configure the WKUP UART to wakeup from system suspend
> > > > > using the ti-sysc interconnect target module driver. Refer to commit
> > > > > ce27f7f9e328 ("arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for
> > > > > wkup_uart0") for an example of this.
> > > >
> > > > I think I may be confused. What is setting the pinmux for the wkup_uart
> > > > to allow us to trigger the wake event? It looks like they reset to GPIO
> > > > pins if not set. Is firmware doing this?
> > >
> > > On AM62L, the WKUP UART pinmux is initially set by TFA so that it is set to
> > > the UART pins, not GPIO. The target-module node sets the WKUP UART SYSC
> > > register so that wakeup is enabled.
> > >
> >
> > Nice however should we mark the UART in the board file as reserved for
> > TFA or is it free to be used by Linux and only during the low power
> > modes after Linux is asleep will it be used by TFA?
> >
> > ~Bryan
>
> Sorry for the confusion, I said earlier that the WKUP UART could be used by
> firmware, but that is not to say it is specifically reserved by the firmware
> in general. TFA sets the WKUP UART pins, but it does not use the WKUP UART
> for anything else. The only exception for TFA using the WKUP UART is if the
> user chooses to use the WKUP UART for TFA debugging [1].
>
> All of this to say that the WKUP UART *can* be used by Linux, it does not
> need to be reserved for firmware.
>
If you are going to use it for linux wakeup, then why dont we enable it for
linux? what TFA does or not should not dictate device tree unless it is
a hardware description - provide the full description in dt.
--
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
https://ti.com/opensource
On 1/8/26 12:03, Nishanth Menon wrote:
> On 11:52-20260108, Kendall Willis wrote:
>> On 1/8/26 11:05, Bryan Brattlof wrote:
>>> On January 7, 2026 thus sayeth Kendall Willis:
>>>> On 1/7/26 10:45, Bryan Brattlof wrote:
>>>>> On January 6, 2026 thus sayeth Kendall Willis:
>>>>>> K3 TI AM62L SoC supports wakeup from WKUP UART when the SoC is in the
>>>>>> DeepSleep low power mode. To allow wakeup from WKUP UART the target-module
>>>>>> device tree node is enabled. The ti-sysc interconnect target module driver
>>>>>> is used to configure the the SYSCONFIG related registers. In this case,
>>>>>> the interconnect target module node configures the WKUP UART to be able to
>>>>>> wakeup from system suspend. The SYSC register is used to enable wakeup
>>>>>> from system suspend for the WKUP UART. Refer to 14.7.2.5 UART in the
>>>>>> AM62L Techincal Reference Manual for registers referenced [1].
>>>>>>
>>>>>> Previous TI SoCs configure the WKUP UART to wakeup from system suspend
>>>>>> using the ti-sysc interconnect target module driver. Refer to commit
>>>>>> ce27f7f9e328 ("arm64: dts: ti: k3-am62-wakeup: Configure ti-sysc for
>>>>>> wkup_uart0") for an example of this.
>>>>>
>>>>> I think I may be confused. What is setting the pinmux for the wkup_uart
>>>>> to allow us to trigger the wake event? It looks like they reset to GPIO
>>>>> pins if not set. Is firmware doing this?
>>>>
>>>> On AM62L, the WKUP UART pinmux is initially set by TFA so that it is set to
>>>> the UART pins, not GPIO. The target-module node sets the WKUP UART SYSC
>>>> register so that wakeup is enabled.
>>>>
>>>
>>> Nice however should we mark the UART in the board file as reserved for
>>> TFA or is it free to be used by Linux and only during the low power
>>> modes after Linux is asleep will it be used by TFA?
>>>
>>> ~Bryan
>>
>> Sorry for the confusion, I said earlier that the WKUP UART could be used by
>> firmware, but that is not to say it is specifically reserved by the firmware
>> in general. TFA sets the WKUP UART pins, but it does not use the WKUP UART
>> for anything else. The only exception for TFA using the WKUP UART is if the
>> user chooses to use the WKUP UART for TFA debugging [1].
>>
>> All of this to say that the WKUP UART *can* be used by Linux, it does not
>> need to be reserved for firmware.
>>
>
> If you are going to use it for linux wakeup, then why dont we enable it for
> linux? what TFA does or not should not dictate device tree unless it is
> a hardware description - provide the full description in dt.
>
When adding a full description of WKUP UART and setting the WKUP UART to
be enabled in Linux, the wakeup functionality stopped working. I am
currently debugging this since I don't think that it should matter if
the WKUP UART is enabled or disabled for the wakeup functionality to
work with this implementation. I will post another version of this
series once I am able to fix the problem.
Best,
Kendall Willis <k-willis@ti.com>
© 2016 - 2026 Red Hat, Inc.