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