File Index
Files and directories
Sign in
FILE

ti-aemif.txt

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt PLAIN TEXT
  1* Device tree bindings for Texas instruments AEMIF controller
  2
  3The Async External Memory Interface (EMIF16/AEMIF) controller is intended to
  4provide a glue-less interface to a variety of asynchronous memory devices like
  5ASRA M, NOR and NAND memory. A total of 256M bytes of any of these memories
  6can be accessed at any given time via four chip selects with 64M byte access
  7per chip select. Synchronous memories such as DDR1 SD RAM, SDR SDRAM
  8and Mobile SDR are not supported.
  9
 10Documentation:
 11Davinci DM646x - http://www.ti.com/lit/ug/sprueq7c/sprueq7c.pdf
 12OMAP-L138 (DA850) - http://www.ti.com/lit/ug/spruh77a/spruh77a.pdf
 13Kestone - http://www.ti.com/lit/ug/sprugz3a/sprugz3a.pdf
 14
 15Required properties:
 16
 17- compatible:		"ti,davinci-aemif"
 18			"ti,keystone-aemif"
 19			"ti,da850-aemif"
 20
 21- reg:			contains offset/length value for AEMIF control registers
 22			space.
 23
 24- #address-cells:	Must be 2. The partition number has to be encoded in the
 25			first address cell and it may accept values 0..N-1
 26			(N - total number of partitions). It's recommended to
 27			assign N-1 number for the control partition. The second
 28			cell is the offset into the partition.
 29
 30- #size-cells:		Must be set to 1.
 31
 32- ranges:		Contains memory regions. There are two types of
 33			ranges/partitions:
 34			- CS-specific partition/range. If continuous, must be
 35			set up to reflect the memory layout for 4 chipselects,
 36			if not then additional range/partition can be added and
 37			child device can select the proper one.
 38			- control partition which is common for all CS
 39			interfaces.
 40
 41- clocks:		the clock feeding the controller clock. Required only
 42			if clock tree data present in device tree.
 43			See clock-bindings.txt
 44
 45- clock-names:		clock name. It has to be "aemif". Required only if clock
 46			tree data present in device tree, in another case don't
 47			use it.
 48			See clock-bindings.txt
 49
 50- clock-ranges:		Empty property indicating that child nodes can inherit
 51			named clocks. Required only if clock tree data present
 52			in device tree.
 53			See clock-bindings.txt
 54
 55
 56Child chip-select (cs) nodes contain the memory devices nodes connected to
 57such as NOR (e.g. cfi-flash) and NAND (ti,davinci-nand, see davinci-nand.txt).
 58There might be board specific devices like FPGAs.
 59
 60Required child cs node properties:
 61
 62- #address-cells:	Must be 2.
 63
 64- #size-cells:		Must be 1.
 65
 66- ranges:		Empty property indicating that child nodes can inherit
 67			memory layout.
 68
 69- clock-ranges:		Empty property indicating that child nodes can inherit
 70			named clocks. Required only if clock tree data present
 71			in device tree.
 72
 73- ti,cs-chipselect:	number of chipselect. Indicates on the aemif driver
 74			which chipselect is used for accessing the memory. For
 75			compatibles "ti,davinci-aemif" and "ti,keystone-aemif"
 76			it can be in range [0-3]. For compatible
 77			"ti,da850-aemif" range is [2-5].
 78
 79Optional child cs node properties:
 80
 81- ti,cs-bus-width:		width of the asynchronous device's data bus
 82				8 or 16 if not preset 8
 83
 84- ti,cs-select-strobe-mode:	enable/disable select strobe mode
 85				In select strobe mode chip select behaves as
 86				the strobe and is active only during the strobe
 87				period. If present then enable.
 88
 89- ti,cs-extended-wait-mode:	enable/disable extended wait mode
 90				if set, the controller monitors the EMIFWAIT pin
 91				mapped to that chip select to determine if the
 92				device wants to extend the strobe period. If
 93				present then enable.
 94
 95- ti,cs-min-turnaround-ns:	minimum turn around time, ns
 96				Time between the end of one asynchronous memory
 97				access and the start of another asynchronous
 98				memory access. This delay is not incurred
 99				between a read followed by read or a write
100				followed by a write to same chip select.
101
102- ti,cs-read-setup-ns:		read setup width, ns
103				Time between the beginning of a memory cycle
104				and the activation of read strobe.
105				Minimum value is 1 (0 treated as 1).
106
107- ti,cs-read-strobe-ns:		read strobe width, ns
108				Time between the activation and deactivation of
109				the read strobe.
110				Minimum value is 1 (0 treated as 1).
111
112- ti,cs-read-hold-ns:		read hold width, ns
113				Time between the deactivation of the read
114				strobe and the end of the cycle (which may be
115				either an address change or the deactivation of
116				the chip select signal.
117				Minimum value is 1 (0 treated as 1).
118
119- ti,cs-write-setup-ns:		write setup width, ns
120				Time between the beginning of a memory cycle
121				and the activation of write strobe.
122				Minimum value is 1 (0 treated as 1).
123
124- ti,cs-write-strobe-ns:	write strobe width, ns
125				Time between the activation and deactivation of
126				the write strobe.
127				Minimum value is 1 (0 treated as 1).
128
129- ti,cs-write-hold-ns:		write hold width, ns
130				Time between the deactivation of the write
131				strobe and the end of the cycle (which may be
132				either an address change or the deactivation of
133				the chip select signal.
134				Minimum value is 1 (0 treated as 1).
135
136If any of the above parameters are absent, current parameter value will be taken
137from the corresponding HW reg.
138
139Example for aemif, davinci nand and nor flash chip select shown below.
140
141memory-controller@21000a00 {
142	compatible = "ti,davinci-aemif";
143	#address-cells = <2>;
144	#size-cells = <1>;
145	clocks = <&clkaemif 0>;
146	clock-names = "aemif";
147	clock-ranges;
148	reg = <0x21000A00 0x00000100>;
149	ranges = <0 0 0x70000000 0x10000000
150		  1 0 0x21000A00 0x00000100>;
151		  /*
152		   * Partition0: CS-specific memory range which is
153		   * implemented as continuous physical memory region
154		   * Partition1: control memory range
155		   */
156
157	nand:cs2 {
158		#address-cells = <2>;
159		#size-cells = <1>;
160		clock-ranges;
161		ranges;
162
163		ti,cs-chipselect = <2>;
164		/* all timings in nanoseconds */
165		ti,cs-min-turnaround-ns = <0>;
166		ti,cs-read-hold-ns = <7>;
167		ti,cs-read-strobe-ns = <42>;
168		ti,cs-read-setup-ns = <14>;
169		ti,cs-write-hold-ns = <7>;
170		ti,cs-write-strobe-ns = <42>;
171		ti,cs-write-setup-ns = <14>;
172
173		nand@0,0x8000000 {
174			compatible = "ti,davinci-nand";
175			reg = <0 0x8000000 0x4000000
176			       1 0x0000000 0x0000100>;
177			/*
178			 * Partition0, offset 0x8000000, size 0x4000000
179			 * Partition1, offset 0x0000000, size 0x0000100
180			 */
181
182			.. see davinci-nand.txt
183		};
184	};
185
186	nor:cs0 {
187		#address-cells = <2>;
188		#size-cells = <1>;
189		clock-ranges;
190		ranges;
191
192		ti,cs-chipselect = <0>;
193		/* all timings in nanoseconds */
194		ti,cs-min-turnaround-ns = <0>;
195		ti,cs-read-hold-ns = <8>;
196		ti,cs-read-strobe-ns = <40>;
197		ti,cs-read-setup-ns = <14>;
198		ti,cs-write-hold-ns = <7>;
199		ti,cs-write-strobe-ns = <40>;
200		ti,cs-write-setup-ns = <14>;
201		ti,cs-bus-width = <16>;
202
203		flash@0,0x0000000 {
204			compatible = "cfi-flash";
205			reg = <0 0x0000000 0x4000000>;
206
207			...
208		};
209	};
210};
~/ Read-only file preview.