summaryrefslogtreecommitdiffstats
path: root/dts/Bindings/memory-controllers/arm,pl353-smc.yaml
blob: 01c9acf9275df8524c3ba62a274c81da99848c51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/memory-controllers/arm,pl353-smc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ARM PL353 Static Memory Controller (SMC) device-tree bindings

maintainers:
  - Miquel Raynal <miquel.raynal@bootlin.com>
  - Naga Sureshkumar Relli <naga.sureshkumar.relli@xilinx.com>

description:
  The PL353 Static Memory Controller is a bus where you can connect two kinds
  of memory interfaces, which are NAND and memory mapped interfaces (such as
  SRAM or NOR).

# We need a select here so we don't match all nodes with 'arm,primecell'
select:
  properties:
    compatible:
      contains:
        const: arm,pl353-smc-r2p1
  required:
    - compatible

properties:
  $nodename:
    pattern: "^memory-controller@[0-9a-f]+$"

  compatible:
    items:
      - const: arm,pl353-smc-r2p1
      - const: arm,primecell

  "#address-cells":
    const: 2

  "#size-cells":
    const: 1

  reg:
    items:
      - description:
          Configuration registers for the host and sub-controllers.
          The three chip select regions are defined in 'ranges'.

  clocks:
    items:
      - description: clock for the memory device bus
      - description: main clock of the SMC

  clock-names:
    items:
      - const: memclk
      - const: apb_pclk

  ranges:
    minItems: 1
    description: |
      Memory bus areas for interacting with the devices. Reflects
      the memory layout with four integer values following:
      <cs-number> 0 <offset> <size>
    items:
      - description: NAND bank 0
      - description: NOR/SRAM bank 0
      - description: NOR/SRAM bank 1

  interrupts: true

patternProperties:
  "@[0-3],[a-f0-9]+$":
    type: object
    description: |
      The child device node represents the controller connected to the SMC
      bus. The controller can be a NAND controller or a pair of any memory
      mapped controllers such as NOR and SRAM controllers.

    properties:
      compatible:
        description:
          Compatible of memory controller.

      reg:
        items:
          - items:
              - description: |
                  Chip-select ID, as in the parent range property.
                minimum: 0
                maximum: 2
              - description: |
                  Offset of the memory region requested by the device.
              - description: |
                  Length of the memory region requested by the device.

    required:
      - compatible
      - reg

required:
  - compatible
  - reg
  - clock-names
  - clocks
  - "#address-cells"
  - "#size-cells"
  - ranges

additionalProperties: false

examples:
  - |
    smcc: memory-controller@e000e000 {
      compatible = "arm,pl353-smc-r2p1", "arm,primecell";
      reg = <0xe000e000 0x0001000>;
      clock-names = "memclk", "apb_pclk";
      clocks = <&clkc 11>, <&clkc 44>;
      ranges = <0x0 0x0 0xe1000000 0x1000000 /* Nand CS region */
                0x1 0x0 0xe2000000 0x2000000 /* SRAM/NOR CS0 region */
                0x2 0x0 0xe4000000 0x2000000>; /* SRAM/NOR CS1 region */
      #address-cells = <2>;
      #size-cells = <1>;

      nfc0: nand-controller@0,0 {
        compatible = "arm,pl353-nand-r2p1";
        reg = <0 0 0x1000000>;
        #address-cells = <1>;
        #size-cells = <0>;
      };
    };