Re: [PATCH 1/4] dt-bindings: memory: Factor out common properties of LPDDR bindings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 31/08/2022 04:33, Julius Werner wrote:
> The bindings for different LPDDR versions mostly use the same kinds of
> properties, so in order to reduce duplication when we're adding support
> for more versions, this patch creates a new lpddr-props subschema that
> can be referenced by the others to define these common parts. (This will
> consider a few smaller I/O width and density numbers "legal" for LPDDR3
> that are usually not used there, but this should be harmless.)
> 
> This also un-deprecates the manufacturer ID property for LPDDR3 (and
> introduces it to LPDDR2), since it was found that having this
> information available in a separate property can be useful in some
> cases.
> 
> Signed-off-by: Julius Werner <jwerner@xxxxxxxxxxxx>
> ---
>  .../ddr/jedec,lpddr-props.yaml                | 60 +++++++++++++++++++
>  .../memory-controllers/ddr/jedec,lpddr2.yaml  | 40 ++-----------
>  .../memory-controllers/ddr/jedec,lpddr3.yaml  | 39 ++----------
>  3 files changed, 68 insertions(+), 71 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr-props.yaml
> 
> diff --git a/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr-props.yaml b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr-props.yaml
> new file mode 100644
> index 00000000000000..8b31c60ea2435b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr-props.yaml
> @@ -0,0 +1,60 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/memory-controllers/ddr/jedec,lpddr-props.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Common properties for LPDDR types
> +
> +description:
> +  Different LPDDR types generally use the same properties and only differ in the
> +  range of legal values for each. This file defines the common parts that can be
> +  reused for each type.
> +
> +maintainers:
> +  - Krzysztof Kozlowski <krzk@xxxxxxxxxx>
> +
> +properties:
> +  manufacturer-id:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      Manufacturer ID read from Mode Register 5.

Are you sure that register numbers (here 5, 6-7-8 later) are the same
between LPDDR 2-5? The description should match the broadest case and
specific schema can narrow or correct it.

> +    minimum: 0
> +    maximum: 255
> +
> +  revision-id:
> +    $ref: /schemas/types.yaml#/definitions/uint32-array
> +    description:
> +      Revision IDs read from Mode Register 6 and 7. One byte per uint32 cell (i.e. <MR6 MR7>).
> +    minItems: 2

No need for minItems.

> +    maxItems: 2
> +    items:
> +      minimum: 0
> +      maximum: 255
> +
> +  density:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      Density in megabits of SDRAM chip. Decoded from Mode Register 8.
> +    enum:
> +      - 64
> +      - 128
> +      - 256
> +      - 512
> +      - 1024
> +      - 2048
> +      - 4096
> +      - 8192
> +      - 16384
> +      - 32768
> +
> +  io-width:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      IO bus width in bits of SDRAM chip. Decoded from Mode Register 8.
> +    enum:
> +      - 32
> +      - 16
> +      - 8

While moving, order it from lowest to highest.

> +
> +additionalProperties: true
> diff --git a/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr2.yaml b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr2.yaml
> index 9d78f140609b6c..63c47235cb9896 100644
> --- a/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr2.yaml
> +++ b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr2.yaml
> @@ -6,6 +6,9 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
>  title: LPDDR2 SDRAM compliant to JEDEC JESD209-2
>  
> +allOf:
> +  - $ref: "jedec,lpddr-props.yaml#"
> +

This goes just before "properties:"

>  maintainers:
>    - Krzysztof Kozlowski <krzk@xxxxxxxxxx>
>  
> @@ -41,41 +44,6 @@ properties:
>        Property is deprecated, use revision-id instead.
>      deprecated: true
>  
> -  revision-id:
> -    $ref: /schemas/types.yaml#/definitions/uint32-array
> -    description: |
> -      Revision IDs read from Mode Register 6 and 7. One byte per uint32 cell (i.e. <MR6 MR7>).
> -    minItems: 2
> -    maxItems: 2
> -    items:
> -      minimum: 0
> -      maximum: 255
> -
> -  density:
> -    $ref: /schemas/types.yaml#/definitions/uint32
> -    description: |
> -      Density in megabits of SDRAM chip. Obtained from device datasheet.
> -    enum:
> -      - 64
> -      - 128
> -      - 256
> -      - 512
> -      - 1024
> -      - 2048
> -      - 4096
> -      - 8192
> -      - 16384
> -      - 32768
> -
> -  io-width:
> -    $ref: /schemas/types.yaml#/definitions/uint32
> -    description: |
> -      IO bus width in bits of SDRAM chip. Obtained from device datasheet.
> -    enum:
> -      - 32
> -      - 16
> -      - 8
> -
>    tRRD-min-tck:
>      $ref: /schemas/types.yaml#/definitions/uint32
>      maximum: 16
> @@ -168,7 +136,7 @@ required:
>    - density
>    - io-width
>  
> -additionalProperties: false
> +unevaluatedProperties: false
>  
>  examples:
>    - |
> diff --git a/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr3.yaml b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr3.yaml
> index 48908a19473c3f..5969166cdc9e0f 100644
> --- a/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr3.yaml
> +++ b/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr3.yaml
> @@ -6,6 +6,9 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
>  title: LPDDR3 SDRAM compliant to JEDEC JESD209-3
>  
> +allOf:
> +  - $ref: "jedec,lpddr-props.yaml#"
> +

Also move below (before properties:)

>  maintainers:
>    - Krzysztof Kozlowski <krzk@xxxxxxxxxx>
>  
> @@ -20,40 +23,6 @@ properties:
>      const: 1
>      deprecated: true
>  
> -  density:
> -    $ref: /schemas/types.yaml#/definitions/uint32
> -    description: |
> -      Density in megabits of SDRAM chip.
> -    enum:
> -      - 4096
> -      - 8192
> -      - 16384
> -      - 32768

This must stay (so density with enum, but no ref and no description).

> -
> -  io-width:
> -    $ref: /schemas/types.yaml#/definitions/uint32
> -    description: |
> -      IO bus width in bits of SDRAM chip.
> -    enum:
> -      - 32
> -      - 16

The same.

Best regards,
Krzysztof



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux