| * Device tree bindings for ARM PL172/PL175/PL176 MultiPort Memory Controller | |
| Required properties: | |
| - compatible: Must be "arm,primecell" and exactly one from | |
| "arm,pl172", "arm,pl175" or "arm,pl176". | |
| - reg: Must contains offset/length value for controller. | |
| - #address-cells: Must be 2. The partition number has to be encoded in the | |
| first address cell and it may accept values 0..N-1 | |
| (N - total number of partitions). The second cell is the | |
| offset into the partition. | |
| - #size-cells: Must be set to 1. | |
| - ranges: Must contain one or more chip select memory regions. | |
| - clocks: Must contain references to controller clocks. | |
| - clock-names: Must contain "mpmcclk" and "apb_pclk". | |
| - clock-ranges: Empty property indicating that child nodes can inherit | |
| named clocks. Required only if clock tree data present | |
| in device tree. | |
| See clock-bindings.txt | |
| Child chip-select (cs) nodes contain the memory devices nodes connected to | |
| such as NOR (e.g. cfi-flash) and NAND. | |
| Required child cs node properties: | |
| - #address-cells: Must be 2. | |
| - #size-cells: Must be 1. | |
| - ranges: Empty property indicating that child nodes can inherit | |
| memory layout. | |
| - clock-ranges: Empty property indicating that child nodes can inherit | |
| named clocks. Required only if clock tree data present | |
| in device tree. | |
| - mpmc,cs: Chip select number. Indicates to the pl0172 driver | |
| which chipselect is used for accessing the memory. | |
| - mpmc,memory-width: Width of the chip select memory. Must be equal to | |
| either 8, 16 or 32. | |
| Optional child cs node config properties: | |
| - mpmc,async-page-mode: Enable asynchronous page mode. | |
| - mpmc,cs-active-high: Set chip select polarity to active high. | |
| - mpmc,byte-lane-low: Set byte lane state to low. | |
| - mpmc,extended-wait: Enable extended wait. | |
| - mpmc,buffer-enable: Enable write buffer, option is not supported by | |
| PL175 and PL176 controllers. | |
| - mpmc,write-protect: Enable write protect. | |
| Optional child cs node timing properties: | |
| - mpmc,write-enable-delay: Delay from chip select assertion to write | |
| enable (WE signal) in nano seconds. | |
| - mpmc,output-enable-delay: Delay from chip select assertion to output | |
| enable (OE signal) in nano seconds. | |
| - mpmc,write-access-delay: Delay from chip select assertion to write | |
| access in nano seconds. | |
| - mpmc,read-access-delay: Delay from chip select assertion to read | |
| access in nano seconds. | |
| - mpmc,page-mode-read-delay: Delay for asynchronous page mode sequential | |
| accesses in nano seconds. | |
| - mpmc,turn-round-delay: Delay between access to memory banks in nano | |
| seconds. | |
| If any of the above timing parameters are absent, current parameter value will | |
| be taken from the corresponding HW reg. | |
| Example for pl172 with nor flash on chip select 0 shown below. | |
| emc: 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>; | |
| }; | |
| }; | |
| }; | |
| }; |