linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC 0/2] Introduce ddr[3-4]-channel binding
@ 2025-06-26 19:48 Clément Le Goffic
  2025-06-26 19:48 ` [PATCH RFC 1/2] dt-bindings: memory: add jedec,ddr[3-4]-channel binding Clément Le Goffic
  2025-06-26 19:48 ` [PATCH RFC 2/2] dt-bindings: perf: stm32: introduce DDRPERFM dt-bindings Clément Le Goffic
  0 siblings, 2 replies; 6+ messages in thread
From: Clément Le Goffic @ 2025-06-26 19:48 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Will Deacon,
	Mark Rutland, Krzysztof Kozlowski, Maxime Coquelin,
	Alexandre Torgue
  Cc: linux-kernel, devicetree, linux-arm-kernel, linux-perf-users,
	linux-stm32, Clément Le Goffic

This series aims to request comments for the ddr-channel binding as I'll
need them for the stm32-ddr-pmu driver.
The V1 of the driver and a start of discussion can be found here:
https://lore.kernel.org/r/20250623-ddrperfm-upstream-v1-0-7dffff168090@foss.st.com

The first patch contains a base of binding, which I find sufficient for
my needs but perhaps you'll have suggestion for addition or rework as this is
mainly inspirate from lpddrX-channel binding.
As we can find the same property in the two channel binding maybe this can be
shared properties.

The second patch, that contains stm32-ddr-pmu binding, aims to provide an
example of usage of this ddr-channel bindings.
Note the "memory-channel" property which I mainly want to discuss about
and gather some feedbacks.

For your knowledge, the stm32-ddr-pmu driver (DDRPERFM peripheral) needs
the dram type information for its internal working with ddr events.

Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
---
Clément Le Goffic (2):
      dt-bindings: memory: add jedec,ddr[3-4]-channel binding
      dt-bindings: perf: stm32: introduce DDRPERFM dt-bindings

 .../memory-controllers/ddr/jedec,ddr-channel.yaml  | 53 +++++++++++++
 .../devicetree/bindings/perf/st,stm32-ddr-pmu.yaml | 90 ++++++++++++++++++++++
 2 files changed, 143 insertions(+)
---
base-commit: e34a79b96ab9d49ed8b605fee11099cf3efbb428
change-id: 20250626-ddr-bindings-dbe23bcfe299

Best regards,
-- 
Clément Le Goffic <clement.legoffic@foss.st.com>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH RFC 1/2] dt-bindings: memory: add jedec,ddr[3-4]-channel binding
  2025-06-26 19:48 [PATCH RFC 0/2] Introduce ddr[3-4]-channel binding Clément Le Goffic
@ 2025-06-26 19:48 ` Clément Le Goffic
  2025-07-09 18:27   ` Krzysztof Kozlowski
  2025-06-26 19:48 ` [PATCH RFC 2/2] dt-bindings: perf: stm32: introduce DDRPERFM dt-bindings Clément Le Goffic
  1 sibling, 1 reply; 6+ messages in thread
From: Clément Le Goffic @ 2025-06-26 19:48 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Will Deacon,
	Mark Rutland, Krzysztof Kozlowski, Maxime Coquelin,
	Alexandre Torgue
  Cc: linux-kernel, devicetree, linux-arm-kernel, linux-perf-users,
	linux-stm32, Clément Le Goffic

Introduce as per jdec,lpddrX-channel binding, jdec,ddr[3-4]-channel
binding.

Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
---
 .../memory-controllers/ddr/jedec,ddr-channel.yaml  | 53 ++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,ddr-channel.yaml b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,ddr-channel.yaml
new file mode 100644
index 000000000000..5271b41279e2
--- /dev/null
+++ b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,ddr-channel.yaml
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/ddr/jedec,ddr-channel.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: DDR channel with chip/rank topology description
+
+description:
+  A DDR channel is a logical grouping of memory chips that are connected
+  to a host system. The main purpose of this node is to describe the
+  overall DDR topology of the system, including the amount of individual
+  DDR chips.
+
+maintainers:
+  - Clément Le Goffic <clement.legoffic@foss.st.com>
+
+properties:
+  compatible:
+    enum:
+      - jedec,ddr3-channel
+      - jedec,ddr4-channel
+
+  io-width:
+    description:
+      The number of DQ pins in the channel. If this number is different
+      from (a multiple of) the io-width of the DDR chip, that means that
+      multiple instances of that type of chip are wired in parallel on this
+      channel (with the channel's DQ pins split up between the different
+      chips, and the CA, CS, etc. pins of the different chips all shorted
+      together).  This means that the total physical memory controlled by a
+      channel is equal to the sum of the densities of each rank on the
+      connected DDR chip, times the io-width of the channel divided by
+      the io-width of the DDR chip.
+    enum:
+      - 8
+      - 16
+      - 32
+      - 64
+      - 128
+
+required:
+      - compatible
+      - io-width
+
+additionalProperties: false
+
+examples:
+  - |
+    ddr_channel: ddr3-channel@0 {
+        compatible = "jedec,ddr3-channel";
+        io-width = <16>;
+    };

-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH RFC 2/2] dt-bindings: perf: stm32: introduce DDRPERFM dt-bindings
  2025-06-26 19:48 [PATCH RFC 0/2] Introduce ddr[3-4]-channel binding Clément Le Goffic
  2025-06-26 19:48 ` [PATCH RFC 1/2] dt-bindings: memory: add jedec,ddr[3-4]-channel binding Clément Le Goffic
@ 2025-06-26 19:48 ` Clément Le Goffic
  2025-06-26 21:19   ` Rob Herring (Arm)
  1 sibling, 1 reply; 6+ messages in thread
From: Clément Le Goffic @ 2025-06-26 19:48 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Will Deacon,
	Mark Rutland, Krzysztof Kozlowski, Maxime Coquelin,
	Alexandre Torgue
  Cc: linux-kernel, devicetree, linux-arm-kernel, linux-perf-users,
	linux-stm32, Clément Le Goffic

DDRPERFM is the DDR Performance Monitor embedded in STM32MPU SoC.
It allows to monitor DDR events that come from the DDR Controller
such as read or write events.

Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
---
 .../devicetree/bindings/perf/st,stm32-ddr-pmu.yaml | 90 ++++++++++++++++++++++
 1 file changed, 90 insertions(+)

diff --git a/Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.yaml b/Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.yaml
new file mode 100644
index 000000000000..98775f32475a
--- /dev/null
+++ b/Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.yaml
@@ -0,0 +1,90 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/perf/st,stm32-ddr-pmu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+maintainers:
+  - Clément Le Goffic <clement.legoffic@foss.st.com>
+
+title: STMicroelectronics STM32 DDR Performance Monitor (DDRPERFM)
+
+properties:
+  compatible:
+    oneOf:
+      enum:
+        - st,stm32mp131-ddr-pmu
+        - st,stm32mp151-ddr-pmu
+      const: st,stm32mp251-ddr-pmu
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  access-controllers:
+    minItems: 1
+    maxItems: 2
+
+  memory-channel:
+    description: |
+      The memory channel this DDRPERFM is attached to.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - st,stm32mp131-ddr-pmu
+              - st,stm32mp151-ddr-pmu
+    then:
+      required:
+        - clocks
+        - resets
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: st,stm32mp251-ddr-pmu
+    then:
+      required:
+        - access-controllers
+        - st,dram-type
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/stm32mp1-clks.h>
+    #include <dt-bindings/reset/stm32mp1-resets.h>
+
+    perf@5a007000 {
+        compatible = "st,stm32mp151-ddr-pmu";
+        reg = <0x5a007000 0x400>;
+        clocks = <&rcc DDRPERFM>;
+        resets = <&rcc DDRPERFM_R>;
+    };
+
+  - |
+    ddr_channel: ddr4-channel@0 {
+        compatible = "jedec,ddr4-channel";
+        io-width = <32>;
+    };
+
+    perf@48041000 {
+      compatible = "st,stm32mp251-ddr-pmu";
+      reg = <0x48041000 0x400>;
+      access-controllers = <&rcc 104>;
+      memory-channel = <&ddr_channel>;
+    };

-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC 2/2] dt-bindings: perf: stm32: introduce DDRPERFM dt-bindings
  2025-06-26 19:48 ` [PATCH RFC 2/2] dt-bindings: perf: stm32: introduce DDRPERFM dt-bindings Clément Le Goffic
@ 2025-06-26 21:19   ` Rob Herring (Arm)
  0 siblings, 0 replies; 6+ messages in thread
From: Rob Herring (Arm) @ 2025-06-26 21:19 UTC (permalink / raw)
  To: Clément Le Goffic
  Cc: linux-arm-kernel, Mark Rutland, Maxime Coquelin, Conor Dooley,
	Krzysztof Kozlowski, Alexandre Torgue, linux-perf-users,
	devicetree, Will Deacon, Krzysztof Kozlowski, linux-stm32,
	linux-kernel


On Thu, 26 Jun 2025 21:48:35 +0200, Clément Le Goffic wrote:
> DDRPERFM is the DDR Performance Monitor embedded in STM32MPU SoC.
> It allows to monitor DDR events that come from the DDR Controller
> such as read or write events.
> 
> Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
> ---
>  .../devicetree/bindings/perf/st,stm32-ddr-pmu.yaml | 90 ++++++++++++++++++++++
>  1 file changed, 90 insertions(+)
> 

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.yaml: ignoring, error in schema: properties: compatible: oneOf
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.yaml: properties:compatible:oneOf: {'enum': ['st,stm32mp131-ddr-pmu', 'st,stm32mp151-ddr-pmu'], 'const': 'st,stm32mp251-ddr-pmu'} is not of type 'array'
	from schema $id: http://json-schema.org/draft-07/schema#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.yaml: properties:compatible:oneOf: {'enum': ['st,stm32mp131-ddr-pmu', 'st,stm32mp151-ddr-pmu'], 'const': 'st,stm32mp251-ddr-pmu'} should not be valid under {'items': {'propertyNames': {'const': 'const'}, 'required': ['const']}}
	hint: Use 'enum' rather than 'oneOf' + 'const' entries
	from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.yaml: properties:compatible:oneOf: {'enum': ['st,stm32mp131-ddr-pmu', 'st,stm32mp151-ddr-pmu'], 'const': 'st,stm32mp251-ddr-pmu'} is not of type 'array'
	from schema $id: http://devicetree.org/meta-schemas/string-array.yaml#
Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.example.dts:44.37-47.11: Warning (unit_address_vs_reg): /example-1/ddr4-channel@0: node has a unit name, but no reg or ranges property
Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.example.dtb: /example-0/perf@5a007000: failed to match any schema with compatible: ['st,stm32mp151-ddr-pmu']
Documentation/devicetree/bindings/perf/st,stm32-ddr-pmu.example.dtb: /example-1/perf@48041000: failed to match any schema with compatible: ['st,stm32mp251-ddr-pmu']

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250626-ddr-bindings-v1-2-cae30933c54c@foss.st.com

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC 1/2] dt-bindings: memory: add jedec,ddr[3-4]-channel binding
  2025-06-26 19:48 ` [PATCH RFC 1/2] dt-bindings: memory: add jedec,ddr[3-4]-channel binding Clément Le Goffic
@ 2025-07-09 18:27   ` Krzysztof Kozlowski
  2025-07-10  7:26     ` Clement LE GOFFIC
  0 siblings, 1 reply; 6+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-09 18:27 UTC (permalink / raw)
  To: Clément Le Goffic, Rob Herring, Conor Dooley, Will Deacon,
	Mark Rutland, Krzysztof Kozlowski, Maxime Coquelin,
	Alexandre Torgue
  Cc: linux-kernel, devicetree, linux-arm-kernel, linux-perf-users,
	linux-stm32

On 26/06/2025 21:48, Clément Le Goffic wrote:
> Introduce as per jdec,lpddrX-channel binding, jdec,ddr[3-4]-channel

s/jdec/jedec/

> binding.
> 
> Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
> ---


> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    ddr_channel: ddr3-channel@0 {
> +        compatible = "jedec,ddr3-channel";
> +        io-width = <16>;

Missing reg... or not? What was your intention


> +    };
> 


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH RFC 1/2] dt-bindings: memory: add jedec,ddr[3-4]-channel binding
  2025-07-09 18:27   ` Krzysztof Kozlowski
@ 2025-07-10  7:26     ` Clement LE GOFFIC
  0 siblings, 0 replies; 6+ messages in thread
From: Clement LE GOFFIC @ 2025-07-10  7:26 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Conor Dooley, Will Deacon,
	Mark Rutland, Krzysztof Kozlowski, Maxime Coquelin,
	Alexandre Torgue
  Cc: linux-kernel, devicetree, linux-arm-kernel, linux-perf-users,
	linux-stm32

Hi Krzysztof,

On 7/9/25 20:27, Krzysztof Kozlowski wrote:
> On 26/06/2025 21:48, Clément Le Goffic wrote:
>> Introduce as per jdec,lpddrX-channel binding, jdec,ddr[3-4]-channel
> 
> s/jdec/jedec/

Right thanks

> 
>> binding.
>>
>> Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
>> ---
> 
> 
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    ddr_channel: ddr3-channel@0 {
>> +        compatible = "jedec,ddr3-channel";
>> +        io-width = <16>;
> 
> Missing reg... or not? What was your intention

Indeed no reg.
I'll drop the "@0" for the next version.

> 
> 
>> +    };
>>
> 
> 
> Best regards,
> Krzysztof


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-07-10  7:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-26 19:48 [PATCH RFC 0/2] Introduce ddr[3-4]-channel binding Clément Le Goffic
2025-06-26 19:48 ` [PATCH RFC 1/2] dt-bindings: memory: add jedec,ddr[3-4]-channel binding Clément Le Goffic
2025-07-09 18:27   ` Krzysztof Kozlowski
2025-07-10  7:26     ` Clement LE GOFFIC
2025-06-26 19:48 ` [PATCH RFC 2/2] dt-bindings: perf: stm32: introduce DDRPERFM dt-bindings Clément Le Goffic
2025-06-26 21:19   ` Rob Herring (Arm)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).