* Device tree bindings for Atmel EBI

The External Bus Interface (EBI) controller is a bus where you can connect
asynchronous (NAND, NOR, SRAM, ....) and synchronous memories (SDR/DDR SDRAMs).
The EBI provides a glue-less interface to asynchronous memories through the SMC
(Static Memory Controller).

Required properties:

- compatible:		"atmel,at91sam9260-ebi"
			"atmel,at91sam9261-ebi"
			"atmel,at91sam9263-ebi0"
			"atmel,at91sam9263-ebi1"
			"atmel,at91sam9rl-ebi"
			"atmel,at91sam9g45-ebi"
			"atmel,at91sam9x5-ebi"
			"atmel,sama5d3-ebi"

- reg:			Contains offset/length value for EBI memory mapping.
			This property might contain several entries if the EBI
			memory range is not contiguous

- #address-cells:	Must be 2.
			The first cell encodes the CS.
			The second cell encode the offset into the CS memory
			range.

- #size-cells:		Must be set to 1.

- ranges:		Encodes CS to memory region association.

- clocks:		Clock feeding the EBI controller.
			See clock-bindings.txt

Children device nodes are representing device connected to the EBI bus.

Required device node properties:

- reg:			Contains the chip-select id, the offset and the length
			of the memory region requested by the device.

EBI bus configuration will be defined directly in the device subnode.

Optional EBI/SMC properties:

- atmel,smc-bus-width:		width of the asynchronous device's data bus
				8, 16 or 32.
				Default to 8 when undefined.

- atmel,smc-byte-access-type	"write" or "select" (see Atmel datasheet).
				Default to "select" when undefined.

- atmel,smc-read-mode		"nrd" or "ncs".
				Default to "ncs" when undefined.

- atmel,smc-write-mode		"nwe" or "ncs".
				Default to "ncs" when undefined.

- atmel,smc-exnw-mode		"disabled", "frozen" or "ready".
				Default to "disabled" when undefined.

- atmel,smc-page-mode		enable page mode if present. The provided value
				defines the page size (supported values: 4, 8,
				16 and 32).

- atmel,smc-tdf-mode:		"normal" or "optimized". When set to
				"optimized" the data float time is optimized
				depending on the next device being accessed
				(next device setup time is subtracted to the
				current device data float time).
				Default to "normal" when undefined.

If at least one atmel,smc- property is defined the following SMC timing
properties become mandatory. In the other hand, if none of the atmel,smc-
properties are specified, we assume that the EBI bus configuration will be
handled by the sub-device driver, and none of those properties should be
defined.

All the timings are expressed in nanoseconds (see Atmel datasheet for a full
description).

- atmel,smc-ncs-rd-setup-ns
- atmel,smc-nrd-setup-ns
- atmel,smc-ncs-wr-setup-ns
- atmel,smc-nwe-setup-ns
- atmel,smc-ncs-rd-pulse-ns
- atmel,smc-nrd-pulse-ns
- atmel,smc-ncs-wr-pulse-ns
- atmel,smc-nwe-pulse-ns
- atmel,smc-nwe-cycle-ns
- atmel,smc-nrd-cycle-ns
- atmel,smc-tdf-ns

Example:

	ebi: ebi@10000000 {
		compatible = "atmel,sama5d3-ebi";
		#address-cells = <2>;
		#size-cells = <1>;
		atmel,smc = <&hsmc>;
		atmel,matrix = <&matrix>;
		reg = <0x10000000 0x10000000
		       0x40000000 0x30000000>;
		ranges = <0x0 0x0 0x10000000 0x10000000
			  0x1 0x0 0x40000000 0x10000000
			  0x2 0x0 0x50000000 0x10000000
			  0x3 0x0 0x60000000 0x10000000>;
		clocks = <&mck>;

		pinctrl-names = "default";
		pinctrl-0 = <&pinctrl_ebi_addr>;

		nor: flash@0,0 {
			compatible = "cfi-flash";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0x0 0x0 0x1000000>;
			bank-width = <2>;

			atmel,smc-read-mode = "nrd";
			atmel,smc-write-mode = "nwe";
			atmel,smc-bus-width = <16>;
			atmel,smc-ncs-rd-setup-ns = <0>;
			atmel,smc-ncs-wr-setup-ns = <0>;
			atmel,smc-nwe-setup-ns = <8>;
			atmel,smc-nrd-setup-ns = <16>;
			atmel,smc-ncs-rd-pulse-ns = <84>;
			atmel,smc-ncs-wr-pulse-ns = <84>;
			atmel,smc-nrd-pulse-ns = <76>;
			atmel,smc-nwe-pulse-ns = <76>;
			atmel,smc-nrd-cycle-ns = <107>;
			atmel,smc-nwe-cycle-ns = <84>;
			atmel,smc-tdf-ns = <16>;
		};
	};

