Hi Clement, Uwe, On Mon, Nov 04, 2019 at 09:03:59AM +0100, Uwe Kleine-König wrote: > On Sun, Nov 03, 2019 at 09:33:28PM +0100, Clément Péron wrote: > > From: Jernej Skrabec > > > > H6 PWM block is basically the same as A20 PWM, except that it also has > > bus clock and reset line which needs to be handled accordingly. > > > > Expand Allwinner PWM binding with H6 PWM specifics. > > > > Signed-off-by: Jernej Skrabec > > Signed-off-by: Clément Péron > > --- > > .../bindings/pwm/allwinner,sun4i-a10-pwm.yaml | 45 ++++++++++++++++++- > > 1 file changed, 44 insertions(+), 1 deletion(-) > > > > diff --git a/Documentation/devicetree/bindings/pwm/allwinner,sun4i-a10-pwm.yaml b/Documentation/devicetree/bindings/pwm/allwinner,sun4i-a10-pwm.yaml > > index 0ac52f83a58c..bf36ea509f31 100644 > > --- a/Documentation/devicetree/bindings/pwm/allwinner,sun4i-a10-pwm.yaml > > +++ b/Documentation/devicetree/bindings/pwm/allwinner,sun4i-a10-pwm.yaml > > @@ -30,13 +30,46 @@ properties: > > - items: > > - const: allwinner,sun50i-h5-pwm > > - const: allwinner,sun5i-a13-pwm > > + - const: allwinner,sun50i-h6-pwm > > > > reg: > > maxItems: 1 > > > > - clocks: > > + # Even though it only applies to subschemas under the conditionals, > > + # not listing them here will trigger a warning because of the > > + # additionalsProperties set to false. > > + clocks: true > > + clock-names: true > > + resets: > > maxItems: 1 > > > > + if: > > + properties: > > + compatible: > > + contains: > > + const: allwinner,sun50i-h6-pwm > > + > > + then: > > + properties: > > + clocks: > > + items: > > + - description: Module Clock > > + - description: Bus Clock > > + > > + clock-names: > > + items: > > + - const: mod > > + - const: bus > > + > > + required: > > + - clock-names > > + - resets > > + > > + else: > > + properties: > > + clocks: > > + maxItems: 1 > > + > > I guess this hunk says "If this is a allwinner,sun50i-h6-pwm, a mod and > bus clock is required.", right? > > I wonder if it is sensible to require a clock-names property in the else > branch, too. This would make it obvious if the clock there corresponds > to the "mod" or the "bus" clock on H6. (I guess it's "mod".) This can be done a bit differently and could address your concerns Something like properties: ... clocks: minItems: 1 maxItems: 2 items: - description: Bus Clock - description: Module Clock required: - clocks if: ... then: properties: clocks: maxItems: 2 clocks-names: items: - const: mod - const: bus required: - clock-names else: properties: clocks: maxItems: 1 That way, the definition of the order and which clock is which is pretty obvious in both cases, and we don't get any weird warnings. Maxime