* TI Highspeed MMC host controller for OMAP

The Highspeed MMC Host Controller on TI OMAP 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
- ti,hwmods: Must be "mmc<n>", n is controller instance starting 1

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" 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 0>;
	};

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