[PATCH 08/13] dt-bindings: serial: fsl-linflexuart: add clock input properties

Larisa Grigore posted 13 patches 1 month, 2 weeks ago
[PATCH 08/13] dt-bindings: serial: fsl-linflexuart: add clock input properties
Posted by Larisa Grigore 1 month, 2 weeks ago
From: Radu Pirea <radu-nicolae.pirea@nxp.com>

Add optional support for the two clock inputs used by the LINFlexD UART
controller:
- "lin": LIN_BAUD_CLK
- "ipg": LINFLEXD_CLK

The clock inputs are kept optional to maintain compatibility with the
S32V234 platform.

Signed-off-by: Radu Pirea <radu-nicolae.pirea@nxp.com>
Co-developed-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
Signed-off-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
---
 .../bindings/serial/fsl,s32-linflexuart.yaml   | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
index 4171f524a928..885f0b1b3492 100644
--- a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
+++ b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
@@ -34,6 +34,14 @@ properties:
   interrupts:
     maxItems: 1
 
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: lin
+      - const: ipg
+
 required:
   - compatible
   - reg
@@ -48,3 +56,13 @@ examples:
         reg = <0x40053000 0x1000>;
         interrupts = <0 59 4>;
     };
+
+  - |
+    serial@401c8000 {
+        compatible = "nxp,s32g2-linflexuart",
+                     "fsl,s32v234-linflexuart";
+        reg = <0x401C8000 0x3000>;
+        interrupts = <0 82 1>;
+        clocks = <&clks 14>, <&clks 13>;
+        clock-names = "lin", "ipg";
+    };
-- 
2.47.0
Re: [PATCH 08/13] dt-bindings: serial: fsl-linflexuart: add clock input properties
Posted by Krzysztof Kozlowski 1 month, 2 weeks ago
On 16/02/2026 16:02, Larisa Grigore wrote:
> From: Radu Pirea <radu-nicolae.pirea@nxp.com>
> 
> Add optional support for the two clock inputs used by the LINFlexD UART
> controller:
> - "lin": LIN_BAUD_CLK
> - "ipg": LINFLEXD_CLK
> 
> The clock inputs are kept optional to maintain compatibility with the
> S32V234 platform.

Does S32V234 have the clocks? I don't understand the "maintain
compatibility" in this context. Either you have or you have not clocks,
which should be expressed in schema (: false, see example schema).

> 
> Signed-off-by: Radu Pirea <radu-nicolae.pirea@nxp.com>
> Co-developed-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
> Signed-off-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
> ---
>  .../bindings/serial/fsl,s32-linflexuart.yaml   | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
> index 4171f524a928..885f0b1b3492 100644
> --- a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
> +++ b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
> @@ -34,6 +34,14 @@ properties:
>    interrupts:
>      maxItems: 1
>  
> +  clocks:
> +    maxItems: 2
> +
> +  clock-names:
> +    items:
> +      - const: lin
> +      - const: ipg
> +
>  required:
>    - compatible
>    - reg
> @@ -48,3 +56,13 @@ examples:
>          reg = <0x40053000 0x1000>;
>          interrupts = <0 59 4>;
>      };
> +
> +  - |
> +    serial@401c8000 {
> +        compatible = "nxp,s32g2-linflexuart",
> +                     "fsl,s32v234-linflexuart";
> +        reg = <0x401C8000 0x3000>;
> +        interrupts = <0 82 1>;
> +        clocks = <&clks 14>, <&clks 13>;
> +        clock-names = "lin", "ipg";

Just add the clocks to existing example. No need for new example for
each new property.

> +    };


Best regards,
Krzysztof
Re: [PATCH 08/13] dt-bindings: serial: fsl-linflexuart: add clock input properties
Posted by Larisa Ileana Grigore 1 month, 1 week ago
On 2/16/2026 5:10 PM, Krzysztof Kozlowski wrote:
> On 16/02/2026 16:02, Larisa Grigore wrote:
>> From: Radu Pirea <radu-nicolae.pirea@nxp.com>
>>
>> Add optional support for the two clock inputs used by the LINFlexD UART
>> controller:
>> - "lin": LIN_BAUD_CLK
>> - "ipg": LINFLEXD_CLK
>>
>> The clock inputs are kept optional to maintain compatibility with the
>> S32V234 platform.
> 
> Does S32V234 have the clocks? I don't understand the "maintain
> compatibility" in this context. Either you have or you have not clocks,
> which should be expressed in schema (: false, see example schema).
> 
Hello Krzysztof,

Thanks for pointing this out! I will update both the schema and the 
commit description.
S32V234 does not expose these clocks in its device tree—on this platform 
the LINFlexD clocks are set up and enabled by U‑Boot, so they are not 
available to the kernel.
The changes in this patch are intended specifically for S32G2/G3, where 
the clocks are provided in the DT and required by the driver.

>>
>> Signed-off-by: Radu Pirea <radu-nicolae.pirea@nxp.com>
>> Co-developed-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
>> Signed-off-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
>> ---
>>   .../bindings/serial/fsl,s32-linflexuart.yaml   | 18 ++++++++++++++++++
>>   1 file changed, 18 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>> index 4171f524a928..885f0b1b3492 100644
>> --- a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>> +++ b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>> @@ -34,6 +34,14 @@ properties:
>>     interrupts:
>>       maxItems: 1
>>   
>> +  clocks:
>> +    maxItems: 2
>> +
>> +  clock-names:
>> +    items:
>> +      - const: lin
>> +      - const: ipg
>> +
>>   required:
>>     - compatible
>>     - reg
>> @@ -48,3 +56,13 @@ examples:
>>           reg = <0x40053000 0x1000>;
>>           interrupts = <0 59 4>;
>>       };
>> +
>> +  - |
>> +    serial@401c8000 {
>> +        compatible = "nxp,s32g2-linflexuart",
>> +                     "fsl,s32v234-linflexuart";
>> +        reg = <0x401C8000 0x3000>;
>> +        interrupts = <0 82 1>;
>> +        clocks = <&clks 14>, <&clks 13>;
>> +        clock-names = "lin", "ipg";
> 
> Just add the clocks to existing example. No need for new example for
> each new property.
> 
>> +    };

The existing node refers to S32V234 which does not expose any clock 
properties in its device tree. Because of this, I couldn’t extend that 
example with clocks and clock-names. The additional example is there 
only to illustrate the S32G2 case, where the clocks are required and 
actually present in the device tree. Should I remove it?

Best regards,
Larisa
> 
> Best regards,
> Krzysztof

Re: [PATCH 08/13] dt-bindings: serial: fsl-linflexuart: add clock input properties
Posted by Krzysztof Kozlowski 1 month, 1 week ago
On 18/02/2026 14:26, Larisa Ileana Grigore wrote:
> On 2/16/2026 5:10 PM, Krzysztof Kozlowski wrote:
>> On 16/02/2026 16:02, Larisa Grigore wrote:
>>> From: Radu Pirea <radu-nicolae.pirea@nxp.com>
>>>
>>> Add optional support for the two clock inputs used by the LINFlexD UART
>>> controller:
>>> - "lin": LIN_BAUD_CLK
>>> - "ipg": LINFLEXD_CLK
>>>
>>> The clock inputs are kept optional to maintain compatibility with the
>>> S32V234 platform.
>>
>> Does S32V234 have the clocks? I don't understand the "maintain
>> compatibility" in this context. Either you have or you have not clocks,
>> which should be expressed in schema (: false, see example schema).
>>
> Hello Krzysztof,
> 
> Thanks for pointing this out! I will update both the schema and the 
> commit description.
> S32V234 does not expose these clocks in its device tree—on this platform 
> the LINFlexD clocks are set up and enabled by U‑Boot, so they are not 
> available to the kernel.

So there are clocks. DTS is being used by bootloader, so how bootloader
is going to set up clocks for S32V234 if no one provides them?

This looks like buggy/incomplete approach, although I understand that
the original binding had the issue.


> The changes in this patch are intended specifically for S32G2/G3, where 
> the clocks are provided in the DT and required by the driver.
> 
>>>
>>> Signed-off-by: Radu Pirea <radu-nicolae.pirea@nxp.com>
>>> Co-developed-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
>>> Signed-off-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
>>> ---
>>>   .../bindings/serial/fsl,s32-linflexuart.yaml   | 18 ++++++++++++++++++
>>>   1 file changed, 18 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>>> index 4171f524a928..885f0b1b3492 100644
>>> --- a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>>> +++ b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>>> @@ -34,6 +34,14 @@ properties:
>>>     interrupts:
>>>       maxItems: 1
>>>   
>>> +  clocks:
>>> +    maxItems: 2
>>> +
>>> +  clock-names:
>>> +    items:
>>> +      - const: lin
>>> +      - const: ipg
>>> +
>>>   required:
>>>     - compatible
>>>     - reg
>>> @@ -48,3 +56,13 @@ examples:
>>>           reg = <0x40053000 0x1000>;
>>>           interrupts = <0 59 4>;
>>>       };
>>> +
>>> +  - |
>>> +    serial@401c8000 {
>>> +        compatible = "nxp,s32g2-linflexuart",
>>> +                     "fsl,s32v234-linflexuart";
>>> +        reg = <0x401C8000 0x3000>;
>>> +        interrupts = <0 82 1>;
>>> +        clocks = <&clks 14>, <&clks 13>;
>>> +        clock-names = "lin", "ipg";
>>
>> Just add the clocks to existing example. No need for new example for
>> each new property.
>>
>>> +    };
> 
> The existing node refers to S32V234 which does not expose any clock 
> properties in its device tree. Because of this, I couldn’t extend that 

You just said S32V234 has clocks...

> example with clocks and clock-names. The additional example is there 
> only to illustrate the S32G2 case, where the clocks are required and 
> actually present in the device tree. Should I remove it?
> 
> Best regards,
> Larisa
>>
>> Best regards,
>> Krzysztof
> 


Best regards,
Krzysztof
Re: [PATCH 08/13] dt-bindings: serial: fsl-linflexuart: add clock input properties
Posted by Larisa Ileana Grigore 1 month, 1 week ago
On 2/18/2026 3:29 PM, Krzysztof Kozlowski wrote:
> On 18/02/2026 14:26, Larisa Ileana Grigore wrote:
>> On 2/16/2026 5:10 PM, Krzysztof Kozlowski wrote:
>>> On 16/02/2026 16:02, Larisa Grigore wrote:
>>>> From: Radu Pirea <radu-nicolae.pirea@nxp.com>
>>>>
>>>> Add optional support for the two clock inputs used by the LINFlexD UART
>>>> controller:
>>>> - "lin": LIN_BAUD_CLK
>>>> - "ipg": LINFLEXD_CLK
>>>>
>>>> The clock inputs are kept optional to maintain compatibility with the
>>>> S32V234 platform.
>>>
>>> Does S32V234 have the clocks? I don't understand the "maintain
>>> compatibility" in this context. Either you have or you have not clocks,
>>> which should be expressed in schema (: false, see example schema).
>>>
>> Hello Krzysztof,
>>
>> Thanks for pointing this out! I will update both the schema and the
>> commit description.
>> S32V234 does not expose these clocks in its device tree—on this platform
>> the LINFlexD clocks are set up and enabled by U‑Boot, so they are not
>> available to the kernel.
> 
> So there are clocks. DTS is being used by bootloader, so how bootloader
> is going to set up clocks for S32V234 if no one provides them?
> 
> This looks like buggy/incomplete approach, although I understand that
> the original binding had the issue.
> 
Indeed, I also believe the binding is not fully accurate on S32V234. As 
I mentioned earlier, the LINFlexD clocks are not managed by Linux on 
this platform. They, along with several other clocks, are usually 
initialized by U‑Boot, and Linux does not handle them. That is likely 
the reason they were omitted from the S32V234 binding.
I’m willing to correct this for the S32V234 compatible by making that 
property optional, so we don’t break compatibility.
For S32G, I would prefer to avoid repeating the same oversight we had on 
S32V234 and make the property required, since the IP, as you correctly 
pointed out, does have dedicated clock inputs.

How would you approach this?

Thank you,
Larisa
> 
>> The changes in this patch are intended specifically for S32G2/G3, where
>> the clocks are provided in the DT and required by the driver.
>>
>>>>
>>>> Signed-off-by: Radu Pirea <radu-nicolae.pirea@nxp.com>
>>>> Co-developed-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
>>>> Signed-off-by: Larisa Grigore <larisa.grigore@oss.nxp.com>
>>>> ---
>>>>    .../bindings/serial/fsl,s32-linflexuart.yaml   | 18 ++++++++++++++++++
>>>>    1 file changed, 18 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>>>> index 4171f524a928..885f0b1b3492 100644
>>>> --- a/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>>>> +++ b/Documentation/devicetree/bindings/serial/fsl,s32-linflexuart.yaml
>>>> @@ -34,6 +34,14 @@ properties:
>>>>      interrupts:
>>>>        maxItems: 1
>>>>    
>>>> +  clocks:
>>>> +    maxItems: 2
>>>> +
>>>> +  clock-names:
>>>> +    items:
>>>> +      - const: lin
>>>> +      - const: ipg
>>>> +
>>>>    required:
>>>>      - compatible
>>>>      - reg
>>>> @@ -48,3 +56,13 @@ examples:
>>>>            reg = <0x40053000 0x1000>;
>>>>            interrupts = <0 59 4>;
>>>>        };
>>>> +
>>>> +  - |
>>>> +    serial@401c8000 {
>>>> +        compatible = "nxp,s32g2-linflexuart",
>>>> +                     "fsl,s32v234-linflexuart";
>>>> +        reg = <0x401C8000 0x3000>;
>>>> +        interrupts = <0 82 1>;
>>>> +        clocks = <&clks 14>, <&clks 13>;
>>>> +        clock-names = "lin", "ipg";
>>>
>>> Just add the clocks to existing example. No need for new example for
>>> each new property.
>>>
>>>> +    };
>>
>> The existing node refers to S32V234 which does not expose any clock
>> properties in its device tree. Because of this, I couldn’t extend that
> 
> You just said S32V234 has clocks...
> 
>> example with clocks and clock-names. The additional example is there
>> only to illustrate the S32G2 case, where the clocks are required and
>> actually present in the device tree. Should I remove it?
>>
>> Best regards,
>> Larisa
>>>
>>> Best regards,
>>> Krzysztof
>>
> 
> 
> Best regards,
> Krzysztof

Re: [PATCH 08/13] dt-bindings: serial: fsl-linflexuart: add clock input properties
Posted by Krzysztof Kozlowski 1 month, 1 week ago
On 18/02/2026 14:57, Larisa Ileana Grigore wrote:
> On 2/18/2026 3:29 PM, Krzysztof Kozlowski wrote:
>> On 18/02/2026 14:26, Larisa Ileana Grigore wrote:
>>> On 2/16/2026 5:10 PM, Krzysztof Kozlowski wrote:
>>>> On 16/02/2026 16:02, Larisa Grigore wrote:
>>>>> From: Radu Pirea <radu-nicolae.pirea@nxp.com>
>>>>>
>>>>> Add optional support for the two clock inputs used by the LINFlexD UART
>>>>> controller:
>>>>> - "lin": LIN_BAUD_CLK
>>>>> - "ipg": LINFLEXD_CLK
>>>>>
>>>>> The clock inputs are kept optional to maintain compatibility with the
>>>>> S32V234 platform.
>>>>
>>>> Does S32V234 have the clocks? I don't understand the "maintain
>>>> compatibility" in this context. Either you have or you have not clocks,
>>>> which should be expressed in schema (: false, see example schema).
>>>>
>>> Hello Krzysztof,
>>>
>>> Thanks for pointing this out! I will update both the schema and the
>>> commit description.
>>> S32V234 does not expose these clocks in its device tree—on this platform
>>> the LINFlexD clocks are set up and enabled by U‑Boot, so they are not
>>> available to the kernel.
>>
>> So there are clocks. DTS is being used by bootloader, so how bootloader
>> is going to set up clocks for S32V234 if no one provides them?
>>
>> This looks like buggy/incomplete approach, although I understand that
>> the original binding had the issue.
>>
> Indeed, I also believe the binding is not fully accurate on S32V234. As 
> I mentioned earlier, the LINFlexD clocks are not managed by Linux on 
> this platform. They, along with several other clocks, are usually 
> initialized by U‑Boot, and Linux does not handle them. That is likely 
> the reason they were omitted from the S32V234 binding.
> I’m willing to correct this for the S32V234 compatible by making that 
> property optional, so we don’t break compatibility.
> For S32G, I would prefer to avoid repeating the same oversight we had on 
> S32V234 and make the property required, since the IP, as you correctly 
> pointed out, does have dedicated clock inputs.
> 
> How would you approach this?

So the new device should require clocks, which can be left optional for
the old one with explanation in the commit msg. Linux is not the only
consumer of bindings and DTS.



Best regards,
Krzysztof