18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/memory-controllers/ingenic,nemc.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Ingenic SoCs NAND / External Memory Controller (NEMC) devicetree bindings
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Paul Cercueil <paul@crapouillou.net>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciproperties:
138c2ecf20Sopenharmony_ci  $nodename:
148c2ecf20Sopenharmony_ci    pattern: "^memory-controller@[0-9a-f]+$"
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci  compatible:
178c2ecf20Sopenharmony_ci    oneOf:
188c2ecf20Sopenharmony_ci      - enum:
198c2ecf20Sopenharmony_ci          - ingenic,jz4740-nemc
208c2ecf20Sopenharmony_ci          - ingenic,jz4780-nemc
218c2ecf20Sopenharmony_ci      - items:
228c2ecf20Sopenharmony_ci          - const: ingenic,jz4725b-nemc
238c2ecf20Sopenharmony_ci          - const: ingenic,jz4740-nemc
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci  "#address-cells":
268c2ecf20Sopenharmony_ci    const: 2
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci  "#size-cells":
298c2ecf20Sopenharmony_ci    const: 1
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci  ranges: true
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci  reg:
348c2ecf20Sopenharmony_ci    maxItems: 1
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  clocks:
378c2ecf20Sopenharmony_ci    maxItems: 1
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_cipatternProperties:
408c2ecf20Sopenharmony_ci  ".*@[0-9]+$":
418c2ecf20Sopenharmony_ci    type: object
428c2ecf20Sopenharmony_ci    properties:
438c2ecf20Sopenharmony_ci      reg:
448c2ecf20Sopenharmony_ci        minItems: 1
458c2ecf20Sopenharmony_ci        maxItems: 255
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci      ingenic,nemc-bus-width:
488c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
498c2ecf20Sopenharmony_ci        enum: [8, 16]
508c2ecf20Sopenharmony_ci        description: Specifies the bus width in bits.
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci      ingenic,nemc-tAS:
538c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
548c2ecf20Sopenharmony_ci        description: Address setup time in nanoseconds.
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci      ingenic,nemc-tAH:
578c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
588c2ecf20Sopenharmony_ci        description: Address hold time in nanoseconds.
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci      ingenic,nemc-tBP:
618c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
628c2ecf20Sopenharmony_ci        description: Burst pitch time in nanoseconds.
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci      ingenic,nemc-tAW:
658c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
668c2ecf20Sopenharmony_ci        description: Address wait time in nanoseconds.
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci      ingenic,nemc-tSTRV:
698c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
708c2ecf20Sopenharmony_ci        description: Static memory recovery time in nanoseconds.
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci    required:
738c2ecf20Sopenharmony_ci      - reg
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_cirequired:
768c2ecf20Sopenharmony_ci  - compatible
778c2ecf20Sopenharmony_ci  - "#address-cells"
788c2ecf20Sopenharmony_ci  - "#size-cells"
798c2ecf20Sopenharmony_ci  - ranges
808c2ecf20Sopenharmony_ci  - reg
818c2ecf20Sopenharmony_ci  - clocks
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ciadditionalProperties: false
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ciexamples:
868c2ecf20Sopenharmony_ci  - |
878c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/jz4780-cgu.h>
888c2ecf20Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
898c2ecf20Sopenharmony_ci    nemc: memory-controller@13410000 {
908c2ecf20Sopenharmony_ci      compatible = "ingenic,jz4780-nemc";
918c2ecf20Sopenharmony_ci      reg = <0x13410000 0x10000>;
928c2ecf20Sopenharmony_ci      #address-cells = <2>;
938c2ecf20Sopenharmony_ci      #size-cells = <1>;
948c2ecf20Sopenharmony_ci      ranges = <1 0 0x1b000000 0x1000000>,
958c2ecf20Sopenharmony_ci         <2 0 0x1a000000 0x1000000>,
968c2ecf20Sopenharmony_ci         <3 0 0x19000000 0x1000000>,
978c2ecf20Sopenharmony_ci         <4 0 0x18000000 0x1000000>,
988c2ecf20Sopenharmony_ci         <5 0 0x17000000 0x1000000>,
998c2ecf20Sopenharmony_ci         <6 0 0x16000000 0x1000000>;
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci      clocks = <&cgu JZ4780_CLK_NEMC>;
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci      ethernet@6 {
1048c2ecf20Sopenharmony_ci        compatible = "davicom,dm9000";
1058c2ecf20Sopenharmony_ci        davicom,no-eeprom;
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci        pinctrl-names = "default";
1088c2ecf20Sopenharmony_ci        pinctrl-0 = <&pins_nemc_cs6>;
1098c2ecf20Sopenharmony_ci
1108c2ecf20Sopenharmony_ci        reg = <6 0 1>, /* addr */
1118c2ecf20Sopenharmony_ci              <6 2 1>; /* data */
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci        ingenic,nemc-tAS = <15>;
1148c2ecf20Sopenharmony_ci        ingenic,nemc-tAH = <10>;
1158c2ecf20Sopenharmony_ci        ingenic,nemc-tBP = <20>;
1168c2ecf20Sopenharmony_ci        ingenic,nemc-tAW = <50>;
1178c2ecf20Sopenharmony_ci        ingenic,nemc-tSTRV = <100>;
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ci        reset-gpios = <&gpf 12 GPIO_ACTIVE_HIGH>;
1208c2ecf20Sopenharmony_ci        vcc-supply = <&eth0_power>;
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci        interrupt-parent = <&gpe>;
1238c2ecf20Sopenharmony_ci        interrupts = <19 4>;
1248c2ecf20Sopenharmony_ci      };
1258c2ecf20Sopenharmony_ci    };
126