1985ede63SLi Yang# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2985ede63SLi Yang%YAML 1.2 3985ede63SLi Yang--- 4985ede63SLi Yang$id: http://devicetree.org/schemas/memory-controllers/fsl/fsl,ifc.yaml# 5985ede63SLi Yang$schema: http://devicetree.org/meta-schemas/core.yaml# 6985ede63SLi Yang 7985ede63SLi Yangtitle: FSL/NXP Integrated Flash Controller 8985ede63SLi Yang 9985ede63SLi Yangmaintainers: 10815cc771SMichael Walle - Shawn Guo <shawnguo@kernel.org> 11985ede63SLi Yang 12985ede63SLi Yangdescription: | 13985ede63SLi Yang NXP's integrated flash controller (IFC) is an advanced version of the 14985ede63SLi Yang enhanced local bus controller which includes similar programming and signal 15985ede63SLi Yang interfaces with an extended feature set. The IFC provides access to multiple 16985ede63SLi Yang external memory types, such as NAND flash (SLC and MLC), NOR flash, EPROM, 17985ede63SLi Yang SRAM and other memories where address and data are shared on a bus. 18985ede63SLi Yang 19985ede63SLi Yangproperties: 20985ede63SLi Yang $nodename: 21985ede63SLi Yang pattern: "^memory-controller@[0-9a-f]+$" 22985ede63SLi Yang 23985ede63SLi Yang compatible: 24985ede63SLi Yang const: fsl,ifc 25985ede63SLi Yang 26985ede63SLi Yang "#address-cells": 27985ede63SLi Yang enum: [2, 3] 28985ede63SLi Yang description: | 29985ede63SLi Yang Should be either two or three. The first cell is the chipselect 30985ede63SLi Yang number, and the remaining cells are the offset into the chipselect. 31985ede63SLi Yang 32985ede63SLi Yang "#size-cells": 33985ede63SLi Yang enum: [1, 2] 34985ede63SLi Yang description: | 35985ede63SLi Yang Either one or two, depending on how large each chipselect can be. 36985ede63SLi Yang 37985ede63SLi Yang reg: 38985ede63SLi Yang maxItems: 1 39985ede63SLi Yang 40985ede63SLi Yang interrupts: 41985ede63SLi Yang minItems: 1 42985ede63SLi Yang maxItems: 2 43985ede63SLi Yang description: | 44985ede63SLi Yang IFC may have one or two interrupts. If two interrupt specifiers are 45985ede63SLi Yang present, the first is the "common" interrupt (CM_EVTER_STAT), and the 46985ede63SLi Yang second is the NAND interrupt (NAND_EVTER_STAT). If there is only one, 47985ede63SLi Yang that interrupt reports both types of event. 48985ede63SLi Yang 49985ede63SLi Yang little-endian: 50985ede63SLi Yang type: boolean 51985ede63SLi Yang description: | 52985ede63SLi Yang If this property is absent, the big-endian mode will be in use as default 53985ede63SLi Yang for registers. 54985ede63SLi Yang 55985ede63SLi Yang ranges: 56985ede63SLi Yang description: | 57985ede63SLi Yang Each range corresponds to a single chipselect, and covers the entire 58985ede63SLi Yang access window as configured. 59985ede63SLi Yang 60985ede63SLi YangpatternProperties: 61*89e66845SFrank Li "^nand@[a-f0-9]+(,[a-f0-9]+)+$": 62985ede63SLi Yang type: object 63*89e66845SFrank Li properties: 64*89e66845SFrank Li compatible: 65*89e66845SFrank Li const: fsl,ifc-nand 66*89e66845SFrank Li 67*89e66845SFrank Li reg: 68*89e66845SFrank Li maxItems: 1 69*89e66845SFrank Li 70*89e66845SFrank Li "#address-cells": 71*89e66845SFrank Li const: 1 72*89e66845SFrank Li 73*89e66845SFrank Li "#size-cells": 74*89e66845SFrank Li const: 1 75*89e66845SFrank Li 76*89e66845SFrank Li patternProperties: 77*89e66845SFrank Li "^partition@[0-9a-f]+": 78*89e66845SFrank Li $ref: /schemas/mtd/partitions/partition.yaml# 79*89e66845SFrank Li deprecated: true 80985ede63SLi Yang 81985ede63SLi Yang required: 82985ede63SLi Yang - compatible 83985ede63SLi Yang - reg 84985ede63SLi Yang 85*89e66845SFrank Li additionalProperties: false 86*89e66845SFrank Li 87*89e66845SFrank Li "(flash|fpga|board-control|cpld)@[a-f0-9]+(,[a-f0-9]+)+$": 88*89e66845SFrank Li type: object 89*89e66845SFrank Li oneOf: 90*89e66845SFrank Li - $ref: /schemas/board/fsl,fpga-qixis.yaml# 91*89e66845SFrank Li - $ref: /schemas/mtd/mtd-physmap.yaml# 92*89e66845SFrank Li unevaluatedProperties: false 93*89e66845SFrank Li 94985ede63SLi Yangrequired: 95985ede63SLi Yang - compatible 96985ede63SLi Yang - reg 97985ede63SLi Yang - interrupts 98985ede63SLi Yang 99985ede63SLi YangadditionalProperties: false 100985ede63SLi Yang 101985ede63SLi Yangexamples: 102985ede63SLi Yang - | 103985ede63SLi Yang soc { 104985ede63SLi Yang #address-cells = <2>; 105985ede63SLi Yang #size-cells = <2>; 106985ede63SLi Yang 107985ede63SLi Yang memory-controller@ffe1e000 { 108985ede63SLi Yang compatible = "fsl,ifc"; 109985ede63SLi Yang #address-cells = <2>; 110985ede63SLi Yang #size-cells = <1>; 111985ede63SLi Yang reg = <0x0 0xffe1e000 0 0x2000>; 112985ede63SLi Yang interrupts = <16 2 19 2>; 113985ede63SLi Yang little-endian; 114985ede63SLi Yang 115985ede63SLi Yang /* NOR, NAND Flashes and CPLD on board */ 116985ede63SLi Yang ranges = <0x0 0x0 0x0 0xee000000 0x02000000>, 117985ede63SLi Yang <0x1 0x0 0x0 0xffa00000 0x00010000>, 118985ede63SLi Yang <0x3 0x0 0x0 0xffb00000 0x00020000>; 119985ede63SLi Yang 120985ede63SLi Yang flash@0,0 { 121985ede63SLi Yang #address-cells = <1>; 122985ede63SLi Yang #size-cells = <1>; 123985ede63SLi Yang compatible = "cfi-flash"; 124985ede63SLi Yang reg = <0x0 0x0 0x2000000>; 125985ede63SLi Yang bank-width = <2>; 126985ede63SLi Yang device-width = <1>; 127985ede63SLi Yang 128985ede63SLi Yang partition@0 { 129985ede63SLi Yang /* 32MB for user data */ 130985ede63SLi Yang reg = <0x0 0x02000000>; 131985ede63SLi Yang label = "NOR Data"; 132985ede63SLi Yang }; 133985ede63SLi Yang }; 134985ede63SLi Yang }; 135985ede63SLi Yang }; 136