11fdab21dSBoris Brezillon* Device tree bindings for Atmel EBI
21fdab21dSBoris Brezillon
31fdab21dSBoris BrezillonThe External Bus Interface (EBI) controller is a bus where you can connect
41fdab21dSBoris Brezillonasynchronous (NAND, NOR, SRAM, ....) and synchronous memories (SDR/DDR SDRAMs).
51fdab21dSBoris BrezillonThe EBI provides a glue-less interface to asynchronous memories through the SMC
61fdab21dSBoris Brezillon(Static Memory Controller).
71fdab21dSBoris Brezillon
81fdab21dSBoris BrezillonRequired properties:
91fdab21dSBoris Brezillon
101fdab21dSBoris Brezillon- compatible:		"atmel,at91sam9260-ebi"
111fdab21dSBoris Brezillon			"atmel,at91sam9261-ebi"
121fdab21dSBoris Brezillon			"atmel,at91sam9263-ebi0"
131fdab21dSBoris Brezillon			"atmel,at91sam9263-ebi1"
141fdab21dSBoris Brezillon			"atmel,at91sam9rl-ebi"
151fdab21dSBoris Brezillon			"atmel,at91sam9g45-ebi"
161fdab21dSBoris Brezillon			"atmel,at91sam9x5-ebi"
171fdab21dSBoris Brezillon			"atmel,sama5d3-ebi"
18996acbfbSTudor Ambarus			"microchip,sam9x60-ebi"
191fdab21dSBoris Brezillon
201fdab21dSBoris Brezillon- reg:			Contains offset/length value for EBI memory mapping.
211fdab21dSBoris Brezillon			This property might contain several entries if the EBI
221fdab21dSBoris Brezillon			memory range is not contiguous
231fdab21dSBoris Brezillon
241fdab21dSBoris Brezillon- #address-cells:	Must be 2.
251fdab21dSBoris Brezillon			The first cell encodes the CS.
261fdab21dSBoris Brezillon			The second cell encode the offset into the CS memory
271fdab21dSBoris Brezillon			range.
281fdab21dSBoris Brezillon
291fdab21dSBoris Brezillon- #size-cells:		Must be set to 1.
301fdab21dSBoris Brezillon
311fdab21dSBoris Brezillon- ranges:		Encodes CS to memory region association.
321fdab21dSBoris Brezillon
331fdab21dSBoris Brezillon- clocks:		Clock feeding the EBI controller.
341fdab21dSBoris Brezillon			See clock-bindings.txt
351fdab21dSBoris Brezillon
361fdab21dSBoris BrezillonChildren device nodes are representing device connected to the EBI bus.
371fdab21dSBoris Brezillon
381fdab21dSBoris BrezillonRequired device node properties:
391fdab21dSBoris Brezillon
401fdab21dSBoris Brezillon- reg:			Contains the chip-select id, the offset and the length
411fdab21dSBoris Brezillon			of the memory region requested by the device.
421fdab21dSBoris Brezillon
431fdab21dSBoris BrezillonEBI bus configuration will be defined directly in the device subnode.
441fdab21dSBoris Brezillon
451fdab21dSBoris BrezillonOptional EBI/SMC properties:
461fdab21dSBoris Brezillon
471fdab21dSBoris Brezillon- atmel,smc-bus-width:		width of the asynchronous device's data bus
481fdab21dSBoris Brezillon				8, 16 or 32.
491fdab21dSBoris Brezillon				Default to 8 when undefined.
501fdab21dSBoris Brezillon
511fdab21dSBoris Brezillon- atmel,smc-byte-access-type	"write" or "select" (see Atmel datasheet).
521fdab21dSBoris Brezillon				Default to "select" when undefined.
531fdab21dSBoris Brezillon
541fdab21dSBoris Brezillon- atmel,smc-read-mode		"nrd" or "ncs".
551fdab21dSBoris Brezillon				Default to "ncs" when undefined.
561fdab21dSBoris Brezillon
571fdab21dSBoris Brezillon- atmel,smc-write-mode		"nwe" or "ncs".
581fdab21dSBoris Brezillon				Default to "ncs" when undefined.
591fdab21dSBoris Brezillon
601fdab21dSBoris Brezillon- atmel,smc-exnw-mode		"disabled", "frozen" or "ready".
611fdab21dSBoris Brezillon				Default to "disabled" when undefined.
621fdab21dSBoris Brezillon
631fdab21dSBoris Brezillon- atmel,smc-page-mode		enable page mode if present. The provided value
641fdab21dSBoris Brezillon				defines the page size (supported values: 4, 8,
651fdab21dSBoris Brezillon				16 and 32).
661fdab21dSBoris Brezillon
671fdab21dSBoris Brezillon- atmel,smc-tdf-mode:		"normal" or "optimized". When set to
681fdab21dSBoris Brezillon				"optimized" the data float time is optimized
691fdab21dSBoris Brezillon				depending on the next device being accessed
701fdab21dSBoris Brezillon				(next device setup time is subtracted to the
711fdab21dSBoris Brezillon				current device data float time).
721fdab21dSBoris Brezillon				Default to "normal" when undefined.
731fdab21dSBoris Brezillon
741fdab21dSBoris BrezillonIf at least one atmel,smc- property is defined the following SMC timing
751fdab21dSBoris Brezillonproperties become mandatory. In the other hand, if none of the atmel,smc-
761fdab21dSBoris Brezillonproperties are specified, we assume that the EBI bus configuration will be
771fdab21dSBoris Brezillonhandled by the sub-device driver, and none of those properties should be
781fdab21dSBoris Brezillondefined.
791fdab21dSBoris Brezillon
801fdab21dSBoris BrezillonAll the timings are expressed in nanoseconds (see Atmel datasheet for a full
811fdab21dSBoris Brezillondescription).
821fdab21dSBoris Brezillon
831fdab21dSBoris Brezillon- atmel,smc-ncs-rd-setup-ns
841fdab21dSBoris Brezillon- atmel,smc-nrd-setup-ns
851fdab21dSBoris Brezillon- atmel,smc-ncs-wr-setup-ns
861fdab21dSBoris Brezillon- atmel,smc-nwe-setup-ns
871fdab21dSBoris Brezillon- atmel,smc-ncs-rd-pulse-ns
881fdab21dSBoris Brezillon- atmel,smc-nrd-pulse-ns
891fdab21dSBoris Brezillon- atmel,smc-ncs-wr-pulse-ns
901fdab21dSBoris Brezillon- atmel,smc-nwe-pulse-ns
911fdab21dSBoris Brezillon- atmel,smc-nwe-cycle-ns
921fdab21dSBoris Brezillon- atmel,smc-nrd-cycle-ns
931fdab21dSBoris Brezillon- atmel,smc-tdf-ns
941fdab21dSBoris Brezillon
951fdab21dSBoris BrezillonExample:
961fdab21dSBoris Brezillon
971fdab21dSBoris Brezillon	ebi: ebi@10000000 {
981fdab21dSBoris Brezillon		compatible = "atmel,sama5d3-ebi";
991fdab21dSBoris Brezillon		#address-cells = <2>;
1001fdab21dSBoris Brezillon		#size-cells = <1>;
1011fdab21dSBoris Brezillon		atmel,smc = <&hsmc>;
1021fdab21dSBoris Brezillon		atmel,matrix = <&matrix>;
1031fdab21dSBoris Brezillon		reg = <0x10000000 0x10000000
1041fdab21dSBoris Brezillon		       0x40000000 0x30000000>;
1051fdab21dSBoris Brezillon		ranges = <0x0 0x0 0x10000000 0x10000000
1061fdab21dSBoris Brezillon			  0x1 0x0 0x40000000 0x10000000
1071fdab21dSBoris Brezillon			  0x2 0x0 0x50000000 0x10000000
1081fdab21dSBoris Brezillon			  0x3 0x0 0x60000000 0x10000000>;
1091fdab21dSBoris Brezillon		clocks = <&mck>;
1101fdab21dSBoris Brezillon
1111fdab21dSBoris Brezillon		pinctrl-names = "default";
1121fdab21dSBoris Brezillon		pinctrl-0 = <&pinctrl_ebi_addr>;
1131fdab21dSBoris Brezillon
1141fdab21dSBoris Brezillon		nor: flash@0,0 {
1151fdab21dSBoris Brezillon			compatible = "cfi-flash";
1161fdab21dSBoris Brezillon			#address-cells = <1>;
1171fdab21dSBoris Brezillon			#size-cells = <1>;
1181fdab21dSBoris Brezillon			reg = <0x0 0x0 0x1000000>;
1191fdab21dSBoris Brezillon			bank-width = <2>;
1201fdab21dSBoris Brezillon
1211fdab21dSBoris Brezillon			atmel,smc-read-mode = "nrd";
1221fdab21dSBoris Brezillon			atmel,smc-write-mode = "nwe";
1231fdab21dSBoris Brezillon			atmel,smc-bus-width = <16>;
1241fdab21dSBoris Brezillon			atmel,smc-ncs-rd-setup-ns = <0>;
1251fdab21dSBoris Brezillon			atmel,smc-ncs-wr-setup-ns = <0>;
1261fdab21dSBoris Brezillon			atmel,smc-nwe-setup-ns = <8>;
1271fdab21dSBoris Brezillon			atmel,smc-nrd-setup-ns = <16>;
1281fdab21dSBoris Brezillon			atmel,smc-ncs-rd-pulse-ns = <84>;
1291fdab21dSBoris Brezillon			atmel,smc-ncs-wr-pulse-ns = <84>;
1301fdab21dSBoris Brezillon			atmel,smc-nrd-pulse-ns = <76>;
1311fdab21dSBoris Brezillon			atmel,smc-nwe-pulse-ns = <76>;
1321fdab21dSBoris Brezillon			atmel,smc-nrd-cycle-ns = <107>;
1331fdab21dSBoris Brezillon			atmel,smc-nwe-cycle-ns = <84>;
1341fdab21dSBoris Brezillon			atmel,smc-tdf-ns = <16>;
1351fdab21dSBoris Brezillon		};
1361fdab21dSBoris Brezillon	};
1371fdab21dSBoris Brezillon
138