1*961a86d2SVladimir Zapolskiy* Device tree bindings for ARM PL172/PL175/PL176 MultiPort Memory Controller 218eb5e9fSJoachim Eastwood 318eb5e9fSJoachim EastwoodRequired properties: 418eb5e9fSJoachim Eastwood 5*961a86d2SVladimir Zapolskiy- compatible: Must be "arm,primecell" and exactly one from 6*961a86d2SVladimir Zapolskiy "arm,pl172", "arm,pl175" or "arm,pl176". 718eb5e9fSJoachim Eastwood 818eb5e9fSJoachim Eastwood- reg: Must contains offset/length value for controller. 918eb5e9fSJoachim Eastwood 1018eb5e9fSJoachim Eastwood- #address-cells: Must be 2. The partition number has to be encoded in the 1118eb5e9fSJoachim Eastwood first address cell and it may accept values 0..N-1 1218eb5e9fSJoachim Eastwood (N - total number of partitions). The second cell is the 1318eb5e9fSJoachim Eastwood offset into the partition. 1418eb5e9fSJoachim Eastwood 1518eb5e9fSJoachim Eastwood- #size-cells: Must be set to 1. 1618eb5e9fSJoachim Eastwood 1718eb5e9fSJoachim Eastwood- ranges: Must contain one or more chip select memory regions. 1818eb5e9fSJoachim Eastwood 1918eb5e9fSJoachim Eastwood- clocks: Must contain references to controller clocks. 2018eb5e9fSJoachim Eastwood 2118eb5e9fSJoachim Eastwood- clock-names: Must contain "mpmcclk" and "apb_pclk". 2218eb5e9fSJoachim Eastwood 2318eb5e9fSJoachim Eastwood- clock-ranges: Empty property indicating that child nodes can inherit 2418eb5e9fSJoachim Eastwood named clocks. Required only if clock tree data present 2518eb5e9fSJoachim Eastwood in device tree. 2618eb5e9fSJoachim Eastwood See clock-bindings.txt 2718eb5e9fSJoachim Eastwood 2818eb5e9fSJoachim EastwoodChild chip-select (cs) nodes contain the memory devices nodes connected to 2918eb5e9fSJoachim Eastwoodsuch as NOR (e.g. cfi-flash) and NAND. 3018eb5e9fSJoachim Eastwood 3118eb5e9fSJoachim EastwoodRequired child cs node properties: 3218eb5e9fSJoachim Eastwood 3318eb5e9fSJoachim Eastwood- #address-cells: Must be 2. 3418eb5e9fSJoachim Eastwood 3518eb5e9fSJoachim Eastwood- #size-cells: Must be 1. 3618eb5e9fSJoachim Eastwood 3718eb5e9fSJoachim Eastwood- ranges: Empty property indicating that child nodes can inherit 3818eb5e9fSJoachim Eastwood memory layout. 3918eb5e9fSJoachim Eastwood 4018eb5e9fSJoachim Eastwood- clock-ranges: Empty property indicating that child nodes can inherit 4118eb5e9fSJoachim Eastwood named clocks. Required only if clock tree data present 4218eb5e9fSJoachim Eastwood in device tree. 4318eb5e9fSJoachim Eastwood 4418eb5e9fSJoachim Eastwood- mpmc,cs: Chip select number. Indicates to the pl0172 driver 4518eb5e9fSJoachim Eastwood which chipselect is used for accessing the memory. 4618eb5e9fSJoachim Eastwood 4718eb5e9fSJoachim Eastwood- mpmc,memory-width: Width of the chip select memory. Must be equal to 4818eb5e9fSJoachim Eastwood either 8, 16 or 32. 4918eb5e9fSJoachim Eastwood 5018eb5e9fSJoachim EastwoodOptional child cs node config properties: 5118eb5e9fSJoachim Eastwood 5218eb5e9fSJoachim Eastwood- mpmc,async-page-mode: Enable asynchronous page mode. 5318eb5e9fSJoachim Eastwood 5418eb5e9fSJoachim Eastwood- mpmc,cs-active-high: Set chip select polarity to active high. 5518eb5e9fSJoachim Eastwood 5618eb5e9fSJoachim Eastwood- mpmc,byte-lane-low: Set byte lane state to low. 5718eb5e9fSJoachim Eastwood 5818eb5e9fSJoachim Eastwood- mpmc,extended-wait: Enable extended wait. 5918eb5e9fSJoachim Eastwood 60*961a86d2SVladimir Zapolskiy- mpmc,buffer-enable: Enable write buffer, option is not supported by 61*961a86d2SVladimir Zapolskiy PL175 and PL176 controllers. 6218eb5e9fSJoachim Eastwood 6318eb5e9fSJoachim Eastwood- mpmc,write-protect: Enable write protect. 6418eb5e9fSJoachim Eastwood 6518eb5e9fSJoachim EastwoodOptional child cs node timing properties: 6618eb5e9fSJoachim Eastwood 6718eb5e9fSJoachim Eastwood- mpmc,write-enable-delay: Delay from chip select assertion to write 6818eb5e9fSJoachim Eastwood enable (WE signal) in nano seconds. 6918eb5e9fSJoachim Eastwood 7018eb5e9fSJoachim Eastwood- mpmc,output-enable-delay: Delay from chip select assertion to output 7118eb5e9fSJoachim Eastwood enable (OE signal) in nano seconds. 7218eb5e9fSJoachim Eastwood 7318eb5e9fSJoachim Eastwood- mpmc,write-access-delay: Delay from chip select assertion to write 7418eb5e9fSJoachim Eastwood access in nano seconds. 7518eb5e9fSJoachim Eastwood 7618eb5e9fSJoachim Eastwood- mpmc,read-access-delay: Delay from chip select assertion to read 7718eb5e9fSJoachim Eastwood access in nano seconds. 7818eb5e9fSJoachim Eastwood 7918eb5e9fSJoachim Eastwood- mpmc,page-mode-read-delay: Delay for asynchronous page mode sequential 8018eb5e9fSJoachim Eastwood accesses in nano seconds. 8118eb5e9fSJoachim Eastwood 8218eb5e9fSJoachim Eastwood- mpmc,turn-round-delay: Delay between access to memory banks in nano 8318eb5e9fSJoachim Eastwood seconds. 8418eb5e9fSJoachim Eastwood 8518eb5e9fSJoachim EastwoodIf any of the above timing parameters are absent, current parameter value will 8618eb5e9fSJoachim Eastwoodbe taken from the corresponding HW reg. 8718eb5e9fSJoachim Eastwood 8818eb5e9fSJoachim EastwoodExample for pl172 with nor flash on chip select 0 shown below. 8918eb5e9fSJoachim Eastwood 9018eb5e9fSJoachim Eastwoodemc: memory-controller@40005000 { 9118eb5e9fSJoachim Eastwood compatible = "arm,pl172", "arm,primecell"; 9218eb5e9fSJoachim Eastwood reg = <0x40005000 0x1000>; 9318eb5e9fSJoachim Eastwood clocks = <&ccu1 CLK_CPU_EMCDIV>, <&ccu1 CLK_CPU_EMC>; 9418eb5e9fSJoachim Eastwood clock-names = "mpmcclk", "apb_pclk"; 9518eb5e9fSJoachim Eastwood #address-cells = <2>; 9618eb5e9fSJoachim Eastwood #size-cells = <1>; 9718eb5e9fSJoachim Eastwood ranges = <0 0 0x1c000000 0x1000000 9818eb5e9fSJoachim Eastwood 1 0 0x1d000000 0x1000000 9918eb5e9fSJoachim Eastwood 2 0 0x1e000000 0x1000000 10018eb5e9fSJoachim Eastwood 3 0 0x1f000000 0x1000000>; 10118eb5e9fSJoachim Eastwood 10218eb5e9fSJoachim Eastwood cs0 { 10318eb5e9fSJoachim Eastwood #address-cells = <2>; 10418eb5e9fSJoachim Eastwood #size-cells = <1>; 10518eb5e9fSJoachim Eastwood ranges; 10618eb5e9fSJoachim Eastwood 10718eb5e9fSJoachim Eastwood mpmc,cs = <0>; 10818eb5e9fSJoachim Eastwood mpmc,memory-width = <16>; 10918eb5e9fSJoachim Eastwood mpmc,byte-lane-low; 11018eb5e9fSJoachim Eastwood mpmc,write-enable-delay = <0>; 11118eb5e9fSJoachim Eastwood mpmc,output-enable-delay = <0>; 11218eb5e9fSJoachim Eastwood mpmc,read-enable-delay = <70>; 11318eb5e9fSJoachim Eastwood mpmc,page-mode-read-delay = <70>; 11418eb5e9fSJoachim Eastwood 11518eb5e9fSJoachim Eastwood flash@0,0 { 11618eb5e9fSJoachim Eastwood compatible = "sst,sst39vf320", "cfi-flash"; 11718eb5e9fSJoachim Eastwood reg = <0 0 0x400000>; 11818eb5e9fSJoachim Eastwood bank-width = <2>; 11918eb5e9fSJoachim Eastwood #address-cells = <1>; 12018eb5e9fSJoachim Eastwood #size-cells = <1>; 12118eb5e9fSJoachim Eastwood partition@0 { 12218eb5e9fSJoachim Eastwood label = "data"; 12318eb5e9fSJoachim Eastwood reg = <0 0x400000>; 12418eb5e9fSJoachim Eastwood }; 12518eb5e9fSJoachim Eastwood }; 12618eb5e9fSJoachim Eastwood }; 12718eb5e9fSJoachim Eastwood}; 128