xref: /linux/Documentation/devicetree/bindings/memory-controllers/st,stm32mp25-omm.yaml (revision 297d9111e9fcf47dd1dcc6f79bba915f35378d01)
1*4a98ec83SPatrice Chotard# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*4a98ec83SPatrice Chotard%YAML 1.2
3*4a98ec83SPatrice Chotard---
4*4a98ec83SPatrice Chotard$id: http://devicetree.org/schemas/memory-controllers/st,stm32mp25-omm.yaml#
5*4a98ec83SPatrice Chotard$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4a98ec83SPatrice Chotard
7*4a98ec83SPatrice Chotardtitle: STM32 Octo Memory Manager (OMM)
8*4a98ec83SPatrice Chotard
9*4a98ec83SPatrice Chotardmaintainers:
10*4a98ec83SPatrice Chotard  - Patrice Chotard <patrice.chotard@foss.st.com>
11*4a98ec83SPatrice Chotard
12*4a98ec83SPatrice Chotarddescription: |
13*4a98ec83SPatrice Chotard  The STM32 Octo Memory Manager is a low-level interface that enables an
14*4a98ec83SPatrice Chotard  efficient OCTOSPI pin assignment with a full I/O matrix (before alternate
15*4a98ec83SPatrice Chotard  function map) and multiplex of single/dual/quad/octal SPI interfaces over
16*4a98ec83SPatrice Chotard  the same bus. It Supports up to:
17*4a98ec83SPatrice Chotard    - Two single/dual/quad/octal SPI interfaces
18*4a98ec83SPatrice Chotard    - Two ports for pin assignment
19*4a98ec83SPatrice Chotard
20*4a98ec83SPatrice Chotardproperties:
21*4a98ec83SPatrice Chotard  compatible:
22*4a98ec83SPatrice Chotard    const: st,stm32mp25-omm
23*4a98ec83SPatrice Chotard
24*4a98ec83SPatrice Chotard  "#address-cells":
25*4a98ec83SPatrice Chotard    const: 2
26*4a98ec83SPatrice Chotard
27*4a98ec83SPatrice Chotard  "#size-cells":
28*4a98ec83SPatrice Chotard    const: 1
29*4a98ec83SPatrice Chotard
30*4a98ec83SPatrice Chotard  ranges:
31*4a98ec83SPatrice Chotard    description: |
32*4a98ec83SPatrice Chotard      Reflects the memory layout per OSPI instance.
33*4a98ec83SPatrice Chotard      Format:
34*4a98ec83SPatrice Chotard      <chip-select> 0 <registers base address> <size>
35*4a98ec83SPatrice Chotard    minItems: 2
36*4a98ec83SPatrice Chotard    maxItems: 2
37*4a98ec83SPatrice Chotard
38*4a98ec83SPatrice Chotard  reg:
39*4a98ec83SPatrice Chotard    items:
40*4a98ec83SPatrice Chotard      - description: OMM registers
41*4a98ec83SPatrice Chotard      - description: OMM memory map area
42*4a98ec83SPatrice Chotard
43*4a98ec83SPatrice Chotard  reg-names:
44*4a98ec83SPatrice Chotard    items:
45*4a98ec83SPatrice Chotard      - const: regs
46*4a98ec83SPatrice Chotard      - const: memory_map
47*4a98ec83SPatrice Chotard
48*4a98ec83SPatrice Chotard  memory-region:
49*4a98ec83SPatrice Chotard    description:
50*4a98ec83SPatrice Chotard      Memory region shared between the 2 OCTOSPI instance.
51*4a98ec83SPatrice Chotard      One or two phandle to a node describing a memory mapped region
52*4a98ec83SPatrice Chotard      depending of child number.
53*4a98ec83SPatrice Chotard    minItems: 1
54*4a98ec83SPatrice Chotard    maxItems: 2
55*4a98ec83SPatrice Chotard
56*4a98ec83SPatrice Chotard  memory-region-names:
57*4a98ec83SPatrice Chotard    description:
58*4a98ec83SPatrice Chotard      Identify to which OSPI instance the memory region belongs to.
59*4a98ec83SPatrice Chotard    items:
60*4a98ec83SPatrice Chotard      enum: [ospi1, ospi2]
61*4a98ec83SPatrice Chotard    minItems: 1
62*4a98ec83SPatrice Chotard    maxItems: 2
63*4a98ec83SPatrice Chotard
64*4a98ec83SPatrice Chotard  clocks:
65*4a98ec83SPatrice Chotard    maxItems: 3
66*4a98ec83SPatrice Chotard
67*4a98ec83SPatrice Chotard  clock-names:
68*4a98ec83SPatrice Chotard    items:
69*4a98ec83SPatrice Chotard      - const: omm
70*4a98ec83SPatrice Chotard      - const: ospi1
71*4a98ec83SPatrice Chotard      - const: ospi2
72*4a98ec83SPatrice Chotard
73*4a98ec83SPatrice Chotard  resets:
74*4a98ec83SPatrice Chotard    maxItems: 3
75*4a98ec83SPatrice Chotard
76*4a98ec83SPatrice Chotard  reset-names:
77*4a98ec83SPatrice Chotard    items:
78*4a98ec83SPatrice Chotard      - const: omm
79*4a98ec83SPatrice Chotard      - const: ospi1
80*4a98ec83SPatrice Chotard      - const: ospi2
81*4a98ec83SPatrice Chotard
82*4a98ec83SPatrice Chotard  access-controllers:
83*4a98ec83SPatrice Chotard    maxItems: 1
84*4a98ec83SPatrice Chotard
85*4a98ec83SPatrice Chotard  power-domains:
86*4a98ec83SPatrice Chotard    maxItems: 1
87*4a98ec83SPatrice Chotard
88*4a98ec83SPatrice Chotard  st,syscfg-amcr:
89*4a98ec83SPatrice Chotard    $ref: /schemas/types.yaml#/definitions/phandle-array
90*4a98ec83SPatrice Chotard    description: |
91*4a98ec83SPatrice Chotard      The Address Mapping Control Register (AMCR) is used to split the 256MB
92*4a98ec83SPatrice Chotard      memory map area shared between the 2 OSPI instance. The Octo Memory
93*4a98ec83SPatrice Chotard      Manager sets the AMCR depending of the memory-region configuration.
94*4a98ec83SPatrice Chotard      The memory split bitmask description is:
95*4a98ec83SPatrice Chotard        - 000: OCTOSPI1 (256 Mbytes), OCTOSPI2 unmapped
96*4a98ec83SPatrice Chotard        - 001: OCTOSPI1 (192 Mbytes), OCTOSPI2 (64 Mbytes)
97*4a98ec83SPatrice Chotard        - 010: OCTOSPI1 (128 Mbytes), OCTOSPI2 (128 Mbytes)
98*4a98ec83SPatrice Chotard        - 011: OCTOSPI1 (64 Mbytes), OCTOSPI2 (192 Mbytes)
99*4a98ec83SPatrice Chotard        - 1xx: OCTOSPI1 unmapped, OCTOSPI2 (256 Mbytes)
100*4a98ec83SPatrice Chotard    items:
101*4a98ec83SPatrice Chotard      - items:
102*4a98ec83SPatrice Chotard          - description: phandle to syscfg
103*4a98ec83SPatrice Chotard          - description: register offset within syscfg
104*4a98ec83SPatrice Chotard          - description: register bitmask for memory split
105*4a98ec83SPatrice Chotard
106*4a98ec83SPatrice Chotard  st,omm-req2ack-ns:
107*4a98ec83SPatrice Chotard    description:
108*4a98ec83SPatrice Chotard      In multiplexed mode (MUXEN = 1), this field defines the time in
109*4a98ec83SPatrice Chotard      nanoseconds between two transactions.
110*4a98ec83SPatrice Chotard    default: 0
111*4a98ec83SPatrice Chotard
112*4a98ec83SPatrice Chotard  st,omm-cssel-ovr:
113*4a98ec83SPatrice Chotard    $ref: /schemas/types.yaml#/definitions/uint32
114*4a98ec83SPatrice Chotard    description: |
115*4a98ec83SPatrice Chotard      Configure the chip select selector override for the 2 OCTOSPIs.
116*4a98ec83SPatrice Chotard      - 0: OCTOSPI1 chip select send to NCS1 OCTOSPI2 chip select send to NCS1
117*4a98ec83SPatrice Chotard      - 1: OCTOSPI1 chip select send to NCS2 OCTOSPI2 chip select send to NCS1
118*4a98ec83SPatrice Chotard      - 2: OCTOSPI1 chip select send to NCS1 OCTOSPI2 chip select send to NCS2
119*4a98ec83SPatrice Chotard      - 3: OCTOSPI1 chip select send to NCS2 OCTOSPI2 chip select send to NCS2
120*4a98ec83SPatrice Chotard    minimum: 0
121*4a98ec83SPatrice Chotard    maximum: 3
122*4a98ec83SPatrice Chotard    default: 0
123*4a98ec83SPatrice Chotard
124*4a98ec83SPatrice Chotard  st,omm-mux:
125*4a98ec83SPatrice Chotard    $ref: /schemas/types.yaml#/definitions/uint32
126*4a98ec83SPatrice Chotard    description: |
127*4a98ec83SPatrice Chotard      Configure the muxing between the 2 OCTOSPIs busses and the 2 output ports.
128*4a98ec83SPatrice Chotard      - 0: direct mode
129*4a98ec83SPatrice Chotard      - 1: mux OCTOSPI1 and OCTOSPI2 to port 1
130*4a98ec83SPatrice Chotard      - 2: swapped mode
131*4a98ec83SPatrice Chotard      - 3: mux OCTOSPI1 and OCTOSPI2 to port 2
132*4a98ec83SPatrice Chotard    minimum: 0
133*4a98ec83SPatrice Chotard    maximum: 3
134*4a98ec83SPatrice Chotard    default: 0
135*4a98ec83SPatrice Chotard
136*4a98ec83SPatrice ChotardpatternProperties:
137*4a98ec83SPatrice Chotard  ^spi@[0-9]:
138*4a98ec83SPatrice Chotard    type: object
139*4a98ec83SPatrice Chotard    $ref: /schemas/spi/st,stm32mp25-ospi.yaml#
140*4a98ec83SPatrice Chotard    description: Required spi child node
141*4a98ec83SPatrice Chotard
142*4a98ec83SPatrice Chotardrequired:
143*4a98ec83SPatrice Chotard  - compatible
144*4a98ec83SPatrice Chotard  - reg
145*4a98ec83SPatrice Chotard  - "#address-cells"
146*4a98ec83SPatrice Chotard  - "#size-cells"
147*4a98ec83SPatrice Chotard  - clocks
148*4a98ec83SPatrice Chotard  - clock-names
149*4a98ec83SPatrice Chotard  - resets
150*4a98ec83SPatrice Chotard  - reset-names
151*4a98ec83SPatrice Chotard  - st,syscfg-amcr
152*4a98ec83SPatrice Chotard  - ranges
153*4a98ec83SPatrice Chotard
154*4a98ec83SPatrice ChotardadditionalProperties: false
155*4a98ec83SPatrice Chotard
156*4a98ec83SPatrice Chotardexamples:
157*4a98ec83SPatrice Chotard  - |
158*4a98ec83SPatrice Chotard    #include <dt-bindings/clock/st,stm32mp25-rcc.h>
159*4a98ec83SPatrice Chotard    #include <dt-bindings/interrupt-controller/arm-gic.h>
160*4a98ec83SPatrice Chotard    #include <dt-bindings/reset/st,stm32mp25-rcc.h>
161*4a98ec83SPatrice Chotard    ommanager@40500000 {
162*4a98ec83SPatrice Chotard      compatible = "st,stm32mp25-omm";
163*4a98ec83SPatrice Chotard      reg = <0x40500000 0x400>, <0x60000000 0x10000000>;
164*4a98ec83SPatrice Chotard      reg-names = "regs", "memory_map";
165*4a98ec83SPatrice Chotard      ranges = <0 0 0x40430000 0x400>,
166*4a98ec83SPatrice Chotard               <1 0 0x40440000 0x400>;
167*4a98ec83SPatrice Chotard      memory-region = <&mm_ospi1>, <&mm_ospi2>;
168*4a98ec83SPatrice Chotard      memory-region-names = "ospi1", "ospi2";
169*4a98ec83SPatrice Chotard      pinctrl-0 = <&ospi_port1_clk_pins_a
170*4a98ec83SPatrice Chotard                   &ospi_port1_io03_pins_a
171*4a98ec83SPatrice Chotard                   &ospi_port1_cs0_pins_a>;
172*4a98ec83SPatrice Chotard      pinctrl-1 = <&ospi_port1_clk_sleep_pins_a
173*4a98ec83SPatrice Chotard                   &ospi_port1_io03_sleep_pins_a
174*4a98ec83SPatrice Chotard                   &ospi_port1_cs0_sleep_pins_a>;
175*4a98ec83SPatrice Chotard      pinctrl-names = "default", "sleep";
176*4a98ec83SPatrice Chotard      clocks = <&rcc CK_BUS_OSPIIOM>,
177*4a98ec83SPatrice Chotard               <&scmi_clk CK_SCMI_OSPI1>,
178*4a98ec83SPatrice Chotard               <&scmi_clk CK_SCMI_OSPI2>;
179*4a98ec83SPatrice Chotard      clock-names = "omm", "ospi1", "ospi2";
180*4a98ec83SPatrice Chotard      resets = <&rcc OSPIIOM_R>,
181*4a98ec83SPatrice Chotard               <&scmi_reset RST_SCMI_OSPI1>,
182*4a98ec83SPatrice Chotard               <&scmi_reset RST_SCMI_OSPI2>;
183*4a98ec83SPatrice Chotard      reset-names = "omm", "ospi1", "ospi2";
184*4a98ec83SPatrice Chotard      access-controllers = <&rifsc 111>;
185*4a98ec83SPatrice Chotard      power-domains = <&CLUSTER_PD>;
186*4a98ec83SPatrice Chotard      #address-cells = <2>;
187*4a98ec83SPatrice Chotard      #size-cells = <1>;
188*4a98ec83SPatrice Chotard      st,syscfg-amcr = <&syscfg 0x2c00 0x7>;
189*4a98ec83SPatrice Chotard      st,omm-req2ack-ns = <0>;
190*4a98ec83SPatrice Chotard      st,omm-mux = <0>;
191*4a98ec83SPatrice Chotard      st,omm-cssel-ovr = <0>;
192*4a98ec83SPatrice Chotard
193*4a98ec83SPatrice Chotard      spi@0 {
194*4a98ec83SPatrice Chotard        compatible = "st,stm32mp25-ospi";
195*4a98ec83SPatrice Chotard        reg = <0 0 0x400>;
196*4a98ec83SPatrice Chotard        memory-region = <&mm_ospi1>;
197*4a98ec83SPatrice Chotard        interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
198*4a98ec83SPatrice Chotard        dmas = <&hpdma 2 0x62 0x00003121 0x0>,
199*4a98ec83SPatrice Chotard               <&hpdma 2 0x42 0x00003112 0x0>;
200*4a98ec83SPatrice Chotard        dma-names = "tx", "rx";
201*4a98ec83SPatrice Chotard        clocks = <&scmi_clk CK_SCMI_OSPI1>;
202*4a98ec83SPatrice Chotard        resets = <&scmi_reset RST_SCMI_OSPI1>, <&scmi_reset RST_SCMI_OSPI1DLL>;
203*4a98ec83SPatrice Chotard        access-controllers = <&rifsc 74>;
204*4a98ec83SPatrice Chotard        power-domains = <&CLUSTER_PD>;
205*4a98ec83SPatrice Chotard        #address-cells = <1>;
206*4a98ec83SPatrice Chotard        #size-cells = <0>;
207*4a98ec83SPatrice Chotard        st,syscfg-dlyb = <&syscfg 0x1000>;
208*4a98ec83SPatrice Chotard      };
209*4a98ec83SPatrice Chotard
210*4a98ec83SPatrice Chotard      spi@1 {
211*4a98ec83SPatrice Chotard        compatible = "st,stm32mp25-ospi";
212*4a98ec83SPatrice Chotard        reg = <1 0 0x400>;
213*4a98ec83SPatrice Chotard        memory-region = <&mm_ospi1>;
214*4a98ec83SPatrice Chotard        interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
215*4a98ec83SPatrice Chotard        dmas = <&hpdma 3 0x62 0x00003121 0x0>,
216*4a98ec83SPatrice Chotard               <&hpdma 3 0x42 0x00003112 0x0>;
217*4a98ec83SPatrice Chotard        dma-names = "tx", "rx";
218*4a98ec83SPatrice Chotard        clocks = <&scmi_clk CK_KER_OSPI2>;
219*4a98ec83SPatrice Chotard        resets = <&scmi_reset RST_SCMI_OSPI2>, <&scmi_reset RST_SCMI_OSPI1DLL>;
220*4a98ec83SPatrice Chotard        access-controllers = <&rifsc 75>;
221*4a98ec83SPatrice Chotard        power-domains = <&CLUSTER_PD>;
222*4a98ec83SPatrice Chotard        #address-cells = <1>;
223*4a98ec83SPatrice Chotard        #size-cells = <0>;
224*4a98ec83SPatrice Chotard        st,syscfg-dlyb = <&syscfg 0x1000>;
225*4a98ec83SPatrice Chotard      };
226*4a98ec83SPatrice Chotard    };
227