xref: /linux/Documentation/devicetree/bindings/mtd/rockchip,nand-controller.yaml (revision 1f79a611e74c97dcb76054b9f28f41a122a7a93b)
12007ac9eSYifeng Zhao# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
22007ac9eSYifeng Zhao%YAML 1.2
32007ac9eSYifeng Zhao---
42007ac9eSYifeng Zhao$id: http://devicetree.org/schemas/mtd/rockchip,nand-controller.yaml#
52007ac9eSYifeng Zhao$schema: http://devicetree.org/meta-schemas/core.yaml#
62007ac9eSYifeng Zhao
72007ac9eSYifeng Zhaotitle: Rockchip SoCs NAND FLASH Controller (NFC)
82007ac9eSYifeng Zhao
92007ac9eSYifeng ZhaoallOf:
10*1f79a611SRob Herring  - $ref: nand-controller.yaml#
112007ac9eSYifeng Zhao
122007ac9eSYifeng Zhaomaintainers:
132007ac9eSYifeng Zhao  - Heiko Stuebner <heiko@sntech.de>
142007ac9eSYifeng Zhao
152007ac9eSYifeng Zhaoproperties:
162007ac9eSYifeng Zhao  compatible:
172007ac9eSYifeng Zhao    oneOf:
182007ac9eSYifeng Zhao      - const: rockchip,px30-nfc
192007ac9eSYifeng Zhao      - const: rockchip,rk2928-nfc
202007ac9eSYifeng Zhao      - const: rockchip,rv1108-nfc
212007ac9eSYifeng Zhao      - items:
2247c3697eSJohan Jonker          - enum:
2347c3697eSJohan Jonker              - rockchip,rk3036-nfc
2447c3697eSJohan Jonker              - rockchip,rk3128-nfc
252007ac9eSYifeng Zhao          - const: rockchip,rk2928-nfc
262007ac9eSYifeng Zhao      - items:
272007ac9eSYifeng Zhao          - const: rockchip,rk3308-nfc
282007ac9eSYifeng Zhao          - const: rockchip,rv1108-nfc
292007ac9eSYifeng Zhao
302007ac9eSYifeng Zhao  reg:
312007ac9eSYifeng Zhao    maxItems: 1
322007ac9eSYifeng Zhao
332007ac9eSYifeng Zhao  interrupts:
342007ac9eSYifeng Zhao    maxItems: 1
352007ac9eSYifeng Zhao
362007ac9eSYifeng Zhao  clocks:
372007ac9eSYifeng Zhao    minItems: 1
382007ac9eSYifeng Zhao    items:
392007ac9eSYifeng Zhao      - description: Bus Clock
402007ac9eSYifeng Zhao      - description: Module Clock
412007ac9eSYifeng Zhao
422007ac9eSYifeng Zhao  clock-names:
432007ac9eSYifeng Zhao    minItems: 1
442007ac9eSYifeng Zhao    items:
452007ac9eSYifeng Zhao      - const: ahb
462007ac9eSYifeng Zhao      - const: nfc
472007ac9eSYifeng Zhao
482007ac9eSYifeng Zhao  assigned-clocks:
492007ac9eSYifeng Zhao    maxItems: 1
502007ac9eSYifeng Zhao
512007ac9eSYifeng Zhao  assigned-clock-rates:
522007ac9eSYifeng Zhao    maxItems: 1
532007ac9eSYifeng Zhao
542007ac9eSYifeng Zhao  power-domains:
552007ac9eSYifeng Zhao    maxItems: 1
562007ac9eSYifeng Zhao
572007ac9eSYifeng ZhaopatternProperties:
582007ac9eSYifeng Zhao  "^nand@[0-7]$":
592007ac9eSYifeng Zhao    type: object
602007ac9eSYifeng Zhao    properties:
612007ac9eSYifeng Zhao      reg:
622007ac9eSYifeng Zhao        minimum: 0
632007ac9eSYifeng Zhao        maximum: 7
642007ac9eSYifeng Zhao
652007ac9eSYifeng Zhao      nand-ecc-mode:
662007ac9eSYifeng Zhao        const: hw
672007ac9eSYifeng Zhao
682007ac9eSYifeng Zhao      nand-ecc-step-size:
692007ac9eSYifeng Zhao        const: 1024
702007ac9eSYifeng Zhao
712007ac9eSYifeng Zhao      nand-ecc-strength:
722007ac9eSYifeng Zhao        enum: [16, 24, 40, 60, 70]
732007ac9eSYifeng Zhao        description: |
742007ac9eSYifeng Zhao          The ECC configurations that can be supported are as follows.
752007ac9eSYifeng Zhao            NFC v600 ECC 16, 24, 40, 60
762007ac9eSYifeng Zhao              RK2928, RK3066, RK3188
772007ac9eSYifeng Zhao
782007ac9eSYifeng Zhao            NFC v622 ECC 16, 24, 40, 60
792007ac9eSYifeng Zhao              RK3036, RK3128
802007ac9eSYifeng Zhao
812007ac9eSYifeng Zhao            NFC v800 ECC 16
822007ac9eSYifeng Zhao              RK3308, RV1108
832007ac9eSYifeng Zhao
842007ac9eSYifeng Zhao            NFC v900 ECC 16, 40, 60, 70
852007ac9eSYifeng Zhao              RK3326, PX30
862007ac9eSYifeng Zhao
872007ac9eSYifeng Zhao      nand-bus-width:
882007ac9eSYifeng Zhao        const: 8
892007ac9eSYifeng Zhao
902007ac9eSYifeng Zhao      rockchip,boot-blks:
912007ac9eSYifeng Zhao        $ref: /schemas/types.yaml#/definitions/uint32
922007ac9eSYifeng Zhao        minimum: 2
932007ac9eSYifeng Zhao        default: 16
942007ac9eSYifeng Zhao        description:
952007ac9eSYifeng Zhao          The NFC driver need this information to select ECC
962007ac9eSYifeng Zhao          algorithms supported by the boot ROM.
972007ac9eSYifeng Zhao          Only used in combination with 'nand-is-boot-medium'.
982007ac9eSYifeng Zhao
992007ac9eSYifeng Zhao      rockchip,boot-ecc-strength:
1002007ac9eSYifeng Zhao        enum: [16, 24, 40, 60, 70]
101dca66935SRob Herring        $ref: /schemas/types.yaml#/definitions/uint32
1022007ac9eSYifeng Zhao        description: |
1032007ac9eSYifeng Zhao          If specified it indicates that a different BCH/ECC setting is
1042007ac9eSYifeng Zhao          supported by the boot ROM.
1052007ac9eSYifeng Zhao            NFC v600 ECC 16, 24
1062007ac9eSYifeng Zhao              RK2928, RK3066, RK3188
1072007ac9eSYifeng Zhao
1082007ac9eSYifeng Zhao            NFC v622 ECC 16, 24, 40, 60
1092007ac9eSYifeng Zhao              RK3036, RK3128
1102007ac9eSYifeng Zhao
1112007ac9eSYifeng Zhao            NFC v800 ECC 16
1122007ac9eSYifeng Zhao              RK3308, RV1108
1132007ac9eSYifeng Zhao
1142007ac9eSYifeng Zhao            NFC v900 ECC 16, 70
1152007ac9eSYifeng Zhao              RK3326, PX30
1162007ac9eSYifeng Zhao
1172007ac9eSYifeng Zhao          Only used in combination with 'nand-is-boot-medium'.
1182007ac9eSYifeng Zhao
1192007ac9eSYifeng Zhaorequired:
1202007ac9eSYifeng Zhao  - compatible
1212007ac9eSYifeng Zhao  - reg
1222007ac9eSYifeng Zhao  - interrupts
1232007ac9eSYifeng Zhao  - clocks
1242007ac9eSYifeng Zhao  - clock-names
1252007ac9eSYifeng Zhao
1262007ac9eSYifeng ZhaounevaluatedProperties: false
1272007ac9eSYifeng Zhao
1282007ac9eSYifeng Zhaoexamples:
1292007ac9eSYifeng Zhao  - |
1302007ac9eSYifeng Zhao    #include <dt-bindings/clock/rk3308-cru.h>
1312007ac9eSYifeng Zhao    #include <dt-bindings/interrupt-controller/arm-gic.h>
1322007ac9eSYifeng Zhao    nfc: nand-controller@ff4b0000 {
1332007ac9eSYifeng Zhao      compatible = "rockchip,rk3308-nfc",
1342007ac9eSYifeng Zhao                   "rockchip,rv1108-nfc";
1352007ac9eSYifeng Zhao      reg = <0xff4b0000 0x4000>;
1362007ac9eSYifeng Zhao      interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
1372007ac9eSYifeng Zhao      clocks = <&cru HCLK_NANDC>, <&cru SCLK_NANDC>;
1382007ac9eSYifeng Zhao      clock-names = "ahb", "nfc";
1392007ac9eSYifeng Zhao      assigned-clocks = <&clks SCLK_NANDC>;
1402007ac9eSYifeng Zhao      assigned-clock-rates = <150000000>;
1412007ac9eSYifeng Zhao
1422007ac9eSYifeng Zhao      pinctrl-0 = <&flash_ale &flash_bus8 &flash_cle &flash_csn0
1432007ac9eSYifeng Zhao                   &flash_rdn &flash_rdy &flash_wrn>;
1442007ac9eSYifeng Zhao      pinctrl-names = "default";
1452007ac9eSYifeng Zhao
1462007ac9eSYifeng Zhao      #address-cells = <1>;
1472007ac9eSYifeng Zhao      #size-cells = <0>;
1482007ac9eSYifeng Zhao
1492007ac9eSYifeng Zhao      nand@0 {
1502007ac9eSYifeng Zhao        reg = <0>;
1512007ac9eSYifeng Zhao        label = "rk-nand";
1522007ac9eSYifeng Zhao        nand-bus-width = <8>;
1532007ac9eSYifeng Zhao        nand-ecc-mode = "hw";
1542007ac9eSYifeng Zhao        nand-ecc-step-size = <1024>;
1552007ac9eSYifeng Zhao        nand-ecc-strength = <16>;
1562007ac9eSYifeng Zhao        nand-is-boot-medium;
1572007ac9eSYifeng Zhao        rockchip,boot-blks = <8>;
1582007ac9eSYifeng Zhao        rockchip,boot-ecc-strength = <16>;
1592007ac9eSYifeng Zhao      };
1602007ac9eSYifeng Zhao    };
1612007ac9eSYifeng Zhao
1622007ac9eSYifeng Zhao...
163