xref: /linux/Documentation/devicetree/bindings/memory-controllers/arm,pl172.txt (revision 9938b04472d5c59f8bd8152a548533a8599596a2)
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