| # 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 <Frank.Li@nxp.com> |
| |
| # 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 <dt-bindings/clock/lpc18xx-ccu.h> |
| |
| 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>; |
| }; |
| }; |
| }; |
| }; |