# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/memory-controllers/arm,pl172.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: ARM PL172/PL175/PL176 MultiPort Memory Controller maintainers: - Frank Li # We need a select here so we don't match all nodes with 'arm,primecell' select: properties: compatible: contains: enum: - arm,pl172 - arm,pl175 - arm,pl176 required: - compatible properties: compatible: items: - enum: - arm,pl172 - arm,pl175 - arm,pl176 - const: arm,primecell reg: maxItems: 1 '#address-cells': const: 2 '#size-cells': const: 1 ranges: true clocks: maxItems: 2 clock-names: items: - const: mpmcclk - const: apb_pclk clock-ranges: true resets: maxItems: 1 patternProperties: "^cs[0-9]$": type: object additionalProperties: false patternProperties: "^flash@[0-9],[0-9a-f]+$": type: object $ref: /schemas/mtd/mtd-physmap.yaml# unevaluatedProperties: false "^(gpio|sram)@[0-9],[0-9a-f]+$": type: object additionalProperties: true properties: '#address-cells': const: 2 '#size-cells': const: 1 ranges: true clocks: maxItems: 2 clock-ranges: true mpmc,cs: $ref: /schemas/types.yaml#/definitions/uint32 description: Chip select number. Indicates to the pl0172 driver which chipselect is used for accessing the memory. mpmc,memory-width: $ref: /schemas/types.yaml#/definitions/uint32 enum: [8, 16, 32] description: Width of the chip select memory. Must be equal to either 8, 16 or 32. mpmc,async-page-mode: $ref: /schemas/types.yaml#/definitions/flag description: Enable asynchronous page mode. mpmc,cs-active-high: $ref: /schemas/types.yaml#/definitions/flag description: Set chip select polarity to active high. mpmc,byte-lane-low: $ref: /schemas/types.yaml#/definitions/flag description: Set byte lane state to low. mpmc,extended-wait: $ref: /schemas/types.yaml#/definitions/flag description: Enable extended wait. mpmc,buffer-enable: $ref: /schemas/types.yaml#/definitions/flag description: Enable write buffer, option is not supported by PL175 and PL176 controllers. mpmc,write-protect: $ref: /schemas/types.yaml#/definitions/flag description: Enable write protect. mpmc,read-enable-delay: $ref: /schemas/types.yaml#/definitions/uint32 description: Delay from chip select assertion to read enable (RE signal) in nano seconds. mpmc,write-enable-delay: $ref: /schemas/types.yaml#/definitions/uint32 description: Delay from chip select assertion to write enable (WE signal) in nano seconds. mpmc,output-enable-delay: $ref: /schemas/types.yaml#/definitions/uint32 description: Delay from chip select assertion to output enable (OE signal) in nano seconds. mpmc,write-access-delay: $ref: /schemas/types.yaml#/definitions/uint32 description: Delay from chip select assertion to write access in nano seconds. mpmc,read-access-delay: $ref: /schemas/types.yaml#/definitions/uint32 description: Delay from chip select assertion to read access in nano seconds. mpmc,page-mode-read-delay: $ref: /schemas/types.yaml#/definitions/uint32 description: Delay for asynchronous page mode sequential accesses in nano seconds. mpmc,turn-round-delay: $ref: /schemas/types.yaml#/definitions/uint32 description: Delay between access to memory banks in nano seconds. required: - compatible - reg - '#address-cells' - '#size-cells' - ranges - clocks - clock-names additionalProperties: false examples: - | #include memory-controller@40005000 { compatible = "arm,pl172", "arm,primecell"; reg = <0x40005000 0x1000>; clocks = <&ccu1 CLK_CPU_EMCDIV>, <&ccu1 CLK_CPU_EMC>; clock-names = "mpmcclk", "apb_pclk"; #address-cells = <2>; #size-cells = <1>; ranges = <0 0 0x1c000000 0x1000000 1 0 0x1d000000 0x1000000 2 0 0x1e000000 0x1000000 3 0 0x1f000000 0x1000000>; cs0 { #address-cells = <2>; #size-cells = <1>; ranges; mpmc,cs = <0>; mpmc,memory-width = <16>; mpmc,byte-lane-low; mpmc,write-enable-delay = <0>; mpmc,output-enable-delay = <0>; mpmc,read-enable-delay = <70>; mpmc,page-mode-read-delay = <70>; flash@0,0 { compatible = "sst,sst39vf320", "cfi-flash"; reg = <0 0 0x400000>; bank-width = <2>; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "data"; reg = <0 0x400000>; }; }; }; };