* TI Highspeed MMC host controller for OMAP and 66AK2G family.

The Highspeed MMC Host Controller on TI OMAP and 66AK2G family
provides an interface for MMC, SD, and SDIO types of memory cards.

This file documents differences between the core properties described
by mmc.txt and the properties used by the omap_hsmmc driver.

Required properties:
--------------------
- compatible:
 Should be "ti,omap2-hsmmc", for OMAP2 controllers
 Should be "ti,omap3-hsmmc", for OMAP3 controllers
 Should be "ti,omap3-pre-es3-hsmmc" for OMAP3 controllers pre ES3.0
 Should be "ti,omap4-hsmmc", for OMAP4 controllers
 Should be "ti,am33xx-hsmmc", for AM335x controllers
 Should be "ti,k2g-hsmmc", "ti,omap4-hsmmc" for 66AK2G controllers.

SoC specific required properties:
---------------------------------
The following are mandatory properties for OMAPs, AM33xx and AM43xx SoCs only:
- ti,hwmods: Must be "mmc<n>", n is controller instance starting 1.

The following are mandatory properties for 66AK2G SoCs only:
- power-domains:Should contain a phandle to a PM domain provider node
		and an args specifier containing the MMC device id
		value. This property is as per the binding,
		Documentation/devicetree/bindings/soc/ti/sci-pm-domain.txt
- clocks:	Must contain an entry for each entry in clock-names. Should
		be defined as per the he appropriate clock bindings consumer
		usage in Documentation/devicetree/bindings/clock/ti,sci-clk.txt
- clock-names:	Shall be "fck" for the functional clock,
		and "mmchsdb_fck" for the debounce clock.


Optional properties:
--------------------
- ti,dual-volt:		boolean, supports dual voltage cards
- <supply-name>-supply:	phandle to the regulator device tree node
			  "supply-name" examples are "vmmc",
			  "vmmc_aux"(deprecated)/"vqmmc" etc
- ti,non-removable:	non-removable slot (like eMMC)
- ti,needs-special-reset:	Requires a special softreset sequence
- ti,needs-special-hs-handling:	HSMMC IP needs special setting
				  for handling High Speed
- dmas:			List of DMA specifiers with the controller specific
			format as described in the generic DMA client
			binding. A tx and rx specifier is required.
- dma-names:		List of DMA request names. These strings correspond
			1:1 with the DMA specifiers listed in dmas.
			The string naming is to be "rx" and "tx" for
			RX and TX DMA requests, respectively.

Examples:

[hwmod populated DMA resources]

	mmc1: mmc@0x4809c000 {
		compatible = "ti,omap4-hsmmc";
		reg = <0x4809c000 0x400>;
		ti,hwmods = "mmc1";
		ti,dual-volt;
		bus-width = <4>;
		vmmc-supply = <&vmmc>; /* phandle to regulator node */
		ti,non-removable;
	};

[generic DMA request binding]

	mmc1: mmc@0x4809c000 {
		compatible = "ti,omap4-hsmmc";
		reg = <0x4809c000 0x400>;
		ti,hwmods = "mmc1";
		ti,dual-volt;
		bus-width = <4>;
		vmmc-supply = <&vmmc>; /* phandle to regulator node */
		ti,non-removable;
		dmas = <&edma 24
			&edma 25>;
		dma-names = "tx", "rx";
	};

[workaround for missing swakeup on am33xx]

This SOC is missing the swakeup line, it will not detect SDIO irq
while in suspend.

                             ------
                             | PRCM |
                              ------
                               ^ |
                       swakeup | | fclk
                               | v
       ------                -------               -----
      | card | -- CIRQ -->  | hsmmc | -- IRQ -->  | CPU |
       ------                -------               -----

In suspend the fclk is off and the module is disfunctional. Even register reads
will fail. A small logic in the host will request fclk restore, when an
external event is detected. Once the clock is restored, the host detects the
event normally. Since am33xx doesn't have this line it never wakes from
suspend.

The workaround is to reconfigure the dat1 line as a GPIO upon suspend. To make
this work, we need to set the named pinctrl states "default" and "idle".
Prepare idle to remux dat1 as a gpio, and default to remux it back as sdio
dat1. The MMC driver will then toggle between idle and default state during
runtime.

In summary:
1. select matching 'compatible' section, see example below.
2. specify pinctrl states "default" and "idle", "sleep" is optional.
3. specify the gpio irq used for detecting sdio irq in suspend

If configuration is incomplete, a warning message is emitted "falling back to
polling". Also check the "sdio irq mode" in /sys/kernel/debug/mmc0/regs. Mind
not every application needs SDIO irq, e.g. MMC cards.

	mmc1: mmc@48060100 {
		compatible = "ti,am33xx-hsmmc";
		...
		pinctrl-names = "default", "idle", "sleep"
		pinctrl-0 = <&mmc1_pins>;
		pinctrl-1 = <&mmc1_idle>;
		pinctrl-2 = <&mmc1_sleep>;
		...
		interrupts-extended = <&intc 64 &gpio2 28 GPIO_ACTIVE_LOW>;
	};

	mmc1_idle : pinmux_cirq_pin {
		pinctrl-single,pins = <
		        0x0f8 0x3f      /* GPIO2_28 */
		>;
	};
