Loading...
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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/memory-controllers/st,stm32-fmc2-ebi.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: STMicroelectronics Flexible Memory Controller 2 (FMC2) Bindings description: | The FMC2 functional block makes the interface with: synchronous and asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped peripherals) and NAND flash memories. Its main purposes are: - to translate AXI transactions into the appropriate external device protocol - to meet the access time requirements of the external devices All external devices share the addresses, data and control signals with the controller. Each external device is accessed by means of a unique Chip Select. The FMC2 performs only one access at a time to an external device. maintainers: - Christophe Kerello <christophe.kerello@st.com> properties: compatible: const: st,stm32mp1-fmc2-ebi reg: maxItems: 1 clocks: maxItems: 1 resets: maxItems: 1 "#address-cells": const: 2 "#size-cells": const: 1 ranges: description: | Reflects the memory layout with four integer values per bank. Format: <bank-number> 0 <address of the bank> <size> patternProperties: "^.*@[0-4],[a-f0-9]+$": type: object properties: reg: description: Bank number, base address and size of the device. st,fmc2-ebi-cs-transaction-type: description: | Select one of the transactions type supported 0: Asynchronous mode 1 SRAM/FRAM. 1: Asynchronous mode 1 PSRAM. 2: Asynchronous mode A SRAM/FRAM. 3: Asynchronous mode A PSRAM. 4: Asynchronous mode 2 NOR. 5: Asynchronous mode B NOR. 6: Asynchronous mode C NOR. 7: Asynchronous mode D NOR. 8: Synchronous read synchronous write PSRAM. 9: Synchronous read asynchronous write PSRAM. 10: Synchronous read synchronous write NOR. 11: Synchronous read asynchronous write NOR. $ref: /schemas/types.yaml#/definitions/uint32 minimum: 0 maximum: 11 st,fmc2-ebi-cs-cclk-enable: description: Continuous clock enable (first bank must be configured in synchronous mode). The FMC_CLK is generated continuously during asynchronous and synchronous access. By default, the FMC_CLK is only generated during synchronous access. $ref: /schemas/types.yaml#/definitions/flag st,fmc2-ebi-cs-mux-enable: description: Address/Data multiplexed on databus (valid only with NOR and PSRAM transactions type). By default, Address/Data are not multiplexed. $ref: /schemas/types.yaml#/definitions/flag st,fmc2-ebi-cs-buswidth: description: Data bus width $ref: /schemas/types.yaml#/definitions/uint32 enum: [ 8, 16 ] default: 16 st,fmc2-ebi-cs-waitpol-high: description: Wait signal polarity (NWAIT signal active high). By default, NWAIT is active low. $ref: /schemas/types.yaml#/definitions/flag st,fmc2-ebi-cs-waitcfg-enable: description: The NWAIT signal indicates wheither the data from the device are valid or if a wait state must be inserted when accessing the device in synchronous mode. By default, the NWAIT signal is active one data cycle before wait state. $ref: /schemas/types.yaml#/definitions/flag st,fmc2-ebi-cs-wait-enable: description: The NWAIT signal is enabled (its level is taken into account after the programmed latency period to insert wait states if asserted). By default, the NWAIT signal is disabled. $ref: /schemas/types.yaml#/definitions/flag st,fmc2-ebi-cs-asyncwait-enable: description: The NWAIT signal is taken into account during asynchronous transactions. By default, the NWAIT signal is not taken into account during asynchronous transactions. $ref: /schemas/types.yaml#/definitions/flag st,fmc2-ebi-cs-cpsize: description: CRAM page size. The controller splits the burst access when the memory page is reached. By default, no burst split when crossing page boundary. $ref: /schemas/types.yaml#/definitions/uint32 enum: [ 0, 128, 256, 512, 1024 ] default: 0 st,fmc2-ebi-cs-byte-lane-setup-ns: description: This property configures the byte lane setup timing defined in nanoseconds from NBLx low to Chip Select NEx low. st,fmc2-ebi-cs-address-setup-ns: description: This property defines the duration of the address setup phase in nanoseconds used for asynchronous read/write transactions. st,fmc2-ebi-cs-address-hold-ns: description: This property defines the duration of the address hold phase in nanoseconds used for asynchronous multiplexed read/write transactions. st,fmc2-ebi-cs-data-setup-ns: description: This property defines the duration of the data setup phase in nanoseconds used for asynchronous read/write transactions. st,fmc2-ebi-cs-bus-turnaround-ns: description: This property defines the delay in nanoseconds between the end of current read/write transaction and the next transaction. st,fmc2-ebi-cs-data-hold-ns: description: This property defines the duration of the data hold phase in nanoseconds used for asynchronous read/write transactions. st,fmc2-ebi-cs-clk-period-ns: description: This property defines the FMC_CLK output signal period in nanoseconds. st,fmc2-ebi-cs-data-latency-ns: description: This property defines the data latency before reading or writing the first data in nanoseconds. st,fmc2_ebi-cs-write-address-setup-ns: description: This property defines the duration of the address setup phase in nanoseconds used for asynchronous write transactions. st,fmc2-ebi-cs-write-address-hold-ns: description: This property defines the duration of the address hold phase in nanoseconds used for asynchronous multiplexed write transactions. st,fmc2-ebi-cs-write-data-setup-ns: description: This property defines the duration of the data setup phase in nanoseconds used for asynchronous write transactions. st,fmc2-ebi-cs-write-bus-turnaround-ns: description: This property defines the delay between the end of current write transaction and the next transaction in nanoseconds. st,fmc2-ebi-cs-write-data-hold-ns: description: This property defines the duration of the data hold phase in nanoseconds used for asynchronous write transactions. st,fmc2-ebi-cs-max-low-pulse-ns: description: This property defines the maximum chip select low pulse duration in nanoseconds for synchronous transactions. When this timing reaches 0, the controller splits the current access, toggles NE to allow device refresh and restarts a new access. required: - reg required: - "#address-cells" - "#size-cells" - compatible - reg - clocks - ranges additionalProperties: false examples: - | #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/clock/stm32mp1-clks.h> #include <dt-bindings/reset/stm32mp1-resets.h> memory-controller@58002000 { #address-cells = <2>; #size-cells = <1>; compatible = "st,stm32mp1-fmc2-ebi"; reg = <0x58002000 0x1000>; clocks = <&rcc FMC_K>; resets = <&rcc FMC_R>; ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */ <1 0 0x64000000 0x04000000>, /* EBI CS 2 */ <2 0 0x68000000 0x04000000>, /* EBI CS 3 */ <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */ <4 0 0x80000000 0x10000000>; /* NAND */ psram@0,0 { compatible = "mtd-ram"; reg = <0 0x00000000 0x100000>; bank-width = <2>; st,fmc2-ebi-cs-transaction-type = <1>; st,fmc2-ebi-cs-address-setup-ns = <60>; st,fmc2-ebi-cs-data-setup-ns = <30>; st,fmc2-ebi-cs-bus-turnaround-ns = <5>; }; nand-controller@4,0 { #address-cells = <1>; #size-cells = <0>; compatible = "st,stm32mp1-fmc2-nfc"; reg = <4 0x00000000 0x1000>, <4 0x08010000 0x1000>, <4 0x08020000 0x1000>, <4 0x01000000 0x1000>, <4 0x09010000 0x1000>, <4 0x09020000 0x1000>; interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>; dmas = <&mdma1 20 0x2 0x12000a02 0x0 0x0>, <&mdma1 20 0x2 0x12000a08 0x0 0x0>, <&mdma1 21 0x2 0x12000a0a 0x0 0x0>; dma-names = "tx", "rx", "ecc"; nand@0 { reg = <0>; nand-on-flash-bbt; #address-cells = <1>; #size-cells = <1>; }; }; }; ... |