diff mbox series

[v3,2/2] dt-bindings: perf: starfive: Add StarLink PMU

Message ID 20231115033608.1597807-3-jisheng.teoh@starfivetech.com
State Changes Requested
Headers show
Series StarFive's StarLink PMU Support | expand

Checks

Context Check Description
robh/checkpatch success
robh/patch-applied success
robh/dtbs-check warning build log
robh/dt-meta-schema success

Commit Message

Ji Sheng Teoh Nov. 15, 2023, 3:36 a.m. UTC
Add device tree binding for StarFive's StarLink PMU (Performance
Monitor Unit).

Signed-off-by: Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
---
 .../bindings/perf/starfive,starlink-pmu.yaml  | 46 +++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml

Comments

Conor Dooley Nov. 15, 2023, 8:03 p.m. UTC | #1
Yo,

On Wed, Nov 15, 2023 at 11:36:08AM +0800, Ji Sheng Teoh wrote:
> Add device tree binding for StarFive's StarLink PMU (Performance
> Monitor Unit).
> 
> Signed-off-by: Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> ---
>  .../bindings/perf/starfive,starlink-pmu.yaml  | 46 +++++++++++++++++++
>  1 file changed, 46 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> 
> diff --git a/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> new file mode 100644
> index 000000000000..a9426a7faeae
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml

btw, since you changed the compatible, the filename should have been
changed to match it.

> @@ -0,0 +1,46 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/perf/starfive,starlink-pmu.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: StarFive StarLink PMU
> +
> +maintainers:
> +  - Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> +
> +description:
> +  StarFive's StarLink PMU integrates one or more CPU cores with a shared L3
> +  memory system. The PMU support overflow interrupt, up to 16 programmable
> +  64bit event counters, and an independent 64bit cycle counter.
> +  StarLink PMU is accessed via MMIO.
> +
> +properties:
> +  compatible:
> +    const: starfive,starlink-500-pmu

So this is not what I had in mind by a "device". I was looking for a
compatible representing an soc in which this IP had been integrated.
A soc-specific compatible, rather than something generic, is requirement
for devicetree - we don't want various integrations of this IP to all be
using a generic compatible when there may be subtle (or less subtle)
differences between integrations.

I'm trying to come up with the syntax for enforcing having two
compatibles with your current one as the fallback, but I have yet to
come up with the correct syntax for that that works correctly.

Hopefully by the time you get some feedback on the driver side of this
submission I will have a concrete suggestion for what to do here.

> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    maxItems: 1
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    soc {
> +        #address-cells = <2>;
> +        #size-cells = <2>;
> +
> +        l3_pmu: pmu@12900000 {

This label here is never used and should be dropped.

Cheers.
Conor.

> +            compatible = "starfive,starlink-500-pmu";
> +            reg = <0x0 0x12900000 0x0 0x10000>;
> +            interrupts = <34>;
> +        };
> +    };
> -- 
> 2.25.1
>
Ji Sheng Teoh Nov. 16, 2023, 2:10 a.m. UTC | #2
On Wed, 15 Nov 2023 20:03:53 +0000
Conor Dooley <conor@kernel.org> wrote:

> Yo,
> 
> On Wed, Nov 15, 2023 at 11:36:08AM +0800, Ji Sheng Teoh wrote:
> > Add device tree binding for StarFive's StarLink PMU (Performance
> > Monitor Unit).
> > 
> > Signed-off-by: Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> > ---
> >  .../bindings/perf/starfive,starlink-pmu.yaml  | 46
> > +++++++++++++++++++ 1 file changed, 46 insertions(+)
> >  create mode 100644
> > Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > 
> > diff --git
> > a/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > new file mode 100644 index 000000000000..a9426a7faeae --- /dev/null
> > +++
> > b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> >  
> 
> btw, since you changed the compatible, the filename should have been
> changed to match it.

The intention to keep the filename generic is to allow addition of new
version of StarLink PMU in future if any, similar to what arm,cmn.yaml
is doing. Hope that makes sense.

> 
> > @@ -0,0 +1,46 @@
> > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/perf/starfive,starlink-pmu.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: StarFive StarLink PMU
> > +
> > +maintainers:
> > +  - Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> > +
> > +description:
> > +  StarFive's StarLink PMU integrates one or more CPU cores with a
> > shared L3
> > +  memory system. The PMU support overflow interrupt, up to 16
> > programmable
> > +  64bit event counters, and an independent 64bit cycle counter.
> > +  StarLink PMU is accessed via MMIO.
> > +
> > +properties:
> > +  compatible:
> > +    const: starfive,starlink-500-pmu  
> 
> So this is not what I had in mind by a "device". I was looking for a
> compatible representing an soc in which this IP had been integrated.
> A soc-specific compatible, rather than something generic, is
> requirement for devicetree - we don't want various integrations of
> this IP to all be using a generic compatible when there may be subtle
> (or less subtle) differences between integrations.
> 
> I'm trying to come up with the syntax for enforcing having two
> compatibles with your current one as the fallback, but I have yet to
> come up with the correct syntax for that that works correctly.
> 
> Hopefully by the time you get some feedback on the driver side of this
> submission I will have a concrete suggestion for what to do here.

Thanks Conor for the enlightenment. In the meantime, to fit the requirement
I would suggest going for "starfive,jh8100-starlink-pmu", making it JH8100
SOC specific if that makes sense.

> 
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - interrupts
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    soc {
> > +        #address-cells = <2>;
> > +        #size-cells = <2>;
> > +
> > +        l3_pmu: pmu@12900000 {  
> 
> This label here is never used and should be dropped.
> 
> Cheers.
> Conor.

Noted, will drop it in v4.

> 
> > +            compatible = "starfive,starlink-500-pmu";
> > +            reg = <0x0 0x12900000 0x0 0x10000>;
> > +            interrupts = <34>;
> > +        };
> > +    };
> > -- 
> > 2.25.1
> >   
>
Conor Dooley Nov. 16, 2023, 2:34 p.m. UTC | #3
On Thu, Nov 16, 2023 at 10:10:35AM +0800, Ji Sheng Teoh wrote:
> On Wed, 15 Nov 2023 20:03:53 +0000
> Conor Dooley <conor@kernel.org> wrote:
> > On Wed, Nov 15, 2023 at 11:36:08AM +0800, Ji Sheng Teoh wrote:
> > > Add device tree binding for StarFive's StarLink PMU (Performance
> > > Monitor Unit).
> > > 
> > > Signed-off-by: Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> > > ---
> > >  .../bindings/perf/starfive,starlink-pmu.yaml  | 46
> > > +++++++++++++++++++ 1 file changed, 46 insertions(+)
> > >  create mode 100644
> > > Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > > 
> > > diff --git
> > > a/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > > b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > > new file mode 100644 index 000000000000..a9426a7faeae --- /dev/null
> > > +++
> > > b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > >  
> > 
> > btw, since you changed the compatible, the filename should have been
> > changed to match it.
> 
> The intention to keep the filename generic is to allow addition of new
> version of StarLink PMU in future if any, similar to what arm,cmn.yaml
> is doing. Hope that makes sense.

No, please keep the filename matching the compatible. Even if the
filename contains "500", there's nothing stopping you from then adding
other pmu variants. There are many many examples of this in the tree.

> > > @@ -0,0 +1,46 @@
> > > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/perf/starfive,starlink-pmu.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: StarFive StarLink PMU
> > > +
> > > +maintainers:
> > > +  - Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> > > +
> > > +description:
> > > +  StarFive's StarLink PMU integrates one or more CPU cores with a
> > > shared L3
> > > +  memory system. The PMU support overflow interrupt, up to 16
> > > programmable
> > > +  64bit event counters, and an independent 64bit cycle counter.
> > > +  StarLink PMU is accessed via MMIO.
> > > +
> > > +properties:
> > > +  compatible:
> > > +    const: starfive,starlink-500-pmu  
> > 
> > So this is not what I had in mind by a "device". I was looking for a
> > compatible representing an soc in which this IP had been integrated.
> > A soc-specific compatible, rather than something generic, is
> > requirement for devicetree - we don't want various integrations of
> > this IP to all be using a generic compatible when there may be subtle
> > (or less subtle) differences between integrations.
> > 
> > I'm trying to come up with the syntax for enforcing having two
> > compatibles with your current one as the fallback, but I have yet to
> > come up with the correct syntax for that that works correctly.
> > 
> > Hopefully by the time you get some feedback on the driver side of this
> > submission I will have a concrete suggestion for what to do here.
> 
> Thanks Conor for the enlightenment. In the meantime, to fit the requirement
> I would suggest going for "starfive,jh8100-starlink-pmu", making it JH8100
> SOC specific if that makes sense.

Okay, you could definitely do that!

Cheers,
Conor.
Ji Sheng Teoh Nov. 16, 2023, 3:24 p.m. UTC | #4
On Thu, 16 Nov 2023 14:34:00 +0000
Conor Dooley <conor@kernel.org> wrote:

> On Thu, Nov 16, 2023 at 10:10:35AM +0800, Ji Sheng Teoh wrote:
> > On Wed, 15 Nov 2023 20:03:53 +0000
> > Conor Dooley <conor@kernel.org> wrote:  
> > > On Wed, Nov 15, 2023 at 11:36:08AM +0800, Ji Sheng Teoh wrote:  
> > > > Add device tree binding for StarFive's StarLink PMU (Performance
> > > > Monitor Unit).
> > > > 
> > > > Signed-off-by: Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> > > > ---
> > > >  .../bindings/perf/starfive,starlink-pmu.yaml  | 46
> > > > +++++++++++++++++++ 1 file changed, 46 insertions(+)
> > > >  create mode 100644
> > > > Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > > > 
> > > > diff --git
> > > > a/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > > > b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > > > new file mode 100644 index 000000000000..a9426a7faeae ---
> > > > /dev/null +++
> > > > b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
> > > >    
> > > 
> > > btw, since you changed the compatible, the filename should have
> > > been changed to match it.  
> > 
> > The intention to keep the filename generic is to allow addition of
> > new version of StarLink PMU in future if any, similar to what
> > arm,cmn.yaml is doing. Hope that makes sense.  
> 
> No, please keep the filename matching the compatible. Even if the
> filename contains "500", there's nothing stopping you from then adding
> other pmu variants. There are many many examples of this in the tree.
> 

Sure, will do that in v4. 

> > > > @@ -0,0 +1,46 @@
> > > > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> > > > +%YAML 1.2
> > > > +---
> > > > +$id:
> > > > http://devicetree.org/schemas/perf/starfive,starlink-pmu.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# +
> > > > +title: StarFive StarLink PMU
> > > > +
> > > > +maintainers:
> > > > +  - Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
> > > > +
> > > > +description:
> > > > +  StarFive's StarLink PMU integrates one or more CPU cores
> > > > with a shared L3
> > > > +  memory system. The PMU support overflow interrupt, up to 16
> > > > programmable
> > > > +  64bit event counters, and an independent 64bit cycle counter.
> > > > +  StarLink PMU is accessed via MMIO.
> > > > +
> > > > +properties:
> > > > +  compatible:
> > > > +    const: starfive,starlink-500-pmu    
> > > 
> > > So this is not what I had in mind by a "device". I was looking
> > > for a compatible representing an soc in which this IP had been
> > > integrated. A soc-specific compatible, rather than something
> > > generic, is requirement for devicetree - we don't want various
> > > integrations of this IP to all be using a generic compatible when
> > > there may be subtle (or less subtle) differences between
> > > integrations.
> > > 
> > > I'm trying to come up with the syntax for enforcing having two
> > > compatibles with your current one as the fallback, but I have yet
> > > to come up with the correct syntax for that that works correctly.
> > > 
> > > Hopefully by the time you get some feedback on the driver side of
> > > this submission I will have a concrete suggestion for what to do
> > > here.  
> > 
> > Thanks Conor for the enlightenment. In the meantime, to fit the
> > requirement I would suggest going for
> > "starfive,jh8100-starlink-pmu", making it JH8100 SOC specific if
> > that makes sense.  
> 
> Okay, you could definitely do that!
> 
> Cheers,
> Conor.
> 

Ok, will use that in v4. Thanks!
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
new file mode 100644
index 000000000000..a9426a7faeae
--- /dev/null
+++ b/Documentation/devicetree/bindings/perf/starfive,starlink-pmu.yaml
@@ -0,0 +1,46 @@ 
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/perf/starfive,starlink-pmu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: StarFive StarLink PMU
+
+maintainers:
+  - Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
+
+description:
+  StarFive's StarLink PMU integrates one or more CPU cores with a shared L3
+  memory system. The PMU support overflow interrupt, up to 16 programmable
+  64bit event counters, and an independent 64bit cycle counter.
+  StarLink PMU is accessed via MMIO.
+
+properties:
+  compatible:
+    const: starfive,starlink-500-pmu
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        l3_pmu: pmu@12900000 {
+            compatible = "starfive,starlink-500-pmu";
+            reg = <0x0 0x12900000 0x0 0x10000>;
+            interrupts = <34>;
+        };
+    };