* [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes
@ 2025-08-12 9:15 Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag Markus Schneider-Pargmann
` (6 more replies)
0 siblings, 7 replies; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
Hi,
This series adds devicetree changes needed for Partial-IO support
on TI am62, am62a, and am62p SoCs. It defines system states for various
low power modes and configures the wakeup-sources for devices in the CANUART
group. Depending on the SoC and board details, some low power modes may not
be available, so the wakeup-sources are described in the board files.
The series also adds the necessary pinctrl settings required for proper
wakeup functionality.
Partial-IO Overview
------------------
Partial-IO is a low power system state in which nearly everything is
turned off except the pins of the CANUART group (mcu_mcan0, mcu_mcan1,
wkup_uart0 and mcu_uart0). These devices can trigger a wakeup of the system
on pin activity. Note that this does not resume the system as the DDR is
off as well. So this state can be considered a power-off state with wakeup
capabilities.
A documentation can also be found in section 6.2.4 in the TRM:
https://www.ti.com/lit/pdf/spruiv7
Implementation Details
----------------------
The complete Partial-IO feature requires three coordinated series, each handling
a different aspect of the implementation:
1. m_can driver series: Implements device-specific wakeup functionality
for m_can devices, allowing them to be set as wakeup sources.
https://gitlab.baylibre.com/msp8/linux/-/tree/topic/mcan-wakeup-source/v6.17?ref_type=heads
https://lore.kernel.org/r/20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com
2. This series (devicetree): Defines system states and wakeup sources in the
devicetree for am62, am62a and am62p.
3. TI-SCI firmware series: Implements the firmware interface to enter Partial-IO
mode when appropriate wakeup sources are enabled.
https://gitlab.baylibre.com/msp8/linux/-/tree/topic/tisci-partialio/v6.17?ref_type=heads
Devicetree Bindings
-------------------
This series depends on the dt-schema pull request that adds bindings for
system-idle-states and updates the binding for wakeup-source:
https://github.com/devicetree-org/dt-schema/pull/150
This is merged now in upstream dt-schema. These new bindings allow us to
define the system states and reference them from device wakeup-source
properties.
Testing
-------
A test branch is available here that includes all patches required to
test Partial-IO:
https://gitlab.baylibre.com/msp8/linux/-/tree/integration/am62-partialio/v6.17?ref_type=heads
After enabling Wake-on-LAN the system can be powered off and will enter
the Partial-IO state in which it can be woken up by activity on the
specific pins:
ethtool -s can0 wol p
ethtool -s can1 wol p
poweroff
I tested these patches on am62-lp-sk.
Best,
Markus
Previous versions
-----------------
- Link to v1: https://lore.kernel.org/r/20250421-topic-am62-dt-partialio-v6-15-v1-0-6ced30aafddb@baylibre.com
- As part of the series "firmware: ti_sci: Partial-IO support"
https://lore.kernel.org/r/20250306-topic-am62-partialio-v6-12-b4-v5-0-f9323d3744a2@baylibre.com
Changes in v2:
- Combine k3-am62a7-sk.dts devicetree nodes with existing ones
- Combine k3-am62p5-sk.dts devicetree nodes with existing ones
- Update the idle-state-name properties to the new names from the
dt-schema
- Rebase to 6.17-rc1
Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
---
Markus Schneider-Pargmann (7):
arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag
arm64: dts: ti: k3-am62: Define possible system states
arm64: dts: ti: k3-am62a: Define possible system states
arm64: dts: ti: k3-am62p: Define possible system states
arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states
arm64: dts: ti: k3-am62a7-sk: Set wakeup-source system-states
arm64: dts: ti: k3-am62p5-sk: Set wakeup-source system-states
arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts | 60 +++++++++++++++++++++++++++
arch/arm64/boot/dts/ti/k3-am62.dtsi | 22 ++++++++++
arch/arm64/boot/dts/ti/k3-am62a.dtsi | 27 ++++++++++++
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 71 ++++++++++++++++++++++++++++++++
arch/arm64/boot/dts/ti/k3-am62p.dtsi | 27 ++++++++++++
arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 71 ++++++++++++++++++++++++++++++++
arch/arm64/boot/dts/ti/k3-pinctrl.h | 2 +
7 files changed, 280 insertions(+)
---
base-commit: 062b3e4a1f880f104a8d4b90b767788786aa7b78
change-id: 20250415-topic-am62-dt-partialio-v6-15-327dd1ff17da
prerequisite-change-id: 20241009-topic-mcan-wakeup-source-v6-12-8c1d69931bd8:v8
prerequisite-patch-id: 02b7142f56c849c9a3faab2d2871805febd647aa
prerequisite-patch-id: 830b339ea452edd750b04f719da91e721be630cb
prerequisite-patch-id: 2c9142d2bc47e64c49b7b8a7ca20a62a0be14870
prerequisite-patch-id: f7652a616dca17fd5e4a7e5cba59de6a6a36079f
Best regards,
--
Markus Schneider-Pargmann <msp@baylibre.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
@ 2025-08-12 9:15 ` Markus Schneider-Pargmann
2025-08-27 19:14 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 2/7] arm64: dts: ti: k3-am62: Define possible system states Markus Schneider-Pargmann
` (5 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
WKUP_EN is a flag to enable pin wakeup. Any activity will wakeup the SoC
in that case.
Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
---
arch/arm64/boot/dts/ti/k3-pinctrl.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-pinctrl.h b/arch/arm64/boot/dts/ti/k3-pinctrl.h
index c0f09be8d3f94a70812b66c3f91626aac35f4026..d3b0ecdf1a4a4de25ee6121ec9e62d1c7df26eb9 100644
--- a/arch/arm64/boot/dts/ti/k3-pinctrl.h
+++ b/arch/arm64/boot/dts/ti/k3-pinctrl.h
@@ -19,6 +19,7 @@
#define DS_OUT_VAL_SHIFT (26)
#define DS_PULLUD_EN_SHIFT (27)
#define DS_PULLTYPE_SEL_SHIFT (28)
+#define WKUP_EN_SHIFT (29)
/* Schmitt trigger configuration */
#define ST_DISABLE (0 << ST_EN_SHIFT)
@@ -65,6 +66,7 @@
#define PIN_DS_PULLUD_DISABLE (1 << DS_PULLUD_EN_SHIFT)
#define PIN_DS_PULL_DOWN (0 << DS_PULLTYPE_SEL_SHIFT)
#define PIN_DS_PULL_UP (1 << DS_PULLTYPE_SEL_SHIFT)
+#define WKUP_EN (1 << WKUP_EN_SHIFT)
/* Default mux configuration for gpio-ranges to use with pinctrl */
#define PIN_GPIO_RANGE_IOPAD (PIN_INPUT | 7)
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 2/7] arm64: dts: ti: k3-am62: Define possible system states
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag Markus Schneider-Pargmann
@ 2025-08-12 9:15 ` Markus Schneider-Pargmann
2025-09-23 18:03 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 3/7] arm64: dts: ti: k3-am62a: " Markus Schneider-Pargmann
` (4 subsequent siblings)
6 siblings, 1 reply; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
Add the system states that are available on am62 SoCs.
Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
---
arch/arm64/boot/dts/ti/k3-am62.dtsi | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62.dtsi b/arch/arm64/boot/dts/ti/k3-am62.dtsi
index 59f6dff552ed40e4ac0f9c7077aa25d68d3b5283..b08b7062060ca12ecae83917a831ee779f1a288f 100644
--- a/arch/arm64/boot/dts/ti/k3-am62.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62.dtsi
@@ -46,6 +46,28 @@ pmu: pmu {
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
};
+ system-idle-states {
+ system_partial_io: system-partial-io {
+ compatible = "system-idle-state";
+ idle-state-name = "off-wake";
+ };
+
+ system_deep_sleep: system-deep-sleep {
+ compatible = "system-idle-state";
+ idle-state-name = "mem";
+ };
+
+ system_mcu_only: system-mcu-only {
+ compatible = "system-idle-state";
+ idle-state-name = "mem-mcu-active";
+ };
+
+ system_standby: system-standby {
+ compatible = "system-idle-state";
+ idle-state-name = "standby";
+ };
+ };
+
cbass_main: bus@f0000 {
bootph-all;
compatible = "simple-bus";
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 3/7] arm64: dts: ti: k3-am62a: Define possible system states
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 2/7] arm64: dts: ti: k3-am62: Define possible system states Markus Schneider-Pargmann
@ 2025-08-12 9:15 ` Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 4/7] arm64: dts: ti: k3-am62p: " Markus Schneider-Pargmann
` (3 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
Add the system states that are available on am62a SoCs.
Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
---
arch/arm64/boot/dts/ti/k3-am62a.dtsi | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62a.dtsi b/arch/arm64/boot/dts/ti/k3-am62a.dtsi
index 4d79b3e9486af18b8813a8980a57937669ff6095..31b2de035f0f748e34b8919f90251aa0551d9b32 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62a.dtsi
@@ -46,6 +46,33 @@ pmu: pmu {
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
};
+ system-idle-states {
+ system_partial_io: system-partial-io {
+ compatible = "system-idle-state";
+ idle-state-name = "off-wake";
+ };
+
+ system_io_ddr: system-io-ddr {
+ compatible = "system-idle-state";
+ idle-state-name = "mem-deep";
+ };
+
+ system_deep_sleep: system-deep-sleep {
+ compatible = "system-idle-state";
+ idle-state-name = "mem";
+ };
+
+ system_mcu_only: system-mcu-only {
+ compatible = "system-idle-state";
+ idle-state-name = "mem-mcu-active";
+ };
+
+ system_standby: system-standby {
+ compatible = "system-idle-state";
+ idle-state-name = "standby";
+ };
+ };
+
cbass_main: bus@f0000 {
compatible = "simple-bus";
#address-cells = <2>;
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 4/7] arm64: dts: ti: k3-am62p: Define possible system states
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
` (2 preceding siblings ...)
2025-08-12 9:15 ` [PATCH v2 3/7] arm64: dts: ti: k3-am62a: " Markus Schneider-Pargmann
@ 2025-08-12 9:15 ` Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 5/7] arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states Markus Schneider-Pargmann
` (2 subsequent siblings)
6 siblings, 0 replies; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
Add the system states that are available on am62p SoCs.
Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
---
arch/arm64/boot/dts/ti/k3-am62p.dtsi | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62p.dtsi b/arch/arm64/boot/dts/ti/k3-am62p.dtsi
index 75a15c368c11b068430362fe0b8d2d9ecc052588..c69e16f16c835489f2bc5cba158235ab955347e3 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62p.dtsi
@@ -44,6 +44,33 @@ pmu: pmu {
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
};
+ system-idle-states {
+ system_partial_io: system-partial-io {
+ compatible = "system-idle-state";
+ idle-state-name = "off-wake";
+ };
+
+ system_io_ddr: system-io-ddr {
+ compatible = "system-idle-state";
+ idle-state-name = "mem-deep";
+ };
+
+ system_deep_sleep: system-deep-sleep {
+ compatible = "system-idle-state";
+ idle-state-name = "mem";
+ };
+
+ system_mcu_only: system-mcu-only {
+ compatible = "system-idle-state";
+ idle-state-name = "mem-mcu-active";
+ };
+
+ system_standby: system-standby {
+ compatible = "system-idle-state";
+ idle-state-name = "standby";
+ };
+ };
+
cbass_main: bus@f0000 {
compatible = "simple-bus";
#address-cells = <2>;
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 5/7] arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
` (3 preceding siblings ...)
2025-08-12 9:15 ` [PATCH v2 4/7] arm64: dts: ti: k3-am62p: " Markus Schneider-Pargmann
@ 2025-08-12 9:15 ` Markus Schneider-Pargmann
2025-09-23 18:16 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 6/7] arm64: dts: ti: k3-am62a7-sk: " Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 7/7] arm64: dts: ti: k3-am62p5-sk: " Markus Schneider-Pargmann
6 siblings, 1 reply; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
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. As
IO+DDR is not supported on am62, the UARTs are not added in this patch.
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>
---
arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts | 60 ++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts b/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts
index 4609f366006e4cdf0c162f72634ce90623f60a90..0314f857ea05acc4ffc62bccb5184e58d19a6103 100644
--- a/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts
@@ -268,3 +268,63 @@ &main_gpio1 {
&gpmc0 {
ranges = <0 0 0x00 0x51000000 0x01000000>; /* CS0 space. Min partition = 16MB */
};
+
+&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_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_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
+ status = "okay";
+};
+
+&mcu_pmx0 {
+ 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 */
+ >;
+ };
+};
--
2.50.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 6/7] arm64: dts: ti: k3-am62a7-sk: Set wakeup-source system-states
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
` (4 preceding siblings ...)
2025-08-12 9:15 ` [PATCH v2 5/7] arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states Markus Schneider-Pargmann
@ 2025-08-12 9:15 ` Markus Schneider-Pargmann
2025-09-23 18:22 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 7/7] arm64: dts: ti: k3-am62p5-sk: " Markus Schneider-Pargmann
6 siblings, 1 reply; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
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>
- Combine k3-am62a7-sk.dts devicetree nodes
---
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 71 +++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
index bceead5e288e6d78c671baf0afabd1a9aa23fbee..55cab49f26382f08e2cc93d17afc424af8c59caa 100644
--- a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
+++ b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
@@ -257,6 +257,10 @@ AM62AX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8) WKUP_UART0_RTSn */
&wkup_uart0 {
pinctrl-names = "default";
pinctrl-0 = <&wkup_uart0_pins_default>;
+ wakeup-source = <&system_io_ddr>,
+ <&system_deep_sleep>,
+ <&system_mcu_only>,
+ <&system_standby>;
status = "reserved";
};
@@ -450,6 +454,42 @@ pmic_irq_pins_default: pmic-irq-default-pins {
AM62AX_MCU_IOPAD(0x000, PIN_INPUT, 7) /* (E11) MCU_GPIO0_0 */
>;
};
+
+ 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 */
+ >;
+ };
};
&mcu_gpio0 {
@@ -935,3 +975,34 @@ AM62AX_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
>;
};
};
+
+&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
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v2 7/7] arm64: dts: ti: k3-am62p5-sk: Set wakeup-source system-states
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
` (5 preceding siblings ...)
2025-08-12 9:15 ` [PATCH v2 6/7] arm64: dts: ti: k3-am62a7-sk: " Markus Schneider-Pargmann
@ 2025-08-12 9:15 ` Markus Schneider-Pargmann
2025-09-23 18:24 ` Kendall Willis
6 siblings, 1 reply; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-08-12 9:15 UTC (permalink / raw)
To: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Kendall Willis,
Akashdeep Kaur, Markus Schneider-Pargmann
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
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag
2025-08-12 9:15 ` [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag Markus Schneider-Pargmann
@ 2025-08-27 19:14 ` Kendall Willis
2025-09-16 21:58 ` Kendall Willis
0 siblings, 1 reply; 15+ messages in thread
From: Kendall Willis @ 2025-08-27 19:14 UTC (permalink / raw)
To: Markus Schneider-Pargmann, Nishanth Menon, Vignesh Raghavendra,
Tero Kristo, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Akashdeep Kaur
On 8/12/25 04:15, Markus Schneider-Pargmann wrote:
> WKUP_EN is a flag to enable pin wakeup. Any activity will wakeup the SoC
> in that case.
>
> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
> ---
> arch/arm64/boot/dts/ti/k3-pinctrl.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-pinctrl.h b/arch/arm64/boot/dts/ti/k3-pinctrl.h
> index c0f09be8d3f94a70812b66c3f91626aac35f4026..d3b0ecdf1a4a4de25ee6121ec9e62d1c7df26eb9 100644
> --- a/arch/arm64/boot/dts/ti/k3-pinctrl.h
> +++ b/arch/arm64/boot/dts/ti/k3-pinctrl.h
> @@ -19,6 +19,7 @@
> #define DS_OUT_VAL_SHIFT (26)
> #define DS_PULLUD_EN_SHIFT (27)
> #define DS_PULLTYPE_SEL_SHIFT (28)
> +#define WKUP_EN_SHIFT (29)
>
> /* Schmitt trigger configuration */
> #define ST_DISABLE (0 << ST_EN_SHIFT)
> @@ -65,6 +66,7 @@
> #define PIN_DS_PULLUD_DISABLE (1 << DS_PULLUD_EN_SHIFT)
> #define PIN_DS_PULL_DOWN (0 << DS_PULLTYPE_SEL_SHIFT)
> #define PIN_DS_PULL_UP (1 << DS_PULLTYPE_SEL_SHIFT)
> +#define WKUP_EN (1 << WKUP_EN_SHIFT)
>
> /* Default mux configuration for gpio-ranges to use with pinctrl */
> #define PIN_GPIO_RANGE_IOPAD (PIN_INPUT | 7)
>
Reviewed-by: Kendall Willis <k-willis@ti.com>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag
2025-08-27 19:14 ` Kendall Willis
@ 2025-09-16 21:58 ` Kendall Willis
0 siblings, 0 replies; 15+ messages in thread
From: Kendall Willis @ 2025-09-16 21:58 UTC (permalink / raw)
To: Markus Schneider-Pargmann, Nishanth Menon, Vignesh Raghavendra,
Tero Kristo, Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-kernel, devicetree, linux-kernel, Vishal Mahaveer,
Kevin Hilman, Dhruva Gole, Sebin Francis, Akashdeep Kaur
On 8/27/25 14:14, Kendall Willis wrote:
> On 8/12/25 04:15, Markus Schneider-Pargmann wrote:
>> WKUP_EN is a flag to enable pin wakeup. Any activity will wakeup the SoC
>> in that case.
>>
>> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
>> ---
>> arch/arm64/boot/dts/ti/k3-pinctrl.h | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/ti/k3-pinctrl.h b/arch/arm64/boot/
>> dts/ti/k3-pinctrl.h
>> index
>> c0f09be8d3f94a70812b66c3f91626aac35f4026..d3b0ecdf1a4a4de25ee6121ec9e62d1c7df26eb9 100644
>> --- a/arch/arm64/boot/dts/ti/k3-pinctrl.h
>> +++ b/arch/arm64/boot/dts/ti/k3-pinctrl.h
>> @@ -19,6 +19,7 @@
>> #define DS_OUT_VAL_SHIFT (26)
>> #define DS_PULLUD_EN_SHIFT (27)
>> #define DS_PULLTYPE_SEL_SHIFT (28)
>> +#define WKUP_EN_SHIFT (29)
>> /* Schmitt trigger configuration */
>> #define ST_DISABLE (0 << ST_EN_SHIFT)
>> @@ -65,6 +66,7 @@
>> #define PIN_DS_PULLUD_DISABLE (1 << DS_PULLUD_EN_SHIFT)
>> #define PIN_DS_PULL_DOWN (0 << DS_PULLTYPE_SEL_SHIFT)
>> #define PIN_DS_PULL_UP (1 << DS_PULLTYPE_SEL_SHIFT)
>> +#define WKUP_EN (1 << WKUP_EN_SHIFT)
>> /* Default mux configuration for gpio-ranges to use with pinctrl */
>> #define PIN_GPIO_RANGE_IOPAD (PIN_INPUT | 7)
>>
>
> Reviewed-by: Kendall Willis <k-willis@ti.com>
FYI: A series by Akash [1] has been picked in linux-next. It includes
the WKUP_EN macro but defined differently as PIN_WKUP_EN. The series
needs to be rebased to account for that macro.
[1] https://lore.kernel.org/all/20250909044108.2541534-1-a-kaur@ti.com/
Best,
Kendall Willis
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 2/7] arm64: dts: ti: k3-am62: Define possible system states
2025-08-12 9:15 ` [PATCH v2 2/7] arm64: dts: ti: k3-am62: Define possible system states Markus Schneider-Pargmann
@ 2025-09-23 18:03 ` Kendall Willis
0 siblings, 0 replies; 15+ messages in thread
From: Kendall Willis @ 2025-09-23 18:03 UTC (permalink / raw)
To: Markus Schneider-Pargmann
Cc: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel, devicetree,
linux-kernel, Vishal Mahaveer, Kevin Hilman, Dhruva Gole,
Sebin Francis, Akashdeep Kaur
On 11:15-20250812, Markus Schneider-Pargmann wrote:
> Add the system states that are available on am62 SoCs.
>
nit: Change "am62 SoCs" to "TI AM62x SoCs"
Additionally, it would be nice to add what sleep states are supported in
the commit message.
These comments also go for the other two patches that are titled
"Define possible system states".
Best,
Kendall Willis
> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
> ---
> arch/arm64/boot/dts/ti/k3-am62.dtsi | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62.dtsi b/arch/arm64/boot/dts/ti/k3-am62.dtsi
> index 59f6dff552ed40e4ac0f9c7077aa25d68d3b5283..b08b7062060ca12ecae83917a831ee779f1a288f 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62.dtsi
> @@ -46,6 +46,28 @@ pmu: pmu {
> interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
> };
>
> + system-idle-states {
> + system_partial_io: system-partial-io {
> + compatible = "system-idle-state";
> + idle-state-name = "off-wake";
> + };
> +
> + system_deep_sleep: system-deep-sleep {
> + compatible = "system-idle-state";
> + idle-state-name = "mem";
> + };
> +
> + system_mcu_only: system-mcu-only {
> + compatible = "system-idle-state";
> + idle-state-name = "mem-mcu-active";
> + };
> +
> + system_standby: system-standby {
> + compatible = "system-idle-state";
> + idle-state-name = "standby";
> + };
> + };
> +
> cbass_main: bus@f0000 {
> bootph-all;
> compatible = "simple-bus";
>
> --
> 2.50.1
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 5/7] arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states
2025-08-12 9:15 ` [PATCH v2 5/7] arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states Markus Schneider-Pargmann
@ 2025-09-23 18:16 ` Kendall Willis
0 siblings, 0 replies; 15+ messages in thread
From: Kendall Willis @ 2025-09-23 18:16 UTC (permalink / raw)
To: Markus Schneider-Pargmann
Cc: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel, devicetree,
linux-kernel, Vishal Mahaveer, Kevin Hilman, Dhruva Gole,
Sebin Francis, Akashdeep Kaur
Hi Markus,
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.
>
> 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. As
> IO+DDR is not supported on am62, the UARTs are not added in this patch.
nit: s/"am62"/"AM62x"
nit: s/"IO+DDR"/"I/O Only + DDR"
Logic looks good, but as said previously it needs to be rebased due to
WKUP_EN macro.
Best,
Kendall Willis
>
> 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>
> ---
> arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts | 60 ++++++++++++++++++++++++++++++++
> 1 file changed, 60 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts b/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts
> index 4609f366006e4cdf0c162f72634ce90623f60a90..0314f857ea05acc4ffc62bccb5184e58d19a6103 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts
> @@ -268,3 +268,63 @@ &main_gpio1 {
> &gpmc0 {
> ranges = <0 0 0x00 0x51000000 0x01000000>; /* CS0 space. Min partition = 16MB */
> };
> +
> +&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_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_deep_sleep>,
> + <&system_mcu_only>,
> + <&system_standby>;
> + status = "okay";
> +};
> +
> +&mcu_pmx0 {
> + 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 */
> + >;
> + };
> +};
>
> --
> 2.50.1
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 6/7] arm64: dts: ti: k3-am62a7-sk: Set wakeup-source system-states
2025-08-12 9:15 ` [PATCH v2 6/7] arm64: dts: ti: k3-am62a7-sk: " Markus Schneider-Pargmann
@ 2025-09-23 18:22 ` Kendall Willis
0 siblings, 0 replies; 15+ messages in thread
From: Kendall Willis @ 2025-09-23 18:22 UTC (permalink / raw)
To: Markus Schneider-Pargmann
Cc: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel, devicetree,
linux-kernel, Vishal Mahaveer, Kevin Hilman, Dhruva Gole,
Sebin Francis, Akashdeep Kaur
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+DDR"/"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>
>
> - Combine k3-am62a7-sk.dts devicetree nodes
> ---
> arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 71 +++++++++++++++++++++++++++++++++
> 1 file changed, 71 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
> index bceead5e288e6d78c671baf0afabd1a9aa23fbee..55cab49f26382f08e2cc93d17afc424af8c59caa 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
> +++ b/arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
> @@ -257,6 +257,10 @@ AM62AX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C8) WKUP_UART0_RTSn */
> &wkup_uart0 {
> pinctrl-names = "default";
> pinctrl-0 = <&wkup_uart0_pins_default>;
> + wakeup-source = <&system_io_ddr>,
> + <&system_deep_sleep>,
> + <&system_mcu_only>,
> + <&system_standby>;
> status = "reserved";
> };
>
> @@ -450,6 +454,42 @@ pmic_irq_pins_default: pmic-irq-default-pins {
> AM62AX_MCU_IOPAD(0x000, PIN_INPUT, 7) /* (E11) MCU_GPIO0_0 */
> >;
> };
> +
> + 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 */
> + >;
> + };
AM62AX_MCU_IOPAD should be used for consistency.
Best,
Kendall Willis
> };
>
> &mcu_gpio0 {
> @@ -935,3 +975,34 @@ AM62AX_IOPAD(0x008, PIN_INPUT, 0) /* (J24) OSPI0_DQS */
> >;
> };
> };
> +
> +&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
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 7/7] arm64: dts: ti: k3-am62p5-sk: Set wakeup-source system-states
2025-08-12 9:15 ` [PATCH v2 7/7] arm64: dts: ti: k3-am62p5-sk: " Markus Schneider-Pargmann
@ 2025-09-23 18:24 ` Kendall Willis
2025-09-24 9:36 ` Markus Schneider-Pargmann
0 siblings, 1 reply; 15+ messages in thread
From: Kendall Willis @ 2025-09-23 18:24 UTC (permalink / raw)
To: Markus Schneider-Pargmann
Cc: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel, devicetree,
linux-kernel, Vishal Mahaveer, Kevin Hilman, Dhruva Gole,
Sebin Francis, Akashdeep Kaur
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
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH v2 7/7] arm64: dts: ti: k3-am62p5-sk: Set wakeup-source system-states
2025-09-23 18:24 ` Kendall Willis
@ 2025-09-24 9:36 ` Markus Schneider-Pargmann
0 siblings, 0 replies; 15+ messages in thread
From: Markus Schneider-Pargmann @ 2025-09-24 9:36 UTC (permalink / raw)
To: Kendall Willis, Markus Schneider-Pargmann
Cc: Nishanth Menon, Vignesh Raghavendra, Tero Kristo, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-kernel, devicetree,
linux-kernel, Vishal Mahaveer, Kevin Hilman, Dhruva Gole,
Sebin Francis, Akashdeep Kaur
[-- Attachment #1: Type: text/plain, Size: 2668 bytes --]
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 289 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2025-09-24 9:36 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-12 9:15 [PATCH v2 0/7] arm64: dts: ti: k3-am62: Add wakeup-sources for low power modes Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 1/7] arm64: dts: ti: k3-pinctrl: Add WKUP_EN flag Markus Schneider-Pargmann
2025-08-27 19:14 ` Kendall Willis
2025-09-16 21:58 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 2/7] arm64: dts: ti: k3-am62: Define possible system states Markus Schneider-Pargmann
2025-09-23 18:03 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 3/7] arm64: dts: ti: k3-am62a: " Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 4/7] arm64: dts: ti: k3-am62p: " Markus Schneider-Pargmann
2025-08-12 9:15 ` [PATCH v2 5/7] arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states Markus Schneider-Pargmann
2025-09-23 18:16 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 6/7] arm64: dts: ti: k3-am62a7-sk: " Markus Schneider-Pargmann
2025-09-23 18:22 ` Kendall Willis
2025-08-12 9:15 ` [PATCH v2 7/7] arm64: dts: ti: k3-am62p5-sk: " Markus Schneider-Pargmann
2025-09-23 18:24 ` Kendall Willis
2025-09-24 9:36 ` Markus Schneider-Pargmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox