[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-arm-kernel
Subject:    Re: [PATCH v6 1/3] dt-bindings: pwm: Add Xilinx AXI Timer
From:       Sean Anderson <sean.anderson () seco ! com>
Date:       2021-08-31 20:13:29
Message-ID: 264f3ab9-fbf7-8f5d-af57-26b8602a6fbd () seco ! com
[Download RAW message or body]



On 8/31/21 4:11 PM, Rob Herring wrote:
> On Thu, Aug 26, 2021 at 05:18:28PM -0400, Sean Anderson wrote:
> > This adds a binding for the Xilinx LogiCORE IP AXI Timer. This device is a
> > "soft" block, so it has some parameters which would not be configurable in
> > most hardware. This binding is usually automatically generated by Xilinx's
> > tools, so the names and values of some properties should be kept as they
> > are, if possible. In addition, this binding is already in the kernel at
> > arch/microblaze/boot/dts/system.dts, and in user software such as QEMU.
> > 
> > The existing driver uses the clock-frequency property, or alternatively the
> > /cpus/timebase-frequency property as its frequency input. Because these
> > properties are deprecated, they have not been included with this schema.
> > All new bindings should use the clocks/clock-names properties to specify
> > the parent clock.
> > 
> > Because we need to init timer devices so early in boot, we determine if we
> > should use the PWM driver or the clocksource/clockevent driver by the
> > presence/absence, respectively, of #pwm-cells. Because both counters are
> > used by the PWM, there is no need for a separate property specifying which
> > counters are to be used for the PWM.
> > 
> > Signed-off-by: Sean Anderson <sean.anderson@seco.com>
> > ---
> > 
> > Changes in v6:
> > - Fix incorrect schema id
> > - Enumerate possible counter widths
> > 
> > Changes in v5:
> > - Update commit message to reflect revisions
> > - Fix indentation lint
> > - Add example for timer binding
> > - Remove xlnx,axi-timer-2.0 compatible string
> > - Move schema into the timer directory
> > 
> > Changes in v4:
> > - Remove references to generate polarity so this can get merged
> > - Predicate PWM driver on the presence of #pwm-cells
> > - Make some properties optional for clocksource drivers
> > 
> > Changes in v3:
> > - Mark all boolean-as-int properties as deprecated
> > - Add xlnx,pwm and xlnx,gen?-active-low properties.
> > - Make newer replacement properties mutually-exclusive with what they
> > replace
> > - Add an example with non-deprecated properties only.
> > 
> > Changes in v2:
> > - Use 32-bit addresses for example binding
> > 
> > .../bindings/timer/xlnx,xps-timer.yaml        | 90 +++++++++++++++++++
> > 1 file changed, 90 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/timer/xlnx,xps-timer.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/timer/xlnx,xps-timer.yaml \
> > b/Documentation/devicetree/bindings/timer/xlnx,xps-timer.yaml new file mode \
> > 100644 index 000000000000..5be353a642aa
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/timer/xlnx,xps-timer.yaml
> > @@ -0,0 +1,90 @@
> > +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/timer/xlnx,xps-timer.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Xilinx LogiCORE IP AXI Timer Device Tree Binding
> > +
> > +maintainers:
> > +  - Sean Anderson <sean.anderson@seco.com>
> > +
> > +properties:
> > +  compatible:
> > +    contains:
> > +      const: xlnx,xps-timer-1.00.a
> > +
> > +  clocks:
> > +    maxItems: 1
> > +
> > +  clock-names:
> > +    const: s_axi_aclk
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  xlnx,count-width:
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    enum: [8, 16, 32]
> > +    default: 32
> > +    description:
> > +      The width of the counter(s), in bits.
> > +
> > +  xlnx,one-timer-only:
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    enum: [ 0, 1 ]
> > +    description:
> > +      Whether only one timer is present in this block.
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - xlnx,one-timer-only
> > +
> > +allOf:
> > +  - if:
> > +      required:
> > +        - '#pwm-cells'
> > +    then:
> > +      allOf:
> > +        - required:
> > +            - clocks
> > +        - properties:
> > +            xlnx,one-timer-only:
> > +              const: 0
> > +    else:
> > +      required:
> > +        - interrupts
> > +  - if:
> > +      required:
> > +        - clocks
> > +    then:
> > +      required:
> > +        - clock-names
> > +
> > +additionalProperties: true
> 
> This needs to be false. What else do you expect to be present?

There are additional properties present in the existing in-tree bindings
for this device. Should I instead set "unevaluatedProperties: false"?

--Sean

> 
> > +
> > +examples:
> > +  - |
> > +    timer@800e0000 {
> > +        clock-names = "s_axi_aclk";
> > +        clocks = <&zynqmp_clk 71>;
> > +        compatible = "xlnx,xps-timer-1.00.a";
> > +        reg = <0x800e0000 0x10000>;
> > +        interrupts = <0 39 2>;
> > +        xlnx,count-width = <16>;
> > +        xlnx,one-timer-only = <0x0>;
> > +    };
> > +
> > +    timer@800f0000 {
> > +        #pwm-cells = <0>;
> > +        clock-names = "s_axi_aclk";
> > +        clocks = <&zynqmp_clk 71>;
> > +        compatible = "xlnx,xps-timer-1.00.a";
> > +        reg = <0x800e0000 0x10000>;
> > +        xlnx,count-width = <32>;
> > +        xlnx,one-timer-only = <0x0>;
> > +    };
> > --
> > 2.25.1
> > 
> > 
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic