xref: /linux/Documentation/devicetree/bindings/memory-controllers/st,stm32-fmc2-ebi.yaml (revision a11a5debdf4b5b5c24e88a378b53b42cc4fe1bb9)
11ab2f86fSChristophe Kerello# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
21ab2f86fSChristophe Kerello%YAML 1.2
31ab2f86fSChristophe Kerello---
41ab2f86fSChristophe Kerello$id: http://devicetree.org/schemas/memory-controllers/st,stm32-fmc2-ebi.yaml#
51ab2f86fSChristophe Kerello$schema: http://devicetree.org/meta-schemas/core.yaml#
61ab2f86fSChristophe Kerello
71ab2f86fSChristophe Kerellotitle: STMicroelectronics Flexible Memory Controller 2 (FMC2) Bindings
81ab2f86fSChristophe Kerello
91ab2f86fSChristophe Kerellodescription: |
101ab2f86fSChristophe Kerello  The FMC2 functional block makes the interface with: synchronous and
111ab2f86fSChristophe Kerello  asynchronous static devices (such as PSNOR, PSRAM or other memory-mapped
121ab2f86fSChristophe Kerello  peripherals) and NAND flash memories.
131ab2f86fSChristophe Kerello  Its main purposes are:
141ab2f86fSChristophe Kerello    - to translate AXI transactions into the appropriate external device
151ab2f86fSChristophe Kerello      protocol
161ab2f86fSChristophe Kerello    - to meet the access time requirements of the external devices
171ab2f86fSChristophe Kerello  All external devices share the addresses, data and control signals with the
181ab2f86fSChristophe Kerello  controller. Each external device is accessed by means of a unique Chip
191ab2f86fSChristophe Kerello  Select. The FMC2 performs only one access at a time to an external device.
201ab2f86fSChristophe Kerello
211ab2f86fSChristophe Kerellomaintainers:
22f4eedebdSPatrice Chotard  - Christophe Kerello <christophe.kerello@foss.st.com>
231ab2f86fSChristophe Kerello
241ab2f86fSChristophe Kerelloproperties:
251ab2f86fSChristophe Kerello  compatible:
261ab2f86fSChristophe Kerello    const: st,stm32mp1-fmc2-ebi
271ab2f86fSChristophe Kerello
281ab2f86fSChristophe Kerello  reg:
291ab2f86fSChristophe Kerello    maxItems: 1
301ab2f86fSChristophe Kerello
311ab2f86fSChristophe Kerello  clocks:
321ab2f86fSChristophe Kerello    maxItems: 1
331ab2f86fSChristophe Kerello
341ab2f86fSChristophe Kerello  resets:
351ab2f86fSChristophe Kerello    maxItems: 1
361ab2f86fSChristophe Kerello
371ab2f86fSChristophe Kerello  "#address-cells":
381ab2f86fSChristophe Kerello    const: 2
391ab2f86fSChristophe Kerello
401ab2f86fSChristophe Kerello  "#size-cells":
411ab2f86fSChristophe Kerello    const: 1
421ab2f86fSChristophe Kerello
431ab2f86fSChristophe Kerello  ranges:
441ab2f86fSChristophe Kerello    description: |
451ab2f86fSChristophe Kerello      Reflects the memory layout with four integer values per bank. Format:
461ab2f86fSChristophe Kerello      <bank-number> 0 <address of the bank> <size>
471ab2f86fSChristophe Kerello
481ab2f86fSChristophe KerellopatternProperties:
491ab2f86fSChristophe Kerello  "^.*@[0-4],[a-f0-9]+$":
501ab2f86fSChristophe Kerello    type: object
51*a11a5debSMarek Vasut    $ref: mc-peripheral-props.yaml#
521ab2f86fSChristophe Kerello
531ab2f86fSChristophe Kerellorequired:
541ab2f86fSChristophe Kerello  - "#address-cells"
551ab2f86fSChristophe Kerello  - "#size-cells"
561ab2f86fSChristophe Kerello  - compatible
571ab2f86fSChristophe Kerello  - reg
581ab2f86fSChristophe Kerello  - clocks
591ab2f86fSChristophe Kerello  - ranges
601ab2f86fSChristophe Kerello
615be478f9SRob HerringadditionalProperties: false
625be478f9SRob Herring
631ab2f86fSChristophe Kerelloexamples:
641ab2f86fSChristophe Kerello  - |
651ab2f86fSChristophe Kerello    #include <dt-bindings/interrupt-controller/arm-gic.h>
661ab2f86fSChristophe Kerello    #include <dt-bindings/clock/stm32mp1-clks.h>
671ab2f86fSChristophe Kerello    #include <dt-bindings/reset/stm32mp1-resets.h>
681ab2f86fSChristophe Kerello    memory-controller@58002000 {
691ab2f86fSChristophe Kerello      #address-cells = <2>;
701ab2f86fSChristophe Kerello      #size-cells = <1>;
711ab2f86fSChristophe Kerello      compatible = "st,stm32mp1-fmc2-ebi";
721ab2f86fSChristophe Kerello      reg = <0x58002000 0x1000>;
731ab2f86fSChristophe Kerello      clocks = <&rcc FMC_K>;
741ab2f86fSChristophe Kerello      resets = <&rcc FMC_R>;
751ab2f86fSChristophe Kerello
761ab2f86fSChristophe Kerello      ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
771ab2f86fSChristophe Kerello               <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
781ab2f86fSChristophe Kerello               <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
791ab2f86fSChristophe Kerello               <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
801ab2f86fSChristophe Kerello               <4 0 0x80000000 0x10000000>; /* NAND */
811ab2f86fSChristophe Kerello
821ab2f86fSChristophe Kerello      psram@0,0 {
831ab2f86fSChristophe Kerello        compatible = "mtd-ram";
841ab2f86fSChristophe Kerello        reg = <0 0x00000000 0x100000>;
851ab2f86fSChristophe Kerello        bank-width = <2>;
861ab2f86fSChristophe Kerello
871ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-transaction-type = <1>;
881ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-address-setup-ns = <60>;
891ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-data-setup-ns = <30>;
901ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-bus-turnaround-ns = <5>;
911ab2f86fSChristophe Kerello      };
921ab2f86fSChristophe Kerello
931ab2f86fSChristophe Kerello      nand-controller@4,0 {
941ab2f86fSChristophe Kerello        #address-cells = <1>;
951ab2f86fSChristophe Kerello        #size-cells = <0>;
961ab2f86fSChristophe Kerello        compatible = "st,stm32mp1-fmc2-nfc";
971ab2f86fSChristophe Kerello        reg = <4 0x00000000 0x1000>,
981ab2f86fSChristophe Kerello              <4 0x08010000 0x1000>,
991ab2f86fSChristophe Kerello              <4 0x08020000 0x1000>,
1001ab2f86fSChristophe Kerello              <4 0x01000000 0x1000>,
1011ab2f86fSChristophe Kerello              <4 0x09010000 0x1000>,
1021ab2f86fSChristophe Kerello              <4 0x09020000 0x1000>;
1031ab2f86fSChristophe Kerello        interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
1041ab2f86fSChristophe Kerello        dmas = <&mdma1 20 0x2 0x12000a02 0x0 0x0>,
1051ab2f86fSChristophe Kerello               <&mdma1 20 0x2 0x12000a08 0x0 0x0>,
1061ab2f86fSChristophe Kerello               <&mdma1 21 0x2 0x12000a0a 0x0 0x0>;
1071ab2f86fSChristophe Kerello        dma-names = "tx", "rx", "ecc";
1081ab2f86fSChristophe Kerello
1091ab2f86fSChristophe Kerello        nand@0 {
1101ab2f86fSChristophe Kerello          reg = <0>;
1111ab2f86fSChristophe Kerello          nand-on-flash-bbt;
1121ab2f86fSChristophe Kerello          #address-cells = <1>;
1131ab2f86fSChristophe Kerello          #size-cells = <1>;
1141ab2f86fSChristophe Kerello        };
1151ab2f86fSChristophe Kerello      };
1161ab2f86fSChristophe Kerello    };
1171ab2f86fSChristophe Kerello
1181ab2f86fSChristophe Kerello...
119