[PATCH 3/7] dt-bindings: clock: document 8ULP's SIM LPAV
Laurentiu Mihalcea
laurentiumihalcea111 at gmail.com
Mon Oct 13 05:48:07 PDT 2025
On 8/5/2025 10:03 AM, Krzysztof Kozlowski wrote:
> On Mon, Aug 04, 2025 at 11:54:03AM -0400, Laurentiu Mihalcea wrote:
>> From: Laurentiu Mihalcea <laurentiu.mihalcea at nxp.com>
>>
>> Add documentation for i.MX8ULP's SIM LPAV module.
>>
>> Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea at nxp.com>
>> ---
>> .../bindings/clock/fsl,imx8ulp-sim-lpav.yaml | 69 +++++++++++++++++++
>> 1 file changed, 69 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/clock/fsl,imx8ulp-sim-lpav.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/clock/fsl,imx8ulp-sim-lpav.yaml b/Documentation/devicetree/bindings/clock/fsl,imx8ulp-sim-lpav.yaml
>> new file mode 100644
>> index 000000000000..ef44f50921f8
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/clock/fsl,imx8ulp-sim-lpav.yaml
>> @@ -0,0 +1,69 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/clock/fsl,imx8ulp-sim-lpav.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: NXP i.MX8ULP LPAV System Integration Module (SIM)
>> +
>> +maintainers:
>> + - Laurentiu Mihalcea <laurentiu.mihalcea at nxp.com>
>> +
>> +description:
>> + The i.MX8ULP LPAV subsystem contains a block control module known as
>> + SIM LPAV, which offers functionalities such as clock gating or reset
>> + line assertion/de-assertion.
>> +
>> +properties:
>> + compatible:
>> + items:
>> + - enum:
>> + - fsl,imx8ulp-sim-lpav
>> + - const: syscon
> Why is this syscon?
because of the MUX child's progamming model (i.e. "mmio-mux") which needs a syscon parent.
will get rid of this by using "reg-mux" instead. There shouldn't be a need for syscon anyways.
>
>> +
>> + reg:
>> + maxItems: 1
>> +
>> + clocks:
>> + maxItems: 3
>> +
>> + clock-names:
>> + items:
>> + - const: lpav_bus
>> + - const: hifi_core
>> + - const: hifi_plat
>> +
>> + '#clock-cells':
>> + const: 1
>> + description: clock ID
> Drop description, redundant. Look how other bindings write this.
ACK. Very sorry for the easily avoidable mistakes.
>
>> +
>> + '#reset-cells':
>> + const: 1
>> + description: reset ID
> Ditto
>
>> +
>> + mux-controller:
>> + $ref: /schemas/mux/reg-mux.yaml#
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - clocks
>> + - clock-names
>> + - '#clock-cells'
> reset cells and mux controller.
I'd say the mux-controller child can stay optional since the driver allows it?
As for "#reset-cells": unless CONFIG_RESET_CONTROLLER is enabled, the driver allows
this property to not be specified. The whole idea was to try and make the driver more
flexible in case, for whatever reason, people wouldn't want/need the reset controller bit.
In hindsight, I think this decision makes writing the binding a bit more awkward (since the
optionality of this property depends on the value of CONFIG_RESET_CONTROLLER) so maybe
we'd just be better off with having this property mandatory and modifying the driver to remove
the aforementioned flexibility?
>
>
>
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/clock/imx8ulp-clock.h>
>> +
>> + clock-controller at 2da50000 {
>> + compatible = "fsl,imx8ulp-sim-lpav", "syscon";
>> + reg = <0x2da50000 0x10000>;
>> + clocks = <&cgc2 IMX8ULP_CLK_LPAV_BUS_DIV>,
>> + <&cgc2 IMX8ULP_CLK_HIFI_DIVCORE>,
>> + <&cgc2 IMX8ULP_CLK_HIFI_DIVPLAT>;
>> + clock-names = "lpav_bus", "hifi_core", "hifi_plat";
>> + #clock-cells = <1>;
>> + #reset-cells = <1>;
> Incomplete node - missing properties/child. Post complete binding and
> complete example.
>
> Best regards,
> Krzysztof
>
More information about the linux-arm-kernel
mailing list