| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/memory-controllers/fsl/fsl,ifc.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: FSL/NXP Integrated Flash Controller |
| |
| maintainers: |
| - Shawn Guo <shawnguo@kernel.org> |
| |
| description: | |
| NXP's integrated flash controller (IFC) is an advanced version of the |
| enhanced local bus controller which includes similar programming and signal |
| interfaces with an extended feature set. The IFC provides access to multiple |
| external memory types, such as NAND flash (SLC and MLC), NOR flash, EPROM, |
| SRAM and other memories where address and data are shared on a bus. |
| |
| properties: |
| $nodename: |
| pattern: "^memory-controller@[0-9a-f]+$" |
| |
| compatible: |
| const: fsl,ifc |
| |
| "#address-cells": |
| enum: [2, 3] |
| description: | |
| Should be either two or three. The first cell is the chipselect |
| number, and the remaining cells are the offset into the chipselect. |
| |
| "#size-cells": |
| enum: [1, 2] |
| description: | |
| Either one or two, depending on how large each chipselect can be. |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| minItems: 1 |
| maxItems: 2 |
| description: | |
| IFC may have one or two interrupts. If two interrupt specifiers are |
| present, the first is the "common" interrupt (CM_EVTER_STAT), and the |
| second is the NAND interrupt (NAND_EVTER_STAT). If there is only one, |
| that interrupt reports both types of event. |
| |
| little-endian: |
| type: boolean |
| description: | |
| If this property is absent, the big-endian mode will be in use as default |
| for registers. |
| |
| ranges: |
| description: | |
| Each range corresponds to a single chipselect, and covers the entire |
| access window as configured. |
| |
| patternProperties: |
| "^.*@[a-f0-9]+(,[a-f0-9]+)+$": |
| type: object |
| description: | |
| Child device nodes describe the devices connected to IFC such as NOR (e.g. |
| cfi-flash) and NAND (fsl,ifc-nand). There might be board specific devices |
| like FPGAs, CPLDs, etc. |
| |
| required: |
| - compatible |
| - reg |
| |
| required: |
| - compatible |
| - reg |
| - interrupts |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| soc { |
| #address-cells = <2>; |
| #size-cells = <2>; |
| |
| memory-controller@ffe1e000 { |
| compatible = "fsl,ifc"; |
| #address-cells = <2>; |
| #size-cells = <1>; |
| reg = <0x0 0xffe1e000 0 0x2000>; |
| interrupts = <16 2 19 2>; |
| little-endian; |
| |
| /* NOR, NAND Flashes and CPLD on board */ |
| ranges = <0x0 0x0 0x0 0xee000000 0x02000000>, |
| <0x1 0x0 0x0 0xffa00000 0x00010000>, |
| <0x3 0x0 0x0 0xffb00000 0x00020000>; |
| |
| flash@0,0 { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| compatible = "cfi-flash"; |
| reg = <0x0 0x0 0x2000000>; |
| bank-width = <2>; |
| device-width = <1>; |
| |
| partition@0 { |
| /* 32MB for user data */ |
| reg = <0x0 0x02000000>; |
| label = "NOR Data"; |
| }; |
| }; |
| }; |
| }; |