# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/mtd/mediatek,mtk-nfc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: MediaTek(MTK) SoCs raw NAND FLASH controller (NFC) maintainers: - Xiangsheng Hou <xiangsheng.hou@mediatek.com> properties: compatible: enum: - mediatek,mt2701-nfc - mediatek,mt2712-nfc - mediatek,mt7622-nfc reg: items: - description: Base physical address and size of NFI. interrupts: items: - description: NFI interrupt clocks: items: - description: clock used for the controller - description: clock used for the pad clock-names: items: - const: nfi_clk - const: pad_clk ecc-engine: description: device-tree node of the required ECC engine. $ref: /schemas/types.yaml#/definitions/phandle patternProperties: "^nand@[a-f0-9]$": $ref: raw-nand-chip.yaml# unevaluatedProperties: false properties: reg: maximum: 1 nand-ecc-mode: const: hw allOf: - $ref: nand-controller.yaml# - if: properties: compatible: contains: const: mediatek,mt2701-nfc then: patternProperties: "^nand@[a-f0-9]$": properties: nand-ecc-step-size: enum: [ 512, 1024 ] nand-ecc-strength: enum: [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60] - if: properties: compatible: contains: const: mediatek,mt2712-nfc then: patternProperties: "^nand@[a-f0-9]$": properties: nand-ecc-step-size: enum: [ 512, 1024 ] nand-ecc-strength: enum: [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 68, 72, 80] - if: properties: compatible: contains: const: mediatek,mt7622-nfc then: patternProperties: "^nand@[a-f0-9]$": properties: nand-ecc-step-size: const: 512 nand-ecc-strength: enum: [4, 6, 8, 10, 12] required: - compatible - reg - interrupts - clocks - clock-names - ecc-engine unevaluatedProperties: false examples: - | #include <dt-bindings/clock/mt2701-clk.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/irq.h> soc { #address-cells = <2>; #size-cells = <2>; nand-controller@1100d000 { compatible = "mediatek,mt2701-nfc"; reg = <0 0x1100d000 0 0x1000>; interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_LOW>; clocks = <&pericfg CLK_PERI_NFI>, <&pericfg CLK_PERI_NFI_PAD>; clock-names = "nfi_clk", "pad_clk"; ecc-engine = <&bch>; #address-cells = <1>; #size-cells = <0>; nand@0 { reg = <0>; nand-on-flash-bbt; nand-ecc-mode = "hw"; nand-ecc-step-size = <1024>; nand-ecc-strength = <24>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; preloader@0 { label = "pl"; read-only; reg = <0x0 0x400000>; }; android@400000 { label = "android"; reg = <0x400000 0x12c00000>; }; }; }; }; };