The pins associated with m_can have to have a special configuration to
be able to wakeup the SoC from some system states. This configuration is
described in the wakeup pinctrl state while the default state describes
the default configuration.
Also m_can can be a wakeup-source if capable of wakeup.
Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com>
---
.../devicetree/bindings/net/can/bosch,m_can.yaml | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
index c4887522e8fe97c3947357b4dbd4ecf20ee8100a..ecba8783198fc1658fcc236d8aa3c89d8c90abbd 100644
--- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
+++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
@@ -106,6 +106,22 @@ properties:
maximum: 32
minItems: 1
+ pinctrl-0:
+ description: Default pinctrl state
+
+ pinctrl-1:
+ description: Wakeup pinctrl state
+
+ pinctrl-names:
+ description:
+ When present should contain at least "default" describing the default pin
+ states. The second state called "wakeup" describes the pins in their
+ wakeup configuration required to exit sleep states.
+ minItems: 1
+ items:
+ - const: default
+ - const: wakeup
+
power-domains:
description:
Power domain provider node and an args specifier containing
@@ -122,6 +138,12 @@ properties:
minItems: 1
maxItems: 2
+ wakeup-source:
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+ description:
+ List of phandles to system idle states in which mcan can wakeup the system.
+
+
required:
- compatible
- reg
--
2.50.1
On 12.08.2025 11:10:22, Markus Schneider-Pargmann wrote: > The pins associated with m_can have to have a special configuration to > be able to wakeup the SoC from some system states. This configuration is > described in the wakeup pinctrl state while the default state describes > the default configuration. > > Also m_can can be a wakeup-source if capable of wakeup. > > Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> > --- > .../devicetree/bindings/net/can/bosch,m_can.yaml | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml > index c4887522e8fe97c3947357b4dbd4ecf20ee8100a..ecba8783198fc1658fcc236d8aa3c89d8c90abbd 100644 > --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml > +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml > @@ -106,6 +106,22 @@ properties: > maximum: 32 > minItems: 1 > > + pinctrl-0: > + description: Default pinctrl state > + > + pinctrl-1: > + description: Wakeup pinctrl state > + > + pinctrl-names: > + description: > + When present should contain at least "default" describing the default pin > + states. The second state called "wakeup" describes the pins in their > + wakeup configuration required to exit sleep states. > + minItems: 1 > + items: > + - const: default > + - const: wakeup > + > power-domains: > description: > Power domain provider node and an args specifier containing > @@ -122,6 +138,12 @@ properties: > minItems: 1 > maxItems: 2 > > + wakeup-source: > + $ref: /schemas/types.yaml#/definitions/phandle-array > + description: > + List of phandles to system idle states in which mcan can wakeup the system. What non TI SoCs that don't have partial IO and want regular Wake-On-CAN and don't define system idle states? Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung Nürnberg | Phone: +49-5121-206917-129 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
On Wed Aug 13, 2025 at 9:37 AM CEST, Marc Kleine-Budde wrote: > On 12.08.2025 11:10:22, Markus Schneider-Pargmann wrote: >> The pins associated with m_can have to have a special configuration to >> be able to wakeup the SoC from some system states. This configuration is >> described in the wakeup pinctrl state while the default state describes >> the default configuration. >> >> Also m_can can be a wakeup-source if capable of wakeup. >> >> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> >> --- >> .../devicetree/bindings/net/can/bosch,m_can.yaml | 22 ++++++++++++++++++++++ >> 1 file changed, 22 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >> index c4887522e8fe97c3947357b4dbd4ecf20ee8100a..ecba8783198fc1658fcc236d8aa3c89d8c90abbd 100644 >> --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >> +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >> @@ -106,6 +106,22 @@ properties: >> maximum: 32 >> minItems: 1 >> >> + pinctrl-0: >> + description: Default pinctrl state >> + >> + pinctrl-1: >> + description: Wakeup pinctrl state >> + >> + pinctrl-names: >> + description: >> + When present should contain at least "default" describing the default pin >> + states. The second state called "wakeup" describes the pins in their >> + wakeup configuration required to exit sleep states. >> + minItems: 1 >> + items: >> + - const: default >> + - const: wakeup >> + >> power-domains: >> description: >> Power domain provider node and an args specifier containing >> @@ -122,6 +138,12 @@ properties: >> minItems: 1 >> maxItems: 2 >> >> + wakeup-source: >> + $ref: /schemas/types.yaml#/definitions/phandle-array >> + description: >> + List of phandles to system idle states in which mcan can wakeup the system. > > What non TI SoCs that don't have partial IO and want regular Wake-On-CAN > and don't define system idle states? You could simply add system idle states for the state that mcan should be a wakeup source for. The system idle state could be anything like standby or mem for example, depending on your SoC and in which staste Wake-On-CAN is working. Or if this doesn't fit, the binding could later be extended to accept wakeup-source as a boolean property. Best Markus
On 12.08.2025 11:10:22, Markus Schneider-Pargmann wrote: > The pins associated with m_can have to have a special configuration to > be able to wakeup the SoC from some system states. This configuration is > described in the wakeup pinctrl state while the default state describes > the default configuration. > > Also m_can can be a wakeup-source if capable of wakeup. > > Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> > --- > .../devicetree/bindings/net/can/bosch,m_can.yaml | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) > > diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml > index c4887522e8fe97c3947357b4dbd4ecf20ee8100a..ecba8783198fc1658fcc236d8aa3c89d8c90abbd 100644 > --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml > +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml > @@ -106,6 +106,22 @@ properties: > maximum: 32 > minItems: 1 > > + pinctrl-0: > + description: Default pinctrl state > + > + pinctrl-1: > + description: Wakeup pinctrl state > + > + pinctrl-names: > + description: > + When present should contain at least "default" describing the default pin > + states. The second state called "wakeup" describes the pins in their > + wakeup configuration required to exit sleep states. > + minItems: 1 > + items: > + - const: default > + - const: wakeup > + This breaks at least the stm32mp15 SoCs that define a sleep state: &m_can1 { resets = <&rcc FDCAN_R>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&m_can1_pins_b>; pinctrl-1 = <&m_can1_sleep_pins_b>; status = "okay"; }; > power-domains: > description: > Power domain provider node and an args specifier containing > @@ -122,6 +138,12 @@ properties: > minItems: 1 > maxItems: 2 > > + wakeup-source: > + $ref: /schemas/types.yaml#/definitions/phandle-array > + description: > + List of phandles to system idle states in which mcan can wakeup the system. > + > + One newline should be enough. > required: > - compatible > - reg > > -- > 2.50.1 > > > Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung Nürnberg | Phone: +49-5121-206917-129 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-9 |
Hi, On Wed Aug 13, 2025 at 9:23 AM CEST, Marc Kleine-Budde wrote: > On 12.08.2025 11:10:22, Markus Schneider-Pargmann wrote: >> The pins associated with m_can have to have a special configuration to >> be able to wakeup the SoC from some system states. This configuration is >> described in the wakeup pinctrl state while the default state describes >> the default configuration. >> >> Also m_can can be a wakeup-source if capable of wakeup. >> >> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> >> --- >> .../devicetree/bindings/net/can/bosch,m_can.yaml | 22 ++++++++++++++++++++++ >> 1 file changed, 22 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >> index c4887522e8fe97c3947357b4dbd4ecf20ee8100a..ecba8783198fc1658fcc236d8aa3c89d8c90abbd 100644 >> --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >> +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >> @@ -106,6 +106,22 @@ properties: >> maximum: 32 >> minItems: 1 >> >> + pinctrl-0: >> + description: Default pinctrl state >> + >> + pinctrl-1: >> + description: Wakeup pinctrl state >> + >> + pinctrl-names: >> + description: >> + When present should contain at least "default" describing the default pin >> + states. The second state called "wakeup" describes the pins in their >> + wakeup configuration required to exit sleep states. >> + minItems: 1 >> + items: >> + - const: default >> + - const: wakeup >> + > > This breaks at least the stm32mp15 SoCs that define a sleep state: > > &m_can1 { > resets = <&rcc FDCAN_R>; > pinctrl-names = "default", "sleep"; > pinctrl-0 = <&m_can1_pins_b>; > pinctrl-1 = <&m_can1_sleep_pins_b>; > status = "okay"; > }; I am struggling to find binding documentation that explicitly lists this sleep pinctrl state. So what is the intended purpose here? Also the driver does nothing with this at the moment right? I mean I can also add a sleep state to the binding or just leave the binding empty so it can be anything, but that feels wrong. Best Markus > >> power-domains: >> description: >> Power domain provider node and an args specifier containing >> @@ -122,6 +138,12 @@ properties: >> minItems: 1 >> maxItems: 2 >> >> + wakeup-source: >> + $ref: /schemas/types.yaml#/definitions/phandle-array >> + description: >> + List of phandles to system idle states in which mcan can wakeup the system. >> + >> + > > One newline should be enough. > >> required: >> - compatible >> - reg >> >> -- >> 2.50.1 >> >> >> > > Marc
On Tue Aug 19, 2025 at 9:20 AM CEST, Markus Schneider-Pargmann wrote: > Hi, > > On Wed Aug 13, 2025 at 9:23 AM CEST, Marc Kleine-Budde wrote: >> On 12.08.2025 11:10:22, Markus Schneider-Pargmann wrote: >>> The pins associated with m_can have to have a special configuration to >>> be able to wakeup the SoC from some system states. This configuration is >>> described in the wakeup pinctrl state while the default state describes >>> the default configuration. >>> >>> Also m_can can be a wakeup-source if capable of wakeup. >>> >>> Signed-off-by: Markus Schneider-Pargmann <msp@baylibre.com> >>> --- >>> .../devicetree/bindings/net/can/bosch,m_can.yaml | 22 ++++++++++++++++++++++ >>> 1 file changed, 22 insertions(+) >>> >>> diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >>> index c4887522e8fe97c3947357b4dbd4ecf20ee8100a..ecba8783198fc1658fcc236d8aa3c89d8c90abbd 100644 >>> --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >>> +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml >>> @@ -106,6 +106,22 @@ properties: >>> maximum: 32 >>> minItems: 1 >>> >>> + pinctrl-0: >>> + description: Default pinctrl state >>> + >>> + pinctrl-1: >>> + description: Wakeup pinctrl state >>> + >>> + pinctrl-names: >>> + description: >>> + When present should contain at least "default" describing the default pin >>> + states. The second state called "wakeup" describes the pins in their >>> + wakeup configuration required to exit sleep states. >>> + minItems: 1 >>> + items: >>> + - const: default >>> + - const: wakeup >>> + >> >> This breaks at least the stm32mp15 SoCs that define a sleep state: >> >> &m_can1 { >> resets = <&rcc FDCAN_R>; >> pinctrl-names = "default", "sleep"; >> pinctrl-0 = <&m_can1_pins_b>; >> pinctrl-1 = <&m_can1_sleep_pins_b>; >> status = "okay"; >> }; > > I am struggling to find binding documentation that explicitly lists > this sleep pinctrl state. So what is the intended purpose here? Also the > driver does nothing with this at the moment right? > > I mean I can also add a sleep state to the binding or just leave the > binding empty so it can be anything, but that feels wrong. Sorry, I missed the sleep use in the driver, will add it to the binding. I am wondering why it wasn't in the binding before. Thanks! Best Markus > > Best > Markus > >> >>> power-domains: >>> description: >>> Power domain provider node and an args specifier containing >>> @@ -122,6 +138,12 @@ properties: >>> minItems: 1 >>> maxItems: 2 >>> >>> + wakeup-source: >>> + $ref: /schemas/types.yaml#/definitions/phandle-array >>> + description: >>> + List of phandles to system idle states in which mcan can wakeup the system. >>> + >>> + >> >> One newline should be enough. >> >>> required: >>> - compatible >>> - reg >>> >>> -- >>> 2.50.1 >>> >>> >>> >> >> Marc
© 2016 - 2025 Red Hat, Inc.