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