* Hisilicon Universal Flash Storage (UFS) Host Controller

UFS nodes are defined to describe on-chip UFS hardware macro.
Each UFS Host Controller should have its own node.

Required properties:
- compatible        : compatible list, contains one of the following -
					"hisilicon,hi3660-ufs", "jedec,ufs-1.1" for hisi ufs
					host controller present on Hi36xx chipset.
- reg               : should contain UFS register address space & UFS SYS CTRL register address,
- interrupt-parent  : interrupt device
- interrupts        : interrupt number
- clocks	        : List of phandle and clock specifier pairs
- clock-names       : List of clock input name strings sorted in the same
					order as the clocks property. "ref_clk", "phy_clk" is optional
- freq-table-hz     : Array of <min max> operating frequencies stored in the same
                      order as the clocks property. If this property is not
                      defined or a value in the array is "0" then it is assumed
                      that the frequency is set by the parent clock or a
                      fixed rate clock source.
- resets            : describe reset node register
- reset-names       : reset node register, the "rst" corresponds to reset the whole UFS IP.

Example:

	ufs: ufs@ff3b0000 {
		compatible = "hisilicon,hi3660-ufs", "jedec,ufs-1.1";
		/* 0: HCI standard */
		/* 1: UFS SYS CTRL */
		reg = <0x0 0xff3b0000 0x0 0x1000>,
			<0x0 0xff3b1000 0x0 0x1000>;
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&crg_ctrl HI3660_CLK_GATE_UFSIO_REF>,
			<&crg_ctrl HI3660_CLK_GATE_UFSPHY_CFG>;
		clock-names = "ref_clk", "phy_clk";
		freq-table-hz = <0 0>, <0 0>;
		/* offset: 0x84; bit: 12  */
		resets = <&crg_rst 0x84 12>;
		reset-names = "rst";
	};
