Device Tree Bindings for the Arasan SDHCI Controller

  The bindings follow the mmc[1], clock[2], interrupt[3] and phy[4] bindings.
  Only deviations are documented here.

  [1] Documentation/devicetree/bindings/mmc/mmc.txt
  [2] Documentation/devicetree/bindings/clock/clock-bindings.txt
  [3] Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
  [4] Documentation/devicetree/bindings/phy/phy-bindings.txt

Required Properties:
  - compatible: Compatibility string.  One of:
    - "arasan,sdhci-8.9a": generic Arasan SDHCI 8.9a PHY
    - "arasan,sdhci-4.9a": generic Arasan SDHCI 4.9a PHY
    - "arasan,sdhci-5.1": generic Arasan SDHCI 5.1 PHY
    - "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1": rk3399 eMMC PHY
      For this device it is strongly suggested to include arasan,soc-ctl-syscon.
    - "xlnx,zynqmp-8.9a": ZynqMP SDHCI 8.9a PHY
      For this device it is strongly suggested to include clock-output-names and
      #clock-cells.
    - "xlnx,versal-8.9a": Versal SDHCI 8.9a PHY
      For this device it is strongly suggested to include clock-output-names and
      #clock-cells.
    - "ti,am654-sdhci-5.1", "arasan,sdhci-5.1": TI AM654 MMC PHY
	Note: This binding has been deprecated and moved to [5].
    - "intel,lgm-sdhci-5.1-emmc", "arasan,sdhci-5.1": Intel LGM eMMC PHY
      For this device it is strongly suggested to include arasan,soc-ctl-syscon.
    - "intel,lgm-sdhci-5.1-sdxc", "arasan,sdhci-5.1": Intel LGM SDXC PHY
      For this device it is strongly suggested to include arasan,soc-ctl-syscon.
    - "intel,keembay-sdhci-5.1-emmc", "arasan,sdhci-5.1": Intel Keem Bay eMMC
      For this device it is strongly suggested to include arasan,soc-ctl-syscon.
    - "intel,keembay-sdhci-5.1-sd": Intel Keem Bay SD controller
      For this device it is strongly suggested to include arasan,soc-ctl-syscon.
    - "intel,keembay-sdhci-5.1-sdio": Intel Keem Bay SDIO controller
      For this device it is strongly suggested to include arasan,soc-ctl-syscon.

  [5] Documentation/devicetree/bindings/mmc/sdhci-am654.txt

  - reg: From mmc bindings: Register location and length.
  - clocks: From clock bindings: Handles to clock inputs.
  - clock-names: From clock bindings: Tuple including "clk_xin" and "clk_ahb"
  - interrupts: Interrupt specifier

Required Properties for "arasan,sdhci-5.1":
  - phys: From PHY bindings: Phandle for the Generic PHY for arasan.
  - phy-names:  MUST be "phy_arasan".

Optional Properties:
  - arasan,soc-ctl-syscon: A phandle to a syscon device (see ../mfd/syscon.txt)
    used to access core corecfg registers.  Offsets of registers in this
    syscon are determined based on the main compatible string for the device.
  - clock-output-names: If specified, this will be the name of the card clock
    which will be exposed by this device.  Required if #clock-cells is
    specified.
  - #clock-cells: If specified this should be the value <0> or <1>. With this
    property in place we will export one or two clocks representing the Card
    Clock. These clocks are expected to be consumed by our PHY.
  - xlnx,fails-without-test-cd: when present, the controller doesn't work when
    the CD line is not connected properly, and the line is not connected
    properly. Test mode can be used to force the controller to function.
  - xlnx,int-clock-stable-broken: when present, the controller always reports
    that the internal clock is stable even when it is not.

  - xlnx,mio-bank: When specified, this will indicate the MIO bank number in
    which the command and data lines are configured. If not specified, driver
    will assume this as 0.

Example:
	sdhci@e0100000 {
		compatible = "arasan,sdhci-8.9a";
		reg = <0xe0100000 0x1000>;
		clock-names = "clk_xin", "clk_ahb";
		clocks = <&clkc 21>, <&clkc 32>;
		interrupt-parent = <&gic>;
		interrupts = <0 24 4>;
	} ;

	sdhci@e2800000 {
		compatible = "arasan,sdhci-5.1";
		reg = <0xe2800000 0x1000>;
		clock-names = "clk_xin", "clk_ahb";
		clocks = <&cru 8>, <&cru 18>;
		interrupt-parent = <&gic>;
		interrupts = <0 24 4>;
		phys = <&emmc_phy>;
		phy-names = "phy_arasan";
	} ;

	sdhci: sdhci@fe330000 {
		compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
		reg = <0x0 0xfe330000 0x0 0x10000>;
		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&cru SCLK_EMMC>, <&cru ACLK_EMMC>;
		clock-names = "clk_xin", "clk_ahb";
		arasan,soc-ctl-syscon = <&grf>;
		assigned-clocks = <&cru SCLK_EMMC>;
		assigned-clock-rates = <200000000>;
		clock-output-names = "emmc_cardclock";
		phys = <&emmc_phy>;
		phy-names = "phy_arasan";
		#clock-cells = <0>;
	};

	sdhci: mmc@ff160000 {
		compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
		interrupt-parent = <&gic>;
		interrupts = <0 48 4>;
		reg = <0x0 0xff160000 0x0 0x1000>;
		clocks = <&clk200>, <&clk200>;
		clock-names = "clk_xin", "clk_ahb";
		clock-output-names = "clk_out_sd0", "clk_in_sd0";
		#clock-cells = <1>;
		clk-phase-sd-hs = <63>, <72>;
	};

	sdhci: mmc@f1040000 {
		compatible = "xlnx,versal-8.9a", "arasan,sdhci-8.9a";
		interrupt-parent = <&gic>;
		interrupts = <0 126 4>;
		reg = <0x0 0xf1040000 0x0 0x10000>;
		clocks = <&clk200>, <&clk200>;
		clock-names = "clk_xin", "clk_ahb";
		clock-output-names = "clk_out_sd0", "clk_in_sd0";
		#clock-cells = <1>;
		clk-phase-sd-hs = <132>, <60>;
	};

	emmc: sdhci@ec700000 {
		compatible = "intel,lgm-sdhci-5.1-emmc", "arasan,sdhci-5.1";
		reg = <0xec700000 0x300>;
		interrupt-parent = <&ioapic1>;
		interrupts = <44 1>;
		clocks = <&cgu0 LGM_CLK_EMMC5>, <&cgu0 LGM_CLK_NGI>,
			 <&cgu0 LGM_GCLK_EMMC>;
		clock-names = "clk_xin", "clk_ahb", "gate";
		clock-output-names = "emmc_cardclock";
		#clock-cells = <0>;
		phys = <&emmc_phy>;
		phy-names = "phy_arasan";
		arasan,soc-ctl-syscon = <&sysconf>;
	};

	sdxc: sdhci@ec600000 {
		compatible = "arasan,sdhci-5.1", "intel,lgm-sdhci-5.1-sdxc";
		reg = <0xec600000 0x300>;
		interrupt-parent = <&ioapic1>;
		interrupts = <43 1>;
		clocks = <&cgu0 LGM_CLK_SDIO>, <&cgu0 LGM_CLK_NGI>,
			 <&cgu0 LGM_GCLK_SDXC>;
		clock-names = "clk_xin", "clk_ahb", "gate";
		clock-output-names = "sdxc_cardclock";
		#clock-cells = <0>;
		phys = <&sdxc_phy>;
		phy-names = "phy_arasan";
		arasan,soc-ctl-syscon = <&sysconf>;
	};

	mmc: mmc@33000000 {
		compatible = "intel,keembay-sdhci-5.1-emmc", "arasan,sdhci-5.1";
		interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
		reg = <0x0 0x33000000 0x0 0x300>;
		clock-names = "clk_xin", "clk_ahb";
		clocks = <&scmi_clk KEEM_BAY_PSS_AUX_EMMC>,
			 <&scmi_clk KEEM_BAY_PSS_EMMC>;
		phys = <&emmc_phy>;
		phy-names = "phy_arasan";
		assigned-clocks = <&scmi_clk KEEM_BAY_PSS_AUX_EMMC>;
		assigned-clock-rates = <200000000>;
		clock-output-names = "emmc_cardclock";
		#clock-cells = <0>;
		arasan,soc-ctl-syscon = <&mmc_phy_syscon>;
	};

	sd0: mmc@31000000 {
		compatible = "intel,keembay-sdhci-5.1-sd";
		interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
		reg = <0x0 0x31000000 0x0 0x300>;
		clock-names = "clk_xin", "clk_ahb";
		clocks = <&scmi_clk KEEM_BAY_PSS_AUX_SD0>,
			 <&scmi_clk KEEM_BAY_PSS_SD0>;
		arasan,soc-ctl-syscon = <&sd0_phy_syscon>;
	};

	sd1: mmc@32000000 {
		compatible = "intel,keembay-sdhci-5.1-sdio";
		interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
		reg = <0x0 0x32000000 0x0 0x300>;
		clock-names = "clk_xin", "clk_ahb";
		clocks = <&scmi_clk KEEM_BAY_PSS_AUX_SD1>,
			 <&scmi_clk KEEM_BAY_PSS_SD1>;
		arasan,soc-ctl-syscon = <&sd1_phy_syscon>;
	};
