* 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@4809c000 {
		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@4809c000 {
		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 */
		>;
	};
