[PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties

Markus Schneider-Pargmann posted 4 patches 1 month, 3 weeks ago
There is a newer version of this series
[PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties
Posted by Markus Schneider-Pargmann 1 month, 3 weeks ago
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
Re: [PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties
Posted by Marc Kleine-Budde 1 month, 3 weeks ago
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   |
Re: [PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties
Posted by Markus Schneider-Pargmann 1 month, 2 weeks ago
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
Re: [PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties
Posted by Marc Kleine-Budde 1 month, 3 weeks ago
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   |
Re: [PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties
Posted by Markus Schneider-Pargmann 1 month, 2 weeks ago
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

Re: [PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties
Posted by Markus Schneider-Pargmann 1 month, 2 weeks ago
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