Message ID | 20220618123035.563070-6-mail@conchuod.ie (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Canaan devicetree fixes | expand |
On Sat, Jun 18, 2022 at 01:30:27PM +0100, Conor Dooley wrote: > From: Conor Dooley <conor.dooley@microchip.com> > > The Canaan k210 apparently has a Sysnopsys Designware timer but > according to the documentation & devicetree it has 2 interrupts rather > than the standard one. Add a custom compatible that supports the 2 > interrupt configuration and falls back to the standard binding (which > is currently the one in use in the devicetree entry). > > Link: https://canaan-creative.com/wp-content/uploads/2020/03/kendryte_standalone_programming_guide_20190311144158_en.pdf #Page 58 > Signed-off-by: Conor Dooley <conor.dooley@microchip.com> > --- > .../bindings/timer/snps,dw-apb-timer.yaml | 28 +++++++++++++++---- > 1 file changed, 22 insertions(+), 6 deletions(-) > > diff --git a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > index d33c9205a909..9a76acc7a66f 100644 > --- a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > +++ b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > @@ -12,6 +12,9 @@ maintainers: > properties: > compatible: > oneOf: > + - items: > + - const: canaan,k210-apb-timer > + - const: snps,dw-apb-timer > - const: snps,dw-apb-timer > - enum: > - snps,dw-apb-timer-sp > @@ -21,9 +24,6 @@ properties: > reg: > maxItems: 1 > > - interrupts: > - maxItems: 1 > - > resets: > maxItems: 1 > > @@ -41,7 +41,23 @@ properties: > > clock-frequency: true > > -additionalProperties: false > +unevaluatedProperties: false > + > +if: > + properties: > + compatible: > + contains: > + const: canaan,k210-apb-timer > + > +then: > + properties: > + interrupts: > + maxItems: 2 When more than 1, you need to define what they are and the order. > + > +else: > + properties: > + interrupts: > + maxItems: 1 > > required: > - compatible > @@ -60,8 +76,8 @@ oneOf: > examples: > - | > timer@ffe00000 { > - compatible = "snps,dw-apb-timer"; > - interrupts = <0 170 4>; > + compatible = "canaan,k210-apb-timer", "snps,dw-apb-timer"; > + interrupts = <0 170 4>, <0 170 4>; > reg = <0xffe00000 0x1000>; > clocks = <&timer_clk>, <&timer_pclk>; > clock-names = "timer", "pclk"; > -- > 2.36.1 > >
Hi Rob, On Mon, Jun 27, 2022 at 05:30:25PM -0600, Rob Herring wrote: > On Sat, Jun 18, 2022 at 01:30:27PM +0100, Conor Dooley wrote: > > From: Conor Dooley <conor.dooley@microchip.com> > > > > The Canaan k210 apparently has a Sysnopsys Designware timer but > > according to the documentation & devicetree it has 2 interrupts rather > > than the standard one. Add a custom compatible that supports the 2 > > interrupt configuration and falls back to the standard binding (which > > is currently the one in use in the devicetree entry). > > > > Link: https://canaan-creative.com/wp-content/uploads/2020/03/kendryte_standalone_programming_guide_20190311144158_en.pdf #Page 58 > > Signed-off-by: Conor Dooley <conor.dooley@microchip.com> > > --- > > .../bindings/timer/snps,dw-apb-timer.yaml | 28 +++++++++++++++---- > > 1 file changed, 22 insertions(+), 6 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > > index d33c9205a909..9a76acc7a66f 100644 > > --- a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > > +++ b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml > > @@ -12,6 +12,9 @@ maintainers: > > properties: > > compatible: > > oneOf: > > + - items: > > + - const: canaan,k210-apb-timer > > + - const: snps,dw-apb-timer > > - const: snps,dw-apb-timer > > - enum: > > - snps,dw-apb-timer-sp > > @@ -21,9 +24,6 @@ properties: > > reg: > > maxItems: 1 > > > > - interrupts: > > - maxItems: 1 > > - > > resets: > > maxItems: 1 > > > > @@ -41,7 +41,23 @@ properties: > > > > clock-frequency: true > > > > -additionalProperties: false > > +unevaluatedProperties: false > > + > > +if: > > + properties: > > + compatible: > > + contains: > > + const: canaan,k210-apb-timer > > + > > +then: > > + properties: > > + interrupts: > > + maxItems: 2 > > When more than 1, you need to define what they are and the order. Please see my note to v2 of this patch: Link: https://lore.kernel.org/lkml/20220627211314.dc2hempelyl5ayjg@mobilestation/ -Sergey > > > + > > +else: > > + properties: > > + interrupts: > > + maxItems: 1 > > > > required: > > - compatible > > @@ -60,8 +76,8 @@ oneOf: > > examples: > > - | > > timer@ffe00000 { > > - compatible = "snps,dw-apb-timer"; > > - interrupts = <0 170 4>; > > + compatible = "canaan,k210-apb-timer", "snps,dw-apb-timer"; > > + interrupts = <0 170 4>, <0 170 4>; > > reg = <0xffe00000 0x1000>; > > clocks = <&timer_clk>, <&timer_pclk>; > > clock-names = "timer", "pclk"; > > -- > > 2.36.1 > > > >
diff --git a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml index d33c9205a909..9a76acc7a66f 100644 --- a/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml +++ b/Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml @@ -12,6 +12,9 @@ maintainers: properties: compatible: oneOf: + - items: + - const: canaan,k210-apb-timer + - const: snps,dw-apb-timer - const: snps,dw-apb-timer - enum: - snps,dw-apb-timer-sp @@ -21,9 +24,6 @@ properties: reg: maxItems: 1 - interrupts: - maxItems: 1 - resets: maxItems: 1 @@ -41,7 +41,23 @@ properties: clock-frequency: true -additionalProperties: false +unevaluatedProperties: false + +if: + properties: + compatible: + contains: + const: canaan,k210-apb-timer + +then: + properties: + interrupts: + maxItems: 2 + +else: + properties: + interrupts: + maxItems: 1 required: - compatible @@ -60,8 +76,8 @@ oneOf: examples: - | timer@ffe00000 { - compatible = "snps,dw-apb-timer"; - interrupts = <0 170 4>; + compatible = "canaan,k210-apb-timer", "snps,dw-apb-timer"; + interrupts = <0 170 4>, <0 170 4>; reg = <0xffe00000 0x1000>; clocks = <&timer_clk>, <&timer_pclk>; clock-names = "timer", "pclk";