External Memory Interface
-------------------------

The emifa node describes a simple external bus controller found on some C6X
SoCs. This interface provides external busses with a number of chip selects.

Required properties:

- compatible: must be "ti,c64x+emifa", "simple-bus"
- reg: register area base and size
- #address-cells: must be 2 (chip-select + offset)
- #size-cells: must be 1
- ranges: mapping from EMIFA space to parent space


Optional properties:

- ti,dscr-dev-enable: Device ID if EMIF is enabled/disabled from DSCR

- ti,emifa-burst-priority:
      Number of memory transfers after which the EMIF will elevate the priority
      of the oldest command in the command FIFO. Setting this field to 255
      disables this feature, thereby allowing old commands to stay in the FIFO
      indefinitely.

- ti,emifa-ce-config:
      Configuration values for each of the supported chip selects.

Example:

	emifa@70000000 {
		compatible = "ti,c64x+emifa", "simple-bus";
		#address-cells = <2>;
		#size-cells = <1>;
		reg = <0x70000000 0x100>;
		ranges = <0x2 0x0 0xa0000000 0x00000008
		          0x3 0x0 0xb0000000 0x00400000
			  0x4 0x0 0xc0000000 0x10000000
			  0x5 0x0 0xD0000000 0x10000000>;

		ti,dscr-dev-enable = <13>;
		ti,emifa-burst-priority = <255>;
		ti,emifa-ce-config = <0x00240120
				      0x00240120
				      0x00240122
				      0x00240122>;

		flash@3,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "cfi-flash";
			reg = <0x3 0x0 0x400000>;
			bank-width = <1>;
			device-width = <1>;
			partition@0 {
				reg = <0x0 0x400000>;
				label = "NOR";
			};
		};
	};

This shows a flash chip attached to chip select 3.
