mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
MMC highlights for 3.4:
Core: * Support for MMC 4.5 Data Tag feature -- we tag REQ_META, so devices that support Data Tag will provide increased throughput for metadata. * Faster detection of card removal on I/O errors. Drivers: * dw_mmc now supports eMMC Power Off Notify, has PCI support, and implements pre_req and post_req for asynchronous requests. * omap_hsmmc now supports device tree. * esdhc now has power management support. * sdhci-tegra now supports Tegra30 devices. * sdhci-spear now supports hibernation. * tmio_mmc now supports using a GPIO for card detection. * Intel PCH now supports 8-bit bus transfers. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJPcejzAAoJEHNBYZ7TNxYM1eEQALs8LAoHcp9vdG2Uttz65HQL ISavfZIVTiLO22ugg5NKXdAOSAv0xdIeuUdpsxRr3W7j27OP41KLq1V7U+Mvnzm0 VG+99J4kdrpgIe+ogvq9IHsnCQZ8ERSzTd2My+O1l9O0jYAAJ2mnsyljlMnaCFS4 lac4/1wlGpogz8UXCEL54V1LJFWW2YWJ6wrjcsu4gaJMyAFk83rbUP1XnlZJOZL2 Z8e8AHh30tJ+dWOGUJRzdRhy6R1pMNabiUP/U+m9pvcTNdGYYbSGDKvmVmSzQOLH VtD7wzfQysj1ReVr2zyhkMif/el/F80JesRrAE7xS2IYJvhj5RmADQY8fE+KKFD9 n+6UkfHbI+ikRZgyeivqlnGC2j2YZ1DqxnptbfBuMPuvAliE6JjQuNunCo0jyl6o +uZ8f84Dq3mZ/6ldb7vKbwvNZXVzUNlB4thH1MqWXDDXb1YUS5jXO7jBRhgvhLXg Wb9Pbi92QMArrq8c0Ch1Yy0ufZZEJ2wTh2Sp2vBqvVEEZ7X3R3GUFGmsCqwS9Ew1 NSSMsc+ANNKY3/qDC7vyyCIuYVqTrZmi0Zr/IcTCGy0YcFJiK5bblJeL9l1kYOyo 3KPno/ZkC+qZSHGCab9RvRWemqdAgTwdxch+BalXLVt4NhRGNIMeBOVNSMsbeP9e aA33LGNp258Jdphmv0NE =T4T+ -----END PGP SIGNATURE----- Merge tag 'mmc-merge-for-3.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc Pull MMC updates from Chris Ball: Core: * Support for MMC 4.5 Data Tag feature -- we tag REQ_META, so devices that support Data Tag will provide increased throughput for metadata. * Faster detection of card removal on I/O errors. Drivers: * dw_mmc now supports eMMC Power Off Notify, has PCI support, and implements pre_req and post_req for asynchronous requests. * omap_hsmmc now supports device tree. * esdhc now has power management support. * sdhci-tegra now supports Tegra30 devices. * sdhci-spear now supports hibernation. * tmio_mmc now supports using a GPIO for card detection. * Intel PCH now supports 8-bit bus transfers. * tag 'mmc-merge-for-3.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (53 commits) mmc: sh_mmcif: simplify bitmask macros mmc: sh_mobile_sdhi: support modular mmc-core with non-standard hotplug mmc: sh_mobile_sdhi: add a callback for board specific init code mmc: tmio: cosmetic: prettify the tmio_mmc_set_ios() function mmc: sh_mobile_sdhi: do not manage PM clocks manually mmc: tmio_mmc: remove unused sdio_irq_enabled flag mmc: tmio_mmc: power status flag doesn't have to be exposed in platform data mmc: sh_mobile_sdhi: pass card hotplug GPIO number to TMIO MMC mmc: tmio_mmc: support the generic MMC GPIO card hotplug helper mmc: tmio: calculate the native hotplug condition only once mmc: simplify mmc_cd_gpio_request() by removing two parameters mmc: sdhci-pci: allow 8-bit bus width for Intel PCH mmc: sdhci: check interrupt flags in ISR again mmc: sdhci-pci: Add MSI support mmc: core: warn when card doesn't support HPI mmc: davinci: Poll status for small size transfers mmc: davinci: Eliminate spurious interrupts mmc: omap_hsmmc: Avoid a regulator voltage change with dt mmc: omap_hsmmc: Convert hsmmc driver to use device tree mmc: sdhci-pci: add SDHCI_QUIRK2_HOST_OFF_CARD_ON for Medfield SDIO ...
This commit is contained in:
commit
b5174fa3a7
42 changed files with 1162 additions and 723 deletions
|
@ -81,34 +81,11 @@ struct mmc_ios {
|
|||
|
||||
struct mmc_host_ops {
|
||||
/*
|
||||
* Hosts that support power saving can use the 'enable' and 'disable'
|
||||
* methods to exit and enter power saving states. 'enable' is called
|
||||
* when the host is claimed and 'disable' is called (or scheduled with
|
||||
* a delay) when the host is released. The 'disable' is scheduled if
|
||||
* the disable delay set by 'mmc_set_disable_delay()' is non-zero,
|
||||
* otherwise 'disable' is called immediately. 'disable' may be
|
||||
* scheduled repeatedly, to permit ever greater power saving at the
|
||||
* expense of ever greater latency to re-enable. Rescheduling is
|
||||
* determined by the return value of the 'disable' method. A positive
|
||||
* value gives the delay in milliseconds.
|
||||
*
|
||||
* In the case where a host function (like set_ios) may be called
|
||||
* with or without the host claimed, enabling and disabling can be
|
||||
* done directly and will nest correctly. Call 'mmc_host_enable()' and
|
||||
* 'mmc_host_lazy_disable()' for this purpose, but note that these
|
||||
* functions must be paired.
|
||||
*
|
||||
* Alternatively, 'mmc_host_enable()' may be paired with
|
||||
* 'mmc_host_disable()' which calls 'disable' immediately. In this
|
||||
* case the 'disable' method will be called with 'lazy' set to 0.
|
||||
* This is mainly useful for error paths.
|
||||
*
|
||||
* Because lazy disable may be called from a work queue, the 'disable'
|
||||
* method must claim the host when 'lazy' != 0, which will work
|
||||
* correctly because recursion is detected and handled.
|
||||
* 'enable' is called when the host is claimed and 'disable' is called
|
||||
* when the host is released. 'enable' and 'disable' are deprecated.
|
||||
*/
|
||||
int (*enable)(struct mmc_host *host);
|
||||
int (*disable)(struct mmc_host *host, int lazy);
|
||||
int (*disable)(struct mmc_host *host);
|
||||
/*
|
||||
* It is optional for the host to implement pre_req and post_req in
|
||||
* order to support double buffering of requests (prepare one
|
||||
|
@ -219,7 +196,7 @@ struct mmc_host {
|
|||
#define MMC_CAP_SPI (1 << 4) /* Talks only SPI protocols */
|
||||
#define MMC_CAP_NEEDS_POLL (1 << 5) /* Needs polling for card-detection */
|
||||
#define MMC_CAP_8_BIT_DATA (1 << 6) /* Can the host do 8 bit transfers */
|
||||
#define MMC_CAP_DISABLE (1 << 7) /* Can the host be disabled */
|
||||
|
||||
#define MMC_CAP_NONREMOVABLE (1 << 8) /* Nonremovable e.g. eMMC */
|
||||
#define MMC_CAP_WAIT_WHILE_BUSY (1 << 9) /* Waits while card is busy */
|
||||
#define MMC_CAP_ERASE (1 << 10) /* Allow erase/trim commands */
|
||||
|
@ -259,6 +236,8 @@ struct mmc_host {
|
|||
#define MMC_CAP2_HS200 (MMC_CAP2_HS200_1_8V_SDR | \
|
||||
MMC_CAP2_HS200_1_2V_SDR)
|
||||
#define MMC_CAP2_BROKEN_VOLTAGE (1 << 7) /* Use the broken voltage */
|
||||
#define MMC_CAP2_DETECT_ON_ERR (1 << 8) /* On I/O err check card removal */
|
||||
#define MMC_CAP2_HC_ERASE_SZ (1 << 9) /* High-capacity erase size */
|
||||
|
||||
mmc_pm_flag_t pm_caps; /* supported pm features */
|
||||
unsigned int power_notify_type;
|
||||
|
@ -301,13 +280,7 @@ struct mmc_host {
|
|||
unsigned int removed:1; /* host is being removed */
|
||||
#endif
|
||||
|
||||
/* Only used with MMC_CAP_DISABLE */
|
||||
int enabled; /* host is enabled */
|
||||
int rescan_disable; /* disable card detection */
|
||||
int nesting_cnt; /* "enable" nesting count */
|
||||
int en_dis_recurs; /* detect recursion */
|
||||
unsigned int disable_delay; /* disable delay in msecs */
|
||||
struct delayed_work disable; /* disabling work */
|
||||
|
||||
struct mmc_card *card; /* device attached to this host */
|
||||
|
||||
|
@ -407,17 +380,8 @@ int mmc_card_awake(struct mmc_host *host);
|
|||
int mmc_card_sleep(struct mmc_host *host);
|
||||
int mmc_card_can_sleep(struct mmc_host *host);
|
||||
|
||||
int mmc_host_enable(struct mmc_host *host);
|
||||
int mmc_host_disable(struct mmc_host *host);
|
||||
int mmc_host_lazy_disable(struct mmc_host *host);
|
||||
int mmc_pm_notify(struct notifier_block *notify_block, unsigned long, void *);
|
||||
|
||||
static inline void mmc_set_disable_delay(struct mmc_host *host,
|
||||
unsigned int disable_delay)
|
||||
{
|
||||
host->disable_delay = disable_delay;
|
||||
}
|
||||
|
||||
/* Module parameter */
|
||||
extern bool mmc_assume_removable;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue