Skip to content

Commit

Permalink
dt-bindings: riscv: Limit cpus schema to only check RiscV 'cpu' nodes
Browse files Browse the repository at this point in the history
Matching on the 'cpus' node was a bad choice because the schema is
incorrectly applied to non-RiscV cpus nodes. As we now have a common cpus
schema which checks the general structure, it is also redundant to do so
in the Risc-V CPU schema.

The downside is one could conceivably mix different architecture's cpu
nodes or have typos in the compatible string. The latter problem pretty
much exists for every schema.

Acked-by: Paul Walmsley <[email protected]>
Signed-off-by: Rob Herring <[email protected]>
  • Loading branch information
robherring committed Jul 21, 2019
1 parent 15ffef1 commit 7d9ef7f
Showing 1 changed file with 61 additions and 82 deletions.
143 changes: 61 additions & 82 deletions Documentation/devicetree/bindings/riscv/cpus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,97 +10,76 @@ maintainers:
- Paul Walmsley <[email protected]>
- Palmer Dabbelt <[email protected]>

allOf:
- $ref: /schemas/cpus.yaml#

properties:
$nodename:
const: cpus
description: Container of cpu nodes

'#address-cells':
const: 1
description: |
A single unsigned 32-bit integer uniquely identifies each RISC-V
hart in a system. (See the "reg" node under the "cpu" node,
below).
'#size-cells':
const: 0
compatible:
items:
- enum:
- sifive,rocket0
- sifive,e5
- sifive,e51
- sifive,u54-mc
- sifive,u54
- sifive,u5
- const: riscv
description:
Identifies that the hart uses the RISC-V instruction set
and identifies the type of the hart.

mmu-type:
allOf:
- $ref: "/schemas/types.yaml#/definitions/string"
- enum:
- riscv,sv32
- riscv,sv39
- riscv,sv48
description:
Identifies the MMU address translation mode used on this
hart. These values originate from the RISC-V Privileged
Specification document, available from
https://riscv.org/specifications/

riscv,isa:
allOf:
- $ref: "/schemas/types.yaml#/definitions/string"
- enum:
- rv64imac
- rv64imafdc
description:
Identifies the specific RISC-V instruction set architecture
supported by the hart. These are documented in the RISC-V
User-Level ISA document, available from
https://riscv.org/specifications/

timebase-frequency:
type: integer
minimum: 1
description:
Specifies the clock frequency of the system timer in Hz.
This value is common to all harts on a single system image.

interrupt-controller:
type: object
description: Describes the CPU's local interrupt controller

patternProperties:
'^cpu@[0-9a-f]+$':
properties:
compatible:
type: array
items:
- enum:
- sifive,rocket0
- sifive,e5
- sifive,e51
- sifive,u54-mc
- sifive,u54
- sifive,u5
- const: riscv
description:
Identifies that the hart uses the RISC-V instruction set
and identifies the type of the hart.

mmu-type:
allOf:
- $ref: "/schemas/types.yaml#/definitions/string"
- enum:
- riscv,sv32
- riscv,sv39
- riscv,sv48
description:
Identifies the MMU address translation mode used on this
hart. These values originate from the RISC-V Privileged
Specification document, available from
https://riscv.org/specifications/

riscv,isa:
allOf:
- $ref: "/schemas/types.yaml#/definitions/string"
- enum:
- rv64imac
- rv64imafdc
description:
Identifies the specific RISC-V instruction set architecture
supported by the hart. These are documented in the RISC-V
User-Level ISA document, available from
https://riscv.org/specifications/
'#interrupt-cells':
const: 1

timebase-frequency:
type: integer
minimum: 1
description:
Specifies the clock frequency of the system timer in Hz.
This value is common to all harts on a single system image.

interrupt-controller:
type: object
description: Describes the CPU's local interrupt controller

properties:
'#interrupt-cells':
const: 1

compatible:
const: riscv,cpu-intc

interrupt-controller: true
compatible:
const: riscv,cpu-intc

required:
- '#interrupt-cells'
- compatible
- interrupt-controller
interrupt-controller: true

required:
- riscv,isa
- timebase-frequency
- '#interrupt-cells'
- compatible
- interrupt-controller

required:
- riscv,isa
- timebase-frequency
- interrupt-controller

examples:
- |
// Example 1: SiFive Freedom U540G Development Kit
Expand Down

0 comments on commit 7d9ef7f

Please sign in to comment.