Message ID | 20231215204050.2296404-3-cristian.ciocaltea@collabora.com |
---|---|
State | Superseded |
Headers | show |
Series | Enable networking support for StarFive JH7100 SoC | expand |
On Fri, Dec 15, 2023 at 11:03:24PM +0200, Cristian Ciocaltea wrote: > On 12/15/23 22:59, Samuel Holland wrote: > > On 2023-12-15 2:47 PM, Jessica Clarke wrote: > >> On 15 Dec 2023, at 20:40, Cristian Ciocaltea <cristian.ciocaltea@collabora.com> wrote: > >>> > >>> The Synopsys DesignWare MAC found on StarFive JH7100 SoC is mostly > >>> similar to the newer JH7110, but it requires only two interrupts and a > >>> single reset line, which is 'ahb' instead of the commonly used > >>> 'stmmaceth'. > >>> > >>> Since the common binding 'snps,dwmac' allows selecting 'ahb' only in > >>> conjunction with 'stmmaceth', extend the logic to also permit exclusive > >>> usage of the 'ahb' reset name. This ensures the following use cases are > >>> supported: > >>> > >>> JH7110: reset-names = "stmmaceth", "ahb"; > >>> JH7100: reset-names = "ahb"; > >>> other: reset-names = "stmmaceth"; > >>> > >>> Also note the need to use a different dwmac fallback, as v5.20 applies > >>> to JH7110 only, while JH7100 relies on v3.7x. > >>> > >>> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> > >>> --- > >>> .../devicetree/bindings/net/snps,dwmac.yaml | 3 +- > >>> .../bindings/net/starfive,jh7110-dwmac.yaml | 74 +++++++++++++------ > >>> 2 files changed, 55 insertions(+), 22 deletions(-) > >>> > >>> diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml > >>> index 5c2769dc689a..c1380ff1c054 100644 > >>> --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml > >>> +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml > >>> @@ -95,6 +95,7 @@ properties: > >>> - snps,dwmac-5.20 > >>> - snps,dwxgmac > >>> - snps,dwxgmac-2.10 > >>> + - starfive,jh7100-dwmac > >>> - starfive,jh7110-dwmac > >>> > >>> reg: > >>> @@ -146,7 +147,7 @@ properties: > >>> reset-names: > >>> minItems: 1 > >>> items: > >>> - - const: stmmaceth > >>> + - enum: [stmmaceth, ahb] > >>> - const: ahb > >> > >> I’m not so well-versed in the YAML bindings, but would this not allow > >> reset-names = "ahb", "ahb"? > > > > Yes, it would. You need something like: > > > > reset-names: > > oneOf: > > - enum: [stmmaceth, ahb] > > - items: > > - const: stmmaceth > > - const: ahb > > Oh yes, I always forget about the "oneOf" thing. Thanks! Won't this also relax the naming for all devices that allow a single reset, but expect the stmmaceth one? I'm not sure that that actually matters, I think the consumer bindings have constraints themselves.
On 12/17/23 23:09, Conor Dooley wrote: > On Fri, Dec 15, 2023 at 11:03:24PM +0200, Cristian Ciocaltea wrote: >> On 12/15/23 22:59, Samuel Holland wrote: >>> On 2023-12-15 2:47 PM, Jessica Clarke wrote: >>>> On 15 Dec 2023, at 20:40, Cristian Ciocaltea <cristian.ciocaltea@collabora.com> wrote: >>>>> >>>>> The Synopsys DesignWare MAC found on StarFive JH7100 SoC is mostly >>>>> similar to the newer JH7110, but it requires only two interrupts and a >>>>> single reset line, which is 'ahb' instead of the commonly used >>>>> 'stmmaceth'. >>>>> >>>>> Since the common binding 'snps,dwmac' allows selecting 'ahb' only in >>>>> conjunction with 'stmmaceth', extend the logic to also permit exclusive >>>>> usage of the 'ahb' reset name. This ensures the following use cases are >>>>> supported: >>>>> >>>>> JH7110: reset-names = "stmmaceth", "ahb"; >>>>> JH7100: reset-names = "ahb"; >>>>> other: reset-names = "stmmaceth"; >>>>> >>>>> Also note the need to use a different dwmac fallback, as v5.20 applies >>>>> to JH7110 only, while JH7100 relies on v3.7x. >>>>> >>>>> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> >>>>> --- >>>>> .../devicetree/bindings/net/snps,dwmac.yaml | 3 +- >>>>> .../bindings/net/starfive,jh7110-dwmac.yaml | 74 +++++++++++++------ >>>>> 2 files changed, 55 insertions(+), 22 deletions(-) >>>>> >>>>> diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml >>>>> index 5c2769dc689a..c1380ff1c054 100644 >>>>> --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml >>>>> +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml >>>>> @@ -95,6 +95,7 @@ properties: >>>>> - snps,dwmac-5.20 >>>>> - snps,dwxgmac >>>>> - snps,dwxgmac-2.10 >>>>> + - starfive,jh7100-dwmac >>>>> - starfive,jh7110-dwmac >>>>> >>>>> reg: >>>>> @@ -146,7 +147,7 @@ properties: >>>>> reset-names: >>>>> minItems: 1 >>>>> items: >>>>> - - const: stmmaceth >>>>> + - enum: [stmmaceth, ahb] >>>>> - const: ahb >>>> >>>> I’m not so well-versed in the YAML bindings, but would this not allow >>>> reset-names = "ahb", "ahb"? >>> >>> Yes, it would. You need something like: >>> >>> reset-names: >>> oneOf: >>> - enum: [stmmaceth, ahb] >>> - items: >>> - const: stmmaceth >>> - const: ahb >> >> Oh yes, I always forget about the "oneOf" thing. Thanks! > > Won't this also relax the naming for all devices that allow a single > reset, but expect the stmmaceth one? I'm not sure that that actually > matters, I think the consumer bindings have constraints themselves. Before commit 843f603762a5 ("dt-bindings: net: snps,dwmac: Add 'ahb' reset/reset-name"), the 'stmmaceth' was the only possible option, hence there was no need for any constraints on the consumer bindings. But afterwards it was allowed to use both resets, hence I think the bindings should have been updated at that time by adding 'maxItems: 1' to prevent using the 2nd reset. I could fix this in a separate series, if it's not something mandatory to be handled here. Thanks for reviewing, Cristian
> > Won't this also relax the naming for all devices that allow a single > > reset, but expect the stmmaceth one? I'm not sure that that actually > > matters, I think the consumer bindings have constraints themselves. > > Before commit 843f603762a5 ("dt-bindings: net: snps,dwmac: Add 'ahb' > reset/reset-name"), the 'stmmaceth' was the only possible option, hence > there was no need for any constraints on the consumer bindings. But > afterwards it was allowed to use both resets, hence I think the bindings > should have been updated at that time by adding 'maxItems: 1' to prevent > using the 2nd reset. > > I could fix this in a separate series, if it's not something mandatory > to be handled here. If it is not introduced by this series, I don't see why it could not be handled separately if needed.
diff --git a/Documentation/devicetree/bindings/net/snps,dwmac.yaml b/Documentation/devicetree/bindings/net/snps,dwmac.yaml index 5c2769dc689a..c1380ff1c054 100644 --- a/Documentation/devicetree/bindings/net/snps,dwmac.yaml +++ b/Documentation/devicetree/bindings/net/snps,dwmac.yaml @@ -95,6 +95,7 @@ properties: - snps,dwmac-5.20 - snps,dwxgmac - snps,dwxgmac-2.10 + - starfive,jh7100-dwmac - starfive,jh7110-dwmac reg: @@ -146,7 +147,7 @@ properties: reset-names: minItems: 1 items: - - const: stmmaceth + - enum: [stmmaceth, ahb] - const: ahb power-domains: diff --git a/Documentation/devicetree/bindings/net/starfive,jh7110-dwmac.yaml b/Documentation/devicetree/bindings/net/starfive,jh7110-dwmac.yaml index d90cb82c1424..b01602738fc3 100644 --- a/Documentation/devicetree/bindings/net/starfive,jh7110-dwmac.yaml +++ b/Documentation/devicetree/bindings/net/starfive,jh7110-dwmac.yaml @@ -22,10 +22,14 @@ select: properties: compatible: - items: - - enum: - - starfive,jh7110-dwmac - - const: snps,dwmac-5.20 + oneOf: + - items: + - const: starfive,jh7100-dwmac + - const: snps,dwmac + - items: + - enum: + - starfive,jh7110-dwmac + - const: snps,dwmac-5.20 reg: maxItems: 1 @@ -46,23 +50,6 @@ properties: - const: tx - const: gtx - interrupts: - minItems: 3 - maxItems: 3 - - interrupt-names: - minItems: 3 - maxItems: 3 - - resets: - minItems: 2 - maxItems: 2 - - reset-names: - items: - - const: stmmaceth - - const: ahb - starfive,tx-use-rgmii-clk: description: Tx clock is provided by external rgmii clock. @@ -93,6 +80,51 @@ required: allOf: - $ref: snps,dwmac.yaml# + - if: + properties: + compatible: + contains: + const: starfive,jh7100-dwmac + then: + properties: + interrupts: + minItems: 2 + maxItems: 2 + + interrupt-names: + minItems: 2 + maxItems: 2 + + resets: + maxItems: 1 + + reset-names: + const: ahb + + - if: + properties: + compatible: + contains: + const: starfive,jh7110-dwmac + then: + properties: + interrupts: + minItems: 3 + maxItems: 3 + + interrupt-names: + minItems: 3 + maxItems: 3 + + resets: + minItems: 2 + maxItems: 2 + + reset-names: + items: + - const: stmmaceth + - const: ahb + unevaluatedProperties: false examples:
The Synopsys DesignWare MAC found on StarFive JH7100 SoC is mostly similar to the newer JH7110, but it requires only two interrupts and a single reset line, which is 'ahb' instead of the commonly used 'stmmaceth'. Since the common binding 'snps,dwmac' allows selecting 'ahb' only in conjunction with 'stmmaceth', extend the logic to also permit exclusive usage of the 'ahb' reset name. This ensures the following use cases are supported: JH7110: reset-names = "stmmaceth", "ahb"; JH7100: reset-names = "ahb"; other: reset-names = "stmmaceth"; Also note the need to use a different dwmac fallback, as v5.20 applies to JH7110 only, while JH7100 relies on v3.7x. Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@collabora.com> --- .../devicetree/bindings/net/snps,dwmac.yaml | 3 +- .../bindings/net/starfive,jh7110-dwmac.yaml | 74 +++++++++++++------ 2 files changed, 55 insertions(+), 22 deletions(-)