1*985ede63SLi Yang# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*985ede63SLi Yang%YAML 1.2 3*985ede63SLi Yang--- 4*985ede63SLi Yang$id: http://devicetree.org/schemas/memory-controllers/fsl/fsl,ifc.yaml# 5*985ede63SLi Yang$schema: http://devicetree.org/meta-schemas/core.yaml# 6*985ede63SLi Yang 7*985ede63SLi Yangtitle: FSL/NXP Integrated Flash Controller 8*985ede63SLi Yang 9*985ede63SLi Yangmaintainers: 10*985ede63SLi Yang - Li Yang <leoyang.li@nxp.com> 11*985ede63SLi Yang 12*985ede63SLi Yangdescription: | 13*985ede63SLi Yang NXP's integrated flash controller (IFC) is an advanced version of the 14*985ede63SLi Yang enhanced local bus controller which includes similar programming and signal 15*985ede63SLi Yang interfaces with an extended feature set. The IFC provides access to multiple 16*985ede63SLi Yang external memory types, such as NAND flash (SLC and MLC), NOR flash, EPROM, 17*985ede63SLi Yang SRAM and other memories where address and data are shared on a bus. 18*985ede63SLi Yang 19*985ede63SLi Yangproperties: 20*985ede63SLi Yang $nodename: 21*985ede63SLi Yang pattern: "^memory-controller@[0-9a-f]+$" 22*985ede63SLi Yang 23*985ede63SLi Yang compatible: 24*985ede63SLi Yang const: fsl,ifc 25*985ede63SLi Yang 26*985ede63SLi Yang "#address-cells": 27*985ede63SLi Yang enum: [2, 3] 28*985ede63SLi Yang description: | 29*985ede63SLi Yang Should be either two or three. The first cell is the chipselect 30*985ede63SLi Yang number, and the remaining cells are the offset into the chipselect. 31*985ede63SLi Yang 32*985ede63SLi Yang "#size-cells": 33*985ede63SLi Yang enum: [1, 2] 34*985ede63SLi Yang description: | 35*985ede63SLi Yang Either one or two, depending on how large each chipselect can be. 36*985ede63SLi Yang 37*985ede63SLi Yang reg: 38*985ede63SLi Yang maxItems: 1 39*985ede63SLi Yang 40*985ede63SLi Yang interrupts: 41*985ede63SLi Yang minItems: 1 42*985ede63SLi Yang maxItems: 2 43*985ede63SLi Yang description: | 44*985ede63SLi Yang IFC may have one or two interrupts. If two interrupt specifiers are 45*985ede63SLi Yang present, the first is the "common" interrupt (CM_EVTER_STAT), and the 46*985ede63SLi Yang second is the NAND interrupt (NAND_EVTER_STAT). If there is only one, 47*985ede63SLi Yang that interrupt reports both types of event. 48*985ede63SLi Yang 49*985ede63SLi Yang little-endian: 50*985ede63SLi Yang type: boolean 51*985ede63SLi Yang description: | 52*985ede63SLi Yang If this property is absent, the big-endian mode will be in use as default 53*985ede63SLi Yang for registers. 54*985ede63SLi Yang 55*985ede63SLi Yang ranges: 56*985ede63SLi Yang description: | 57*985ede63SLi Yang Each range corresponds to a single chipselect, and covers the entire 58*985ede63SLi Yang access window as configured. 59*985ede63SLi Yang 60*985ede63SLi YangpatternProperties: 61*985ede63SLi Yang "^.*@[a-f0-9]+(,[a-f0-9]+)+$": 62*985ede63SLi Yang type: object 63*985ede63SLi Yang description: | 64*985ede63SLi Yang Child device nodes describe the devices connected to IFC such as NOR (e.g. 65*985ede63SLi Yang cfi-flash) and NAND (fsl,ifc-nand). There might be board specific devices 66*985ede63SLi Yang like FPGAs, CPLDs, etc. 67*985ede63SLi Yang 68*985ede63SLi Yang required: 69*985ede63SLi Yang - compatible 70*985ede63SLi Yang - reg 71*985ede63SLi Yang 72*985ede63SLi Yangrequired: 73*985ede63SLi Yang - compatible 74*985ede63SLi Yang - reg 75*985ede63SLi Yang - interrupts 76*985ede63SLi Yang 77*985ede63SLi YangadditionalProperties: false 78*985ede63SLi Yang 79*985ede63SLi Yangexamples: 80*985ede63SLi Yang - | 81*985ede63SLi Yang soc { 82*985ede63SLi Yang #address-cells = <2>; 83*985ede63SLi Yang #size-cells = <2>; 84*985ede63SLi Yang 85*985ede63SLi Yang memory-controller@ffe1e000 { 86*985ede63SLi Yang compatible = "fsl,ifc"; 87*985ede63SLi Yang #address-cells = <2>; 88*985ede63SLi Yang #size-cells = <1>; 89*985ede63SLi Yang reg = <0x0 0xffe1e000 0 0x2000>; 90*985ede63SLi Yang interrupts = <16 2 19 2>; 91*985ede63SLi Yang little-endian; 92*985ede63SLi Yang 93*985ede63SLi Yang /* NOR, NAND Flashes and CPLD on board */ 94*985ede63SLi Yang ranges = <0x0 0x0 0x0 0xee000000 0x02000000>, 95*985ede63SLi Yang <0x1 0x0 0x0 0xffa00000 0x00010000>, 96*985ede63SLi Yang <0x3 0x0 0x0 0xffb00000 0x00020000>; 97*985ede63SLi Yang 98*985ede63SLi Yang flash@0,0 { 99*985ede63SLi Yang #address-cells = <1>; 100*985ede63SLi Yang #size-cells = <1>; 101*985ede63SLi Yang compatible = "cfi-flash"; 102*985ede63SLi Yang reg = <0x0 0x0 0x2000000>; 103*985ede63SLi Yang bank-width = <2>; 104*985ede63SLi Yang device-width = <1>; 105*985ede63SLi Yang 106*985ede63SLi Yang partition@0 { 107*985ede63SLi Yang /* 32MB for user data */ 108*985ede63SLi Yang reg = <0x0 0x02000000>; 109*985ede63SLi Yang label = "NOR Data"; 110*985ede63SLi Yang }; 111*985ede63SLi Yang }; 112*985ede63SLi Yang }; 113*985ede63SLi Yang }; 114