xref: /linux/Documentation/devicetree/bindings/memory-controllers/st,stm32-fmc2-ebi.yaml (revision 621cde16e49b3ecf7d59a8106a20aaebfb4a59a9)
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
784e85359SKrzysztof Kozlowskititle: STMicroelectronics Flexible Memory Controller 2 (FMC2)
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:
2697dcd1efSChristophe Kerello    enum:
2797dcd1efSChristophe Kerello      - st,stm32mp1-fmc2-ebi
2897dcd1efSChristophe Kerello      - st,stm32mp25-fmc2-ebi
291ab2f86fSChristophe Kerello
301ab2f86fSChristophe Kerello  reg:
311ab2f86fSChristophe Kerello    maxItems: 1
321ab2f86fSChristophe Kerello
331ab2f86fSChristophe Kerello  clocks:
341ab2f86fSChristophe Kerello    maxItems: 1
351ab2f86fSChristophe Kerello
361ab2f86fSChristophe Kerello  resets:
371ab2f86fSChristophe Kerello    maxItems: 1
381ab2f86fSChristophe Kerello
3997dcd1efSChristophe Kerello  power-domains:
4097dcd1efSChristophe Kerello    maxItems: 1
4197dcd1efSChristophe Kerello
421ab2f86fSChristophe Kerello  "#address-cells":
431ab2f86fSChristophe Kerello    const: 2
441ab2f86fSChristophe Kerello
451ab2f86fSChristophe Kerello  "#size-cells":
461ab2f86fSChristophe Kerello    const: 1
471ab2f86fSChristophe Kerello
481ab2f86fSChristophe Kerello  ranges:
491ab2f86fSChristophe Kerello    description: |
501ab2f86fSChristophe Kerello      Reflects the memory layout with four integer values per bank. Format:
511ab2f86fSChristophe Kerello      <bank-number> 0 <address of the bank> <size>
521ab2f86fSChristophe Kerello
53*02ec75edSGatien Chevallier  access-controllers:
54*02ec75edSGatien Chevallier    minItems: 1
55*02ec75edSGatien Chevallier    maxItems: 2
56*02ec75edSGatien Chevallier
571ab2f86fSChristophe KerellopatternProperties:
581ab2f86fSChristophe Kerello  "^.*@[0-4],[a-f0-9]+$":
59e62fc182SRob Herring    additionalProperties: true
601ab2f86fSChristophe Kerello    type: object
61a11a5debSMarek Vasut    $ref: mc-peripheral-props.yaml#
621ab2f86fSChristophe Kerello
631ab2f86fSChristophe Kerellorequired:
641ab2f86fSChristophe Kerello  - "#address-cells"
651ab2f86fSChristophe Kerello  - "#size-cells"
661ab2f86fSChristophe Kerello  - compatible
671ab2f86fSChristophe Kerello  - reg
681ab2f86fSChristophe Kerello  - clocks
691ab2f86fSChristophe Kerello  - ranges
701ab2f86fSChristophe Kerello
715be478f9SRob HerringadditionalProperties: false
725be478f9SRob Herring
731ab2f86fSChristophe Kerelloexamples:
741ab2f86fSChristophe Kerello  - |
751ab2f86fSChristophe Kerello    #include <dt-bindings/interrupt-controller/arm-gic.h>
761ab2f86fSChristophe Kerello    #include <dt-bindings/clock/stm32mp1-clks.h>
771ab2f86fSChristophe Kerello    #include <dt-bindings/reset/stm32mp1-resets.h>
781ab2f86fSChristophe Kerello    memory-controller@58002000 {
791ab2f86fSChristophe Kerello      #address-cells = <2>;
801ab2f86fSChristophe Kerello      #size-cells = <1>;
811ab2f86fSChristophe Kerello      compatible = "st,stm32mp1-fmc2-ebi";
821ab2f86fSChristophe Kerello      reg = <0x58002000 0x1000>;
831ab2f86fSChristophe Kerello      clocks = <&rcc FMC_K>;
841ab2f86fSChristophe Kerello      resets = <&rcc FMC_R>;
851ab2f86fSChristophe Kerello
861ab2f86fSChristophe Kerello      ranges = <0 0 0x60000000 0x04000000>, /* EBI CS 1 */
871ab2f86fSChristophe Kerello               <1 0 0x64000000 0x04000000>, /* EBI CS 2 */
881ab2f86fSChristophe Kerello               <2 0 0x68000000 0x04000000>, /* EBI CS 3 */
891ab2f86fSChristophe Kerello               <3 0 0x6c000000 0x04000000>, /* EBI CS 4 */
901ab2f86fSChristophe Kerello               <4 0 0x80000000 0x10000000>; /* NAND */
911ab2f86fSChristophe Kerello
921ab2f86fSChristophe Kerello      psram@0,0 {
931ab2f86fSChristophe Kerello        compatible = "mtd-ram";
941ab2f86fSChristophe Kerello        reg = <0 0x00000000 0x100000>;
951ab2f86fSChristophe Kerello        bank-width = <2>;
961ab2f86fSChristophe Kerello
971ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-transaction-type = <1>;
981ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-address-setup-ns = <60>;
991ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-data-setup-ns = <30>;
1001ab2f86fSChristophe Kerello        st,fmc2-ebi-cs-bus-turnaround-ns = <5>;
1011ab2f86fSChristophe Kerello      };
1021ab2f86fSChristophe Kerello
1031ab2f86fSChristophe Kerello      nand-controller@4,0 {
1041ab2f86fSChristophe Kerello        #address-cells = <1>;
1051ab2f86fSChristophe Kerello        #size-cells = <0>;
1061ab2f86fSChristophe Kerello        compatible = "st,stm32mp1-fmc2-nfc";
1071ab2f86fSChristophe Kerello        reg = <4 0x00000000 0x1000>,
1081ab2f86fSChristophe Kerello              <4 0x08010000 0x1000>,
1091ab2f86fSChristophe Kerello              <4 0x08020000 0x1000>,
1101ab2f86fSChristophe Kerello              <4 0x01000000 0x1000>,
1111ab2f86fSChristophe Kerello              <4 0x09010000 0x1000>,
1121ab2f86fSChristophe Kerello              <4 0x09020000 0x1000>;
1131ab2f86fSChristophe Kerello        interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
1141ab2f86fSChristophe Kerello        dmas = <&mdma1 20 0x2 0x12000a02 0x0 0x0>,
1151ab2f86fSChristophe Kerello               <&mdma1 20 0x2 0x12000a08 0x0 0x0>,
1161ab2f86fSChristophe Kerello               <&mdma1 21 0x2 0x12000a0a 0x0 0x0>;
1171ab2f86fSChristophe Kerello        dma-names = "tx", "rx", "ecc";
1181ab2f86fSChristophe Kerello
1191ab2f86fSChristophe Kerello        nand@0 {
1201ab2f86fSChristophe Kerello          reg = <0>;
1211ab2f86fSChristophe Kerello          nand-on-flash-bbt;
1221ab2f86fSChristophe Kerello          #address-cells = <1>;
1231ab2f86fSChristophe Kerello          #size-cells = <1>;
1241ab2f86fSChristophe Kerello        };
1251ab2f86fSChristophe Kerello      };
1261ab2f86fSChristophe Kerello    };
1271ab2f86fSChristophe Kerello
1281ab2f86fSChristophe Kerello...
129