Re: [PATCH v2 3/3] arm64: dts: ti: k3-am62p: use ti,am62-m_can compatible for m_can devices

From: Kendall Willis

Date: Fri Sep 04 2026 - 11:35:28 EST


Hi Udit,
On 19:39-20260904, Kumar, Udit wrote:
> Hello Kendall,
>
> On 9/3/2026 2:34 AM, Kendall Willis wrote:
> > Prepend "ti,am62-m_can" to the m_can device compatible property since
> > this compatible adds out-of-band wakeup functionality to the m_can devices.
> > The m_can pins can be a wakeup source in the deepest low power states,
> > despite being in the MCU domain which is OFF during deeper low power states
> > since it has the out-of-band wakeup capability.
> >
>
> Instead of adding new compatible,
> what you think
>
> 1) if pinctrl_state_wakeup is set ("wakeup", prop in pin control) then
> treat this as out of band wakeup

Yes, that is essentially what the following patch is doing. But for CAN
devices, there is a chance that not all pinctrl_state_wakeup have
out-of-band wakeup functionality which is why the compatible is needed.
https://lore.kernel.org/all/20260902-temp-v4-2-3896f7d16ce8@xxxxxx/

> 2) if device itself enabled as wakeup device treat as in band wakeup source

MCU CAN wakeup is IO daisy chained so it should be treated as out-of-band
wakeup. Additionally, the out-of-band wakeup capability needs to be set
so that TI SCI PM domains does not set the wakeup constraint on CAN so
that the FW will allow the system to enter DeepSleep.

Best,
Kendall

> > Signed-off-by: Kendall Willis <k-willis@xxxxxx>
> > ---
> > arch/arm64/boot/dts/ti/k3-am62p-j722s-common-mcu.dtsi | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-mcu.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-mcu.dtsi
> > index 5288c959f3c1aecfde363f9e2440253545591171..d26d6b6d0cf46a19bde9f58769b3eb8c86c836ab 100644
> > --- a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-mcu.dtsi
> > +++ b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-mcu.dtsi
> > @@ -154,7 +154,7 @@ mcu_rti0: watchdog@4880000 {
> > };
> >
> > mcu_mcan0: can@4e08000 {
> > - compatible = "bosch,m_can";
> > + compatible = "ti,am62-m_can", "bosch,m_can";
> > reg = <0x00 0x4e08000 0x00 0x200>,
> > <0x00 0x4e00000 0x00 0x8000>;
> > reg-names = "m_can", "message_ram";
> > @@ -169,7 +169,7 @@ mcu_mcan0: can@4e08000 {
> > };
> >
> > mcu_mcan1: can@4e18000 {
> > - compatible = "bosch,m_can";
> > + compatible = "ti,am62-m_can", "bosch,m_can";
> > reg = <0x00 0x4e18000 0x00 0x200>,
> > <0x00 0x4e10000 0x00 0x8000>;
> > reg-names = "m_can", "message_ram";
> >
>