The CANUART pins of mcu_mcan0, mcu_mcan1, mcu_uart0 and wkup_uart0 are
powered during Partial-IO and IO+DDR and are capable of waking up the
system in these states. Specify the states in which these units can do a
wakeup on this board.
Note that the UARTs are not capable of wakeup in Partial-IO because of
of a UART mux on the board not being powered during Partial-IO.
Add pincontrol definitions for mcu_mcan0 and mcu_mcan1 for wakeup from
Partial-IO. Add these as wakeup pinctrl entries for both devices.
Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
- Merge devicetree nodes in k3-am62p5-sk.dts
---
arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 71 +++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
index 899da7896563b43021de14eda1b0058a5c6d36da..a2dffb5e243f543c90081eeacdc0758b38bd0eb9 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts
@@ -762,12 +762,52 @@ AM62PX_MCU_IOPAD(0x028, PIN_OUTPUT, 0) /* (D7) WKUP_UART0_TXD */
>;
bootph-all;
};
+
+ mcu_mcan0_tx_pins_default: mcu-mcan0-tx-default-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x034, PIN_OUTPUT, 0) /* (D6) MCU_MCAN0_TX */
+ >;
+ };
+
+ mcu_mcan0_rx_pins_default: mcu-mcan0-rx-default-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x038, PIN_INPUT, 0) /* (B3) MCU_MCAN0_RX */
+ >;
+ };
+
+ mcu_mcan0_rx_pins_wakeup: mcu-mcan0-rx-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x038, PIN_INPUT | WKUP_EN, 0) /* (B3) MCU_MCAN0_RX */
+ >;
+ };
+
+ mcu_mcan1_tx_pins_default: mcu-mcan1-tx-default-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x03c, PIN_OUTPUT, 0) /* (E5) MCU_MCAN1_TX */
+ >;
+ };
+
+ mcu_mcan1_rx_pins_default: mcu-mcan1-rx-default-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x040, PIN_INPUT, 0) /* (D4) MCU_MCAN1_RX */
+ >;
+ };
+
+ mcu_mcan1_rx_pins_wakeup: mcu-mcan1-rx-wakeup-pins {
+ pinctrl-single,pins = <
+ AM62X_IOPAD(0x040, PIN_INPUT | WKUP_EN, 0) /* (D4) MCU_MCAN1_RX */
+ >;
+ };
};
&wkup_uart0 {
/* WKUP UART0 is used by DM firmware */
pinctrl-names = "default";
pinctrl-0 = <&wkup_uart0_pins_default>;
+ wakeup-source = <&system_io_ddr>,
+ <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
status = "reserved";
bootph-all;
};
@@ -808,3 +848,34 @@ &epwm1 {
pinctrl-0 = <&main_epwm1_pins_default>;
status = "okay";
};
+
+&mcu_mcan0 {
+ pinctrl-names = "default", "wakeup";
+ pinctrl-0 = <&mcu_mcan0_tx_pins_default>, <&mcu_mcan0_rx_pins_default>;
+ pinctrl-1 = <&mcu_mcan0_tx_pins_default>, <&mcu_mcan0_rx_pins_wakeup>;
+ wakeup-source = <&system_partial_io>,
+ <&system_io_ddr>,
+ <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
+ status = "okay";
+};
+
+&mcu_mcan1 {
+ pinctrl-names = "default", "wakeup";
+ pinctrl-0 = <&mcu_mcan1_tx_pins_default>, <&mcu_mcan1_rx_pins_default>;
+ pinctrl-1 = <&mcu_mcan1_tx_pins_default>, <&mcu_mcan1_rx_pins_wakeup>;
+ wakeup-source = <&system_partial_io>,
+ <&system_io_ddr>,
+ <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
+ status = "okay";
+};
+
+&mcu_uart0 {
+ wakeup-source = <&system_io_ddr>,
+ <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
+};
--
2.50.1
On 11:15-20250812, Markus Schneider-Pargmann wrote: > The CANUART pins of mcu_mcan0, mcu_mcan1, mcu_uart0 and wkup_uart0 are > powered during Partial-IO and IO+DDR and are capable of waking up the > system in these states. Specify the states in which these units can do a > wakeup on this board. > nit: s/"IO+DD"/"I/O Only + DDR" > Note that the UARTs are not capable of wakeup in Partial-IO because of > of a UART mux on the board not being powered during Partial-IO. > > Add pincontrol definitions for mcu_mcan0 and mcu_mcan1 for wakeup from > Partial-IO. Add these as wakeup pinctrl entries for both devices. > > Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> > > - Merge devicetree nodes in k3-am62p5-sk.dts > --- > arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 71 +++++++++++++++++++++++++++++++++ > 1 file changed, 71 insertions(+) > > diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts > index 899da7896563b43021de14eda1b0058a5c6d36da..a2dffb5e243f543c90081eeacdc0758b38bd0eb9 100644 > --- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts > +++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts > @@ -762,12 +762,52 @@ AM62PX_MCU_IOPAD(0x028, PIN_OUTPUT, 0) /* (D7) WKUP_UART0_TXD */ > >; > bootph-all; > }; > + > + mcu_mcan0_tx_pins_default: mcu-mcan0-tx-default-pins { > + pinctrl-single,pins = < > + AM62X_IOPAD(0x034, PIN_OUTPUT, 0) /* (D6) MCU_MCAN0_TX */ > + >; > + }; > + > + mcu_mcan0_rx_pins_default: mcu-mcan0-rx-default-pins { > + pinctrl-single,pins = < > + AM62X_IOPAD(0x038, PIN_INPUT, 0) /* (B3) MCU_MCAN0_RX */ > + >; > + }; > + > + mcu_mcan0_rx_pins_wakeup: mcu-mcan0-rx-wakeup-pins { > + pinctrl-single,pins = < > + AM62X_IOPAD(0x038, PIN_INPUT | WKUP_EN, 0) /* (B3) MCU_MCAN0_RX */ > + >; > + }; > + > + mcu_mcan1_tx_pins_default: mcu-mcan1-tx-default-pins { > + pinctrl-single,pins = < > + AM62X_IOPAD(0x03c, PIN_OUTPUT, 0) /* (E5) MCU_MCAN1_TX */ > + >; > + }; > + > + mcu_mcan1_rx_pins_default: mcu-mcan1-rx-default-pins { > + pinctrl-single,pins = < > + AM62X_IOPAD(0x040, PIN_INPUT, 0) /* (D4) MCU_MCAN1_RX */ > + >; > + }; > + > + mcu_mcan1_rx_pins_wakeup: mcu-mcan1-rx-wakeup-pins { > + pinctrl-single,pins = < > + AM62X_IOPAD(0x040, PIN_INPUT | WKUP_EN, 0) /* (D4) MCU_MCAN1_RX */ > + >; > + }; > }; > AM62PX_MCU_IOPAD should be used for consistency. Best, Kendall Willis > &wkup_uart0 { > /* WKUP UART0 is used by DM firmware */ > pinctrl-names = "default"; > pinctrl-0 = <&wkup_uart0_pins_default>; > + wakeup-source = <&system_io_ddr>, > + <&system_deep_sleep>, > + <&system_mcu_only>, > + <&system_standby>; > status = "reserved"; > bootph-all; > }; > @@ -808,3 +848,34 @@ &epwm1 { > pinctrl-0 = <&main_epwm1_pins_default>; > status = "okay"; > }; > + > +&mcu_mcan0 { > + pinctrl-names = "default", "wakeup"; > + pinctrl-0 = <&mcu_mcan0_tx_pins_default>, <&mcu_mcan0_rx_pins_default>; > + pinctrl-1 = <&mcu_mcan0_tx_pins_default>, <&mcu_mcan0_rx_pins_wakeup>; > + wakeup-source = <&system_partial_io>, > + <&system_io_ddr>, > + <&system_deep_sleep>, > + <&system_mcu_only>, > + <&system_standby>; > + status = "okay"; > +}; > + > +&mcu_mcan1 { > + pinctrl-names = "default", "wakeup"; > + pinctrl-0 = <&mcu_mcan1_tx_pins_default>, <&mcu_mcan1_rx_pins_default>; > + pinctrl-1 = <&mcu_mcan1_tx_pins_default>, <&mcu_mcan1_rx_pins_wakeup>; > + wakeup-source = <&system_partial_io>, > + <&system_io_ddr>, > + <&system_deep_sleep>, > + <&system_mcu_only>, > + <&system_standby>; > + status = "okay"; > +}; > + > +&mcu_uart0 { > + wakeup-source = <&system_io_ddr>, > + <&system_deep_sleep>, > + <&system_mcu_only>, > + <&system_standby>; > +}; > > -- > 2.50.1 >
Hi Kendall, On Tue Sep 23, 2025 at 8:24 PM CEST, Kendall Willis wrote: > On 11:15-20250812, Markus Schneider-Pargmann wrote: >> The CANUART pins of mcu_mcan0, mcu_mcan1, mcu_uart0 and wkup_uart0 are >> powered during Partial-IO and IO+DDR and are capable of waking up the >> system in these states. Specify the states in which these units can do a >> wakeup on this board. >> > > nit: s/"IO+DD"/"I/O Only + DDR" > >> Note that the UARTs are not capable of wakeup in Partial-IO because of >> of a UART mux on the board not being powered during Partial-IO. >> >> Add pincontrol definitions for mcu_mcan0 and mcu_mcan1 for wakeup from >> Partial-IO. Add these as wakeup pinctrl entries for both devices. >> >> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> >> >> - Merge devicetree nodes in k3-am62p5-sk.dts >> --- >> arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 71 +++++++++++++++++++++++++++++++++ >> 1 file changed, 71 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts >> index 899da7896563b43021de14eda1b0058a5c6d36da..a2dffb5e243f543c90081eeacdc0758b38bd0eb9 100644 >> --- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts >> +++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts >> @@ -762,12 +762,52 @@ AM62PX_MCU_IOPAD(0x028, PIN_OUTPUT, 0) /* (D7) WKUP_UART0_TXD */ >> >; >> bootph-all; >> }; >> + >> + mcu_mcan0_tx_pins_default: mcu-mcan0-tx-default-pins { >> + pinctrl-single,pins = < >> + AM62X_IOPAD(0x034, PIN_OUTPUT, 0) /* (D6) MCU_MCAN0_TX */ >> + >; >> + }; >> + >> + mcu_mcan0_rx_pins_default: mcu-mcan0-rx-default-pins { >> + pinctrl-single,pins = < >> + AM62X_IOPAD(0x038, PIN_INPUT, 0) /* (B3) MCU_MCAN0_RX */ >> + >; >> + }; >> + >> + mcu_mcan0_rx_pins_wakeup: mcu-mcan0-rx-wakeup-pins { >> + pinctrl-single,pins = < >> + AM62X_IOPAD(0x038, PIN_INPUT | WKUP_EN, 0) /* (B3) MCU_MCAN0_RX */ >> + >; >> + }; >> + >> + mcu_mcan1_tx_pins_default: mcu-mcan1-tx-default-pins { >> + pinctrl-single,pins = < >> + AM62X_IOPAD(0x03c, PIN_OUTPUT, 0) /* (E5) MCU_MCAN1_TX */ >> + >; >> + }; >> + >> + mcu_mcan1_rx_pins_default: mcu-mcan1-rx-default-pins { >> + pinctrl-single,pins = < >> + AM62X_IOPAD(0x040, PIN_INPUT, 0) /* (D4) MCU_MCAN1_RX */ >> + >; >> + }; >> + >> + mcu_mcan1_rx_pins_wakeup: mcu-mcan1-rx-wakeup-pins { >> + pinctrl-single,pins = < >> + AM62X_IOPAD(0x040, PIN_INPUT | WKUP_EN, 0) /* (D4) MCU_MCAN1_RX */ >> + >; >> + }; >> }; >> > > AM62PX_MCU_IOPAD should be used for consistency. Thanks for your reviews, everything fixed for the next version. Best Markus
© 2016 - 2025 Red Hat, Inc.