Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 25 May 2011 23:55:55 +0000 (16:55 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 25 May 2011 23:55:55 +0000 (16:55 -0700)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc: (75 commits)
  mmc: core: eMMC bus width may not work on all platforms
  mmc: sdhci: Auto-CMD23 fixes.
  mmc: sdhci: Auto-CMD23 support.
  mmc: core: Block CMD23 support for UHS104/SDXC cards.
  mmc: sdhci: Implement MMC_CAP_CMD23 for SDHCI.
  mmc: core: Use CMD23 for multiblock transfers when we can.
  mmc: quirks: Add/remove quirks conditional support.
  mmc: Add new VUB300 USB-to-SD/SDIO/MMC driver
  mmc: sdhci-pxa: Add quirks for DMA/ADMA to match h/w
  mmc: core: duplicated trial with same freq in mmc_rescan_try_freq()
  mmc: core: add support for eMMC Dual Data Rate
  mmc: core: eMMC signal voltage does not use CMD11
  mmc: sdhci-pxa: add platform code for UHS signaling
  mmc: sdhci: add hooks for setting UHS in platform specific code
  mmc: core: clear MMC_PM_KEEP_POWER flag on resume
  mmc: dw_mmc: fixed wrong regulator_enable in suspend/resume
  mmc: sdhi: allow powering down controller with no card inserted
  mmc: tmio: runtime suspend the controller, where possible
  mmc: sdhi: support up to 3 interrupt sources
  mmc: sdhi: print physical base address and clock rate
  ...

1  2 
Documentation/ioctl/ioctl-number.txt
MAINTAINERS
drivers/mmc/core/host.c
include/linux/Kbuild
include/linux/mmc/host.h

index 2d1ad12e2b3ec783c186a81b3763ea4d3f8ce3cb,2a34d822e6d64bb5ab5d36eebdd96836db91beab..3a46e360496dd6798fbcf9f1e59e4eec9728e5d5
@@@ -166,6 -166,7 +166,6 @@@ Code  Seq#(hex)    Include File            Comment
  'T'   all     arch/x86/include/asm/ioctls.h   conflict!
  'T'   C0-DF   linux/if_tun.h          conflict!
  'U'   all     sound/asound.h          conflict!
 -'U'   00-0F   drivers/media/video/uvc/uvcvideo.h      conflict!
  'U'   00-CF   linux/uinput.h          conflict!
  'U'   00-EF   linux/usbdevice_fs.h
  'U'   C0-CF   drivers/bluetooth/hci_uart.h
  't'   80-8F   linux/isdn_ppp.h
  't'   90      linux/toshiba.h
  'u'   00-1F   linux/smb_fs.h          gone
 +'u'   20-3F   linux/uvcvideo.h        USB video class host driver
  'v'   00-1F   linux/ext2_fs.h         conflict!
  'v'   00-1F   linux/fs.h              conflict!
  'v'   00-0F   linux/sonypi.h          conflict!
  0xB0  all     RATIO devices           in development:
                                        <mailto:vgo@ratio.de>
  0xB1  00-1F   PPPoX                   <mailto:mostrows@styx.uwaterloo.ca>
+ 0xB3  00      linux/mmc/ioctl.h
  0xC0  00-0F   linux/usb/iowarrior.h
  0xCB  00-1F   CBM serial IEC bus      in development:
                                        <mailto:michael.klein@puffin.lb.shuttle.de>
diff --combined MAINTAINERS
index 43494463b57d23d68a87962f0d84adcc531378cc,5891aef5a46d15e600036bf93834df4a7769aa2a..1ab17de642e572298ef32b38b5a69198739b7cf8
@@@ -287,35 -287,35 +287,35 @@@ F:      sound/pci/ad1889.
  
  AD525X ANALOG DEVICES DIGITAL POTENTIOMETERS DRIVER
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/AD5254
  S:    Supported
  F:    drivers/misc/ad525x_dpot.c
  
  AD5398 CURRENT REGULATOR DRIVER (AD5398/AD5821)
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/AD5398
  S:    Supported
  F:    drivers/regulator/ad5398.c
  
  AD714X CAPACITANCE TOUCH SENSOR DRIVER (AD7142/3/7/8/7A)
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/AD7142
  S:    Supported
  F:    drivers/input/misc/ad714x.c
  
  AD7877 TOUCHSCREEN DRIVER
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/AD7877
  S:    Supported
  F:    drivers/input/touchscreen/ad7877.c
  
  AD7879 TOUCHSCREEN DRIVER (AD7879/AD7889)
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/AD7879
  S:    Supported
  F:    drivers/input/touchscreen/ad7879.c
@@@ -341,7 -341,7 +341,7 @@@ F: drivers/net/wireless/adm8211.
  
  ADP5520 BACKLIGHT DRIVER WITH IO EXPANDER (ADP5520/ADP5501)
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/ADP5520
  S:    Supported
  F:    drivers/mfd/adp5520.c
@@@ -352,7 -352,7 +352,7 @@@ F: drivers/input/keyboard/adp5520-keys.
  
  ADP5588 QWERTY KEYPAD AND IO EXPANDER DRIVER (ADP5588/ADP5587)
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/ADP5588
  S:    Supported
  F:    drivers/input/keyboard/adp5588-keys.c
@@@ -360,7 -360,7 +360,7 @@@ F: drivers/gpio/adp5588-gpio.
  
  ADP8860 BACKLIGHT DRIVER (ADP8860/ADP8861/ADP8863)
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/ADP8860
  S:    Supported
  F:    drivers/video/backlight/adp8860_bl.c
@@@ -387,7 -387,7 +387,7 @@@ F: drivers/hwmon/adt7475.
  
  ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346)
  M:    Michael Hennerich <michael.hennerich@analog.com>
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  W:    http://wiki.analog.com/ADXL345
  S:    Supported
  F:    drivers/input/misc/adxl34x.c
@@@ -405,8 -405,8 +405,8 @@@ S: Maintaine
  F:    sound/oss/aedsp16.c
  
  AFFS FILE SYSTEM
 -M:    Roman Zippel <zippel@linux-m68k.org>
 -S:    Maintained
 +L:    linux-fsdevel@vger.kernel.org
 +S:    Orphan
  F:    Documentation/filesystems/affs.txt
  F:    fs/affs/
  
@@@ -483,13 -483,6 +483,13 @@@ F:       drivers/tty/serial/altera_jtaguart.
  F:    include/linux/altera_uart.h
  F:    include/linux/altera_jtaguart.h
  
 +AMD FAM15H PROCESSOR POWER MONITORING DRIVER
 +M:    Andreas Herrmann <andreas.herrmann3@amd.com>
 +L:    lm-sensors@lm-sensors.org
 +S:    Maintained
 +F:    Documentation/hwmon/fam15h_power
 +F:    drivers/hwmon/fam15h_power.c
 +
  AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
  M:    Thomas Dahlmann <dahlmann.thomas@arcor.de>
  L:    linux-geode@lists.infradead.org (moderated for non-subscribers)
@@@ -533,7 -526,7 +533,7 @@@ S: Maintaine
  F:    drivers/infiniband/hw/amso1100/
  
  ANALOG DEVICES INC ASOC CODEC DRIVERS
 -L:    device-driver-devel@blackfin.uclinux.org
 +L:    device-drivers-devel@blackfin.uclinux.org
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  W:    http://wiki.analog.com/
  S:    Supported
@@@ -555,11 -548,10 +555,11 @@@ S:      Maintaine
  F:    sound/aoa/
  
  APM DRIVER
 -L:    linux-laptop@vger.kernel.org
 -S:    Orphan
 +M:    Jiri Kosina <jkosina@suse.cz>
 +S:    Odd fixes
  F:    arch/x86/kernel/apm_32.c
  F:    include/linux/apm_bios.h
 +F:    drivers/char/apm-emulation.c
  
  APPLE BCM5974 MULTITOUCH DRIVER
  M:    Henrik Rydberg <rydberg@euromail.se>
@@@ -737,7 -729,7 +737,7 @@@ ARM/EZX SMARTPHONES (A780, A910, A1200
  M:    Daniel Ribeiro <drwyrm@gmail.com>
  M:    Stefan Schmidt <stefan@openezx.org>
  M:    Harald Welte <laforge@openezx.org>
 -L:    openezx-devel@lists.openezx.org (subscribers-only)
 +L:    openezx-devel@lists.openezx.org (moderated for non-subscribers)
  W:    http://www.openezx.org/
  S:    Maintained
  T:    topgit git://git.openezx.org/openezx.git
@@@ -1240,6 -1232,13 +1240,6 @@@ W:     http://wireless.kernel.org/en/users/
  S:    Supported
  F:    drivers/net/wireless/ath/ath9k/
  
 -ATHEROS AR9170 WIRELESS DRIVER
 -M:    Christian Lamparter <chunkeey@web.de>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/ar9170
 -S:    Obsolete
 -F:    drivers/net/wireless/ath/ar9170/
 -
  CARL9170 LINUX COMMUNITY WIRELESS DRIVER
  M:    Christian Lamparter <chunkeey@googlemail.com>
  L:    linux-wireless@vger.kernel.org
@@@ -2041,8 -2040,9 +2041,8 @@@ F:      net/ax25/ax25_timer.
  F:    net/ax25/sysctl_net_ax25.c
  
  DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
 -M:    Tobias Ringstrom <tori@unhappy.mine.nu>
  L:    netdev@vger.kernel.org
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/networking/dmfe.txt
  F:    drivers/net/tulip/dmfe.c
  
@@@ -2251,10 -2251,10 +2251,10 @@@ F:   drivers/gpu/drm
  F:    include/drm/
  
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
 -M:    Chris Wilson <chris@chris-wilson.co.uk>
 +M:    Keith Packard <keithp@keithp.com>
  L:    intel-gfx@lists.freedesktop.org (subscribers-only)
  L:    dri-devel@lists.freedesktop.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/keithp/linux-2.6.git
  S:    Supported
  F:    drivers/gpu/drm/i915
  F:    include/drm/i915*
@@@ -2946,8 -2946,8 +2946,8 @@@ F:      drivers/block/cciss
  F:    include/linux/cciss_ioctl.h
  
  HFS FILESYSTEM
 -M:    Roman Zippel <zippel@linux-m68k.org>
 -S:    Maintained
 +L:    linux-fsdevel@vger.kernel.org
 +S:    Orphan
  F:    Documentation/filesystems/hfs.txt
  F:    fs/hfs/
  
@@@ -3363,12 -3363,6 +3363,12 @@@ F:    Documentation/wimax/README.i2400
  F:    drivers/net/wimax/i2400m/
  F:    include/linux/wimax/i2400m.h
  
 +INTEL WIRELESS 3945ABG/BG, 4965AGN (iwlegacy)
 +M:    Stanislaw Gruszka <sgruszka@redhat.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/wireless/iwlegacy/
 +
  INTEL WIRELESS WIFI LINK (iwlwifi)
  M:    Wey-Yi Guy <wey-yi.w.guy@intel.com>
  M:    Intel Linux Wireless <ilw@linux.intel.com>
@@@ -3597,9 -3591,10 +3597,9 @@@ F:     Documentation/hwmon/k8tem
  F:    drivers/hwmon/k8temp.c
  
  KCONFIG
 -M:    Roman Zippel <zippel@linux-m68k.org>
 +M:    Michal Marek <mmarek@suse.cz>
  L:    linux-kbuild@vger.kernel.org
 -Q:    http://patchwork.kernel.org/project/linux-kbuild/list/
 -S:    Maintained
 +S:    Odd Fixes
  F:    Documentation/kbuild/kconfig-language.txt
  F:    scripts/kconfig/
  
@@@ -3819,7 -3814,7 +3819,7 @@@ M:      Rusty Russell <rusty@rustcorp.com.au
  L:    lguest@lists.ozlabs.org
  W:    http://lguest.ozlabs.org/
  S:    Odd Fixes
 -F:    Documentation/lguest/
 +F:    Documentation/virtual/lguest/
  F:    arch/x86/lguest/
  F:    drivers/lguest/
  F:    include/linux/lguest*.h
@@@ -3903,6 -3898,7 +3903,6 @@@ F:      drivers/*/*/*pasemi
  LINUX SECURITY MODULE (LSM) FRAMEWORK
  M:    Chris Wright <chrisw@sous-sol.org>
  L:    linux-security-module@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git
  S:    Supported
  
  LIS3LV02D ACCELEROMETER DRIVER
@@@ -4005,6 -4001,7 +4005,6 @@@ F:      arch/m32r
  
  M68K ARCHITECTURE
  M:    Geert Uytterhoeven <geert@linux-m68k.org>
 -M:    Roman Zippel <zippel@linux-m68k.org>
  L:    linux-m68k@lists.linux-m68k.org
  W:    http://www.linux-m68k.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git
@@@ -4257,7 -4254,7 +4257,7 @@@ F:      include/linux/isicom.
  MUSB MULTIPOINT HIGH SPEED DUAL-ROLE CONTROLLER
  M:    Felipe Balbi <balbi@ti.com>
  L:    linux-usb@vger.kernel.org
 -T:    git git://gitorious.org/usb/usb.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
  S:    Maintained
  F:    drivers/usb/musb/
  
@@@ -4274,13 -4271,6 +4274,13 @@@ M:    Tim Hockin <thockin@hockin.org
  S:    Maintained
  F:    drivers/net/natsemi.c
  
 +NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER
 +M:    Daniel Mack <zonque@gmail.com>
 +S:    Maintained
 +L:    alsa-devel@alsa-project.org
 +W:    http://www.native-instruments.com
 +F:    sound/usb/caiaq/
 +
  NCP FILESYSTEM
  M:    Petr Vandrovec <petr@vandrovec.name>
  S:    Odd Fixes
@@@ -4396,7 -4386,6 +4396,7 @@@ S:      Maintaine
  F:    net/ipv4/
  F:    net/ipv6/
  F:    include/net/ip*
 +F:    arch/x86/net/*
  
  NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
  M:    Paul Moore <paul.moore@hp.com>
@@@ -4592,7 -4581,6 +4592,7 @@@ M:      Felipe Balbi <balbi@ti.com
  M:    David Brownell <dbrownell@users.sourceforge.net>
  L:    linux-usb@vger.kernel.org
  L:    linux-omap@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
  S:    Maintained
  F:    drivers/usb/*/*omap*
  F:    arch/arm/*omap*/usb*
@@@ -5444,7 -5432,6 +5444,7 @@@ F:      include/linux/timex.
  F:    kernel/time/clocksource.c
  F:    kernel/time/time*.c
  F:    kernel/time/ntp.c
 +F:    drivers/clocksource
  
  TLG2300 VIDEO4LINUX-2 DRIVER
  M:    Huang Shijie <shijie8@gmail.com>
@@@ -5596,11 -5583,10 +5596,11 @@@ M:   James Morris <jmorris@namei.org
  M:    Eric Paris <eparis@parisplace.org>
  L:    selinux@tycho.nsa.gov (subscribers-only, general discussion)
  W:    http://selinuxproject.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
 +T:    git git://git.infradead.org/users/eparis/selinux.git
  S:    Supported
  F:    include/linux/selinux*
  F:    security/selinux/
 +F:    scripts/selinux/
  
  APPARMOR SECURITY MODULE
  M:    John Johansen <john.johansen@canonical.com>
@@@ -5626,9 -5612,9 +5626,9 @@@ F:      include/linux/ata.
  F:    include/linux/libata.h
  
  SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
 -M:    Jayamohan Kallickal <jayamohank@serverengines.com>
 +M:    Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
  L:    linux-scsi@vger.kernel.org
 -W:    http://www.serverengines.com
 +W:    http://www.emulex.com
  S:    Supported
  F:    drivers/scsi/be2iscsi/
  
@@@ -5846,13 -5832,6 +5846,13 @@@ S:    Maintaine
  F:    drivers/ssb/
  F:    include/linux/ssb/
  
 +BROADCOM SPECIFIC AMBA DRIVER (BCMA)
 +M:    Rafał Miłecki <zajec5@gmail.com>
 +L:    linux-wireless@vger.kernel.org
 +S:    Maintained
 +F:    drivers/bcma/
 +F:    include/linux/bcma/
 +
  SONY VAIO CONTROL DEVICE DRIVER
  M:    Mattia Dongili <malattia@linux.it>
  L:    platform-driver-x86@vger.kernel.org
@@@ -5882,7 -5861,7 +5882,7 @@@ F:      include/sound
  F:    sound/
  
  SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
 -M:    Liam Girdwood <lrg@slimlogic.co.uk>
 +M:    Liam Girdwood <lrg@ti.com>
  M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6.git
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -6133,7 -6112,7 +6133,7 @@@ F:      drivers/mmc/host/tifm_sd.
  F:    include/linux/tifm.h
  
  TI TWL4030 SERIES SOC CODEC DRIVER
 -M:    Peter Ujfalusi <peter.ujfalusi@nokia.com>
 +M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    sound/soc/codecs/twl4030*
@@@ -6236,7 -6215,6 +6236,7 @@@ TRIVIAL PATCHE
  M:    Jiri Kosina <trivial@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial.git
  S:    Maintained
 +K:    ^Subject:.*(?i)trivial
  
  TTY LAYER
  M:    Greg Kroah-Hartman <gregkh@suse.de>
@@@ -6654,7 -6632,7 +6654,7 @@@ L:      user-mode-linux-devel@lists.sourcefo
  L:    user-mode-linux-user@lists.sourceforge.net
  W:    http://user-mode-linux.sourceforge.net
  S:    Maintained
 -F:    Documentation/uml/
 +F:    Documentation/virtual/uml/
  F:    arch/um/
  F:    fs/hostfs/
  F:    fs/hppfs/
@@@ -6778,7 -6756,7 +6778,7 @@@ F:      drivers/scsi/vmw_pvscsi.
  F:    drivers/scsi/vmw_pvscsi.h
  
  VOLTAGE AND CURRENT REGULATOR FRAMEWORK
 -M:    Liam Girdwood <lrg@slimlogic.co.uk>
 +M:    Liam Girdwood <lrg@ti.com>
  M:    Mark Brown <broonie@opensource.wolfsonmicro.com>
  W:    http://opensource.wolfsonmicro.com/node/15
  W:    http://www.slimlogic.co.uk/?p=48
@@@ -6800,6 -6778,13 +6800,13 @@@ L:    lm-sensors@lm-sensors.or
  S:    Maintained
  F:    drivers/hwmon/vt8231.c
  
+ VUB300 USB to SDIO/SD/MMC bridge chip
+ M:    Tony Olech <tony.olech@elandigitalsystems.com>
+ L:    linux-mmc@vger.kernel.org
+ L:    linux-usb@vger.kernel.org
+ S:    Supported
+ F:    drivers/mmc/host/vub300.c
  W1 DALLAS'S 1-WIRE BUS
  M:    Evgeniy Polyakov <johnpol@2ka.mipt.ru>
  S:    Maintained
diff --combined drivers/mmc/core/host.c
index 461e6a17fb90e8526d96054f2ec90f44a85e70c3,6714ea4e46ea20d26d3fcf80029a1b12047fe9ed..b29d3e8fd3a2ad713525c4be82c9b2f9699910ec
@@@ -94,7 -94,7 +94,7 @@@ static void mmc_host_clk_gate_delayed(s
                spin_unlock_irqrestore(&host->clk_lock, flags);
                return;
        }
 -      mmc_claim_host(host);
 +      mutex_lock(&host->clk_gate_mutex);
        spin_lock_irqsave(&host->clk_lock, flags);
        if (!host->clk_requests) {
                spin_unlock_irqrestore(&host->clk_lock, flags);
                pr_debug("%s: gated MCI clock\n", mmc_hostname(host));
        }
        spin_unlock_irqrestore(&host->clk_lock, flags);
 -      mmc_release_host(host);
 +      mutex_unlock(&host->clk_gate_mutex);
  }
  
  /*
@@@ -130,7 -130,7 +130,7 @@@ void mmc_host_clk_ungate(struct mmc_hos
  {
        unsigned long flags;
  
 -      mmc_claim_host(host);
 +      mutex_lock(&host->clk_gate_mutex);
        spin_lock_irqsave(&host->clk_lock, flags);
        if (host->clk_gated) {
                spin_unlock_irqrestore(&host->clk_lock, flags);
        }
        host->clk_requests++;
        spin_unlock_irqrestore(&host->clk_lock, flags);
 -      mmc_release_host(host);
 +      mutex_unlock(&host->clk_gate_mutex);
  }
  
  /**
@@@ -215,7 -215,6 +215,7 @@@ static inline void mmc_host_clk_init(st
        host->clk_gated = false;
        INIT_WORK(&host->clk_gate_work, mmc_host_clk_gate_work);
        spin_lock_init(&host->clk_lock);
 +      mutex_init(&host->clk_gate_mutex);
  }
  
  /**
@@@ -325,12 -324,12 +325,12 @@@ int mmc_add_host(struct mmc_host *host
        WARN_ON((host->caps & MMC_CAP_SDIO_IRQ) &&
                !host->ops->enable_sdio_irq);
  
-       led_trigger_register_simple(dev_name(&host->class_dev), &host->led);
        err = device_add(&host->class_dev);
        if (err)
                return err;
  
+       led_trigger_register_simple(dev_name(&host->class_dev), &host->led);
  #ifdef CONFIG_DEBUG_FS
        mmc_add_host_debugfs(host);
  #endif
diff --combined include/linux/Kbuild
index ccfedb4f3eb0a98b2f5f61daf6e2b902198561a7,ed38527599eebd12ae839cf885bdd8dab47139ac..01f6362750570e19e01c01d5fbc22f50f63cbed6
@@@ -4,6 -4,7 +4,7 @@@ header-y += caif
  header-y += dvb/
  header-y += hdlc/
  header-y += isdn/
+ header-y += mmc/
  header-y += nfsd/
  header-y += raid/
  header-y += spi/
@@@ -302,7 -303,6 +303,7 @@@ header-y += ppp-comp.
  header-y += ppp_defs.h
  header-y += pps.h
  header-y += prctl.h
 +header-y += ptp_clock.h
  header-y += ptrace.h
  header-y += qnx4_fs.h
  header-y += qnxtypes.h
@@@ -373,7 -373,6 +374,7 @@@ header-y += unistd.
  header-y += usbdevice_fs.h
  header-y += utime.h
  header-y += utsname.h
 +header-y += uvcvideo.h
  header-y += v4l2-mediabus.h
  header-y += v4l2-subdev.h
  header-y += veth.h
diff --combined include/linux/mmc/host.h
index bcb793ec7374f61d2552cca43f573bdd1f100ece,e946bd10fe3f7494eb52f098fb6d6444830c9c1e..1ee4424462ebcf98f2e81082b65c7211d64a248e
@@@ -50,12 -50,30 +50,30 @@@ struct mmc_ios 
  #define MMC_TIMING_LEGACY     0
  #define MMC_TIMING_MMC_HS     1
  #define MMC_TIMING_SD_HS      2
+ #define MMC_TIMING_UHS_SDR12  MMC_TIMING_LEGACY
+ #define MMC_TIMING_UHS_SDR25  MMC_TIMING_SD_HS
+ #define MMC_TIMING_UHS_SDR50  3
+ #define MMC_TIMING_UHS_SDR104 4
+ #define MMC_TIMING_UHS_DDR50  5
  
        unsigned char   ddr;                    /* dual data rate used */
  
  #define MMC_SDR_MODE          0
  #define MMC_1_2V_DDR_MODE     1
  #define MMC_1_8V_DDR_MODE     2
+       unsigned char   signal_voltage;         /* signalling voltage (1.8V or 3.3V) */
+ #define MMC_SIGNAL_VOLTAGE_330        0
+ #define MMC_SIGNAL_VOLTAGE_180        1
+ #define MMC_SIGNAL_VOLTAGE_120        2
+       unsigned char   drv_type;               /* driver type (A, B, C, D) */
+ #define MMC_SET_DRIVER_TYPE_B 0
+ #define MMC_SET_DRIVER_TYPE_A 1
+ #define MMC_SET_DRIVER_TYPE_C 2
+ #define MMC_SET_DRIVER_TYPE_D 3
  };
  
  struct mmc_host_ops {
  
        /* optional callback for HC quirks */
        void    (*init_card)(struct mmc_host *host, struct mmc_card *card);
+       int     (*start_signal_voltage_switch)(struct mmc_host *host, struct mmc_ios *ios);
+       int     (*execute_tuning)(struct mmc_host *host);
+       void    (*enable_preset_value)(struct mmc_host *host, bool enable);
  };
  
  struct mmc_card;
@@@ -173,6 -195,22 +195,22 @@@ struct mmc_host 
                                                /* DDR mode at 1.2V */
  #define MMC_CAP_POWER_OFF_CARD        (1 << 13)       /* Can power off after boot */
  #define MMC_CAP_BUS_WIDTH_TEST        (1 << 14)       /* CMD14/CMD19 bus width ok */
+ #define MMC_CAP_UHS_SDR12     (1 << 15)       /* Host supports UHS SDR12 mode */
+ #define MMC_CAP_UHS_SDR25     (1 << 16)       /* Host supports UHS SDR25 mode */
+ #define MMC_CAP_UHS_SDR50     (1 << 17)       /* Host supports UHS SDR50 mode */
+ #define MMC_CAP_UHS_SDR104    (1 << 18)       /* Host supports UHS SDR104 mode */
+ #define MMC_CAP_UHS_DDR50     (1 << 19)       /* Host supports UHS DDR50 mode */
+ #define MMC_CAP_SET_XPC_330   (1 << 20)       /* Host supports >150mA current at 3.3V */
+ #define MMC_CAP_SET_XPC_300   (1 << 21)       /* Host supports >150mA current at 3.0V */
+ #define MMC_CAP_SET_XPC_180   (1 << 22)       /* Host supports >150mA current at 1.8V */
+ #define MMC_CAP_DRIVER_TYPE_A (1 << 23)       /* Host supports Driver Type A */
+ #define MMC_CAP_DRIVER_TYPE_C (1 << 24)       /* Host supports Driver Type C */
+ #define MMC_CAP_DRIVER_TYPE_D (1 << 25)       /* Host supports Driver Type D */
+ #define MMC_CAP_MAX_CURRENT_200       (1 << 26)       /* Host max current limit is 200mA */
+ #define MMC_CAP_MAX_CURRENT_400       (1 << 27)       /* Host max current limit is 400mA */
+ #define MMC_CAP_MAX_CURRENT_600       (1 << 28)       /* Host max current limit is 600mA */
+ #define MMC_CAP_MAX_CURRENT_800       (1 << 29)       /* Host max current limit is 800mA */
+ #define MMC_CAP_CMD23         (1 << 30)       /* CMD23 supported. */
  
        mmc_pm_flag_t           pm_caps;        /* supported pm features */
  
        struct work_struct      clk_gate_work; /* delayed clock gate */
        unsigned int            clk_old;        /* old clock value cache */
        spinlock_t              clk_lock;       /* lock for clk fields */
 +      struct mutex            clk_gate_mutex; /* mutex for clock gating */
  #endif
  
        /* host specific block data */
@@@ -321,10 -358,19 +359,19 @@@ static inline int mmc_card_is_removable
        return !(host->caps & MMC_CAP_NONREMOVABLE) && mmc_assume_removable;
  }
  
- static inline int mmc_card_is_powered_resumed(struct mmc_host *host)
+ static inline int mmc_card_keep_power(struct mmc_host *host)
  {
        return host->pm_flags & MMC_PM_KEEP_POWER;
  }
  
+ static inline int mmc_card_wake_sdio_irq(struct mmc_host *host)
+ {
+       return host->pm_flags & MMC_PM_WAKE_SDIO_IRQ;
+ }
+ static inline int mmc_host_cmd23(struct mmc_host *host)
+ {
+       return host->caps & MMC_CAP_CMD23;
+ }
  #endif