linux/drivers/mmc/core
Rafael J. Wysocki e841a7c69b mmc: sdio: Use empty system suspend/resume callbacks at the bus level
Neil Brown reports that commit 35cd133c

   PM: Run the driver callback directly if the subsystem one is not there

breaks suspend for his libertas wifi, because SDIO has a protocol
where the suspend method can return -ENOSYS and this means "There is
no point in suspending, just turn me off".  Moreover, the suspend
methods provided by SDIO drivers are not supposed to be called by
the PM core or bus-level suspend routines (which aren't presend for
SDIO).  Instead, when the SDIO core gets to suspend the device's
ancestor, it calls the device driver's suspend function, catches the
ENOSYS, and turns the device off.

The commit above breaks the SDIO core's assumption that the device
drivers' callbacks won't be executed if it doesn't provide any
bus-level callbacks.  If fact, however, this assumption has never
been really satisfied, because device class or device type suspend
might very well use the driver's callback even without that commit.

The simplest way to address this problem is to make the SDIO core
tell the PM core to ignore driver callbacks, for example by providing
no-operation suspend/resume callbacks at the bus level for it,
which is implemented by this change.

Reported-and-tested-by: Neil Brown <neilb@suse.de>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
[stable: please apply to 3.3-stable only]
Cc: <stable@vger.kernel.org>
Signed-off-by: Chris Ball <cjb@laptop.org>
2012-04-05 20:32:26 -04:00
..
bus.c mmc: bus: print bus speed mode of UHS-I card 2012-04-05 20:32:26 -04:00
bus.h mmc: rename dev_to_mmc_card() to mmc_dev_to_card() 2010-10-23 21:11:12 +08:00
cd-gpio.c mmc: simplify mmc_cd_gpio_request() by removing two parameters 2012-03-27 12:20:14 -04:00
core.c mmc: core: Clean up after mmc_pre_req if card was removed 2012-03-27 12:20:04 -04:00
core.h Autogenerated GPG tag for Rusty D1ADB8F1: 15EE 8D6C AB0E 7F0C F999 BFCB D920 0E6C D1AD B8F1 2012-01-14 12:32:16 -08:00
debugfs.c mmc: core: HS200 mode support for eMMC 4.5 2012-01-12 15:17:15 -05:00
host.c mmc: start removing enable / disable API 2012-03-27 12:20:03 -04:00
host.h mmc: start removing enable / disable API 2012-03-27 12:20:03 -04:00
Kconfig mmc: Aggressive clock gating framework 2011-01-08 22:48:03 -05:00
Makefile mmc: add a generic GPIO card-detect helper 2012-01-11 23:58:45 -05:00
mmc.c mmc: core: add high-capacity erase size capability flag 2012-03-27 12:20:07 -04:00
mmc_ops.c mmc: core: warn when card doesn't support HPI 2012-03-27 12:20:12 -04:00
mmc_ops.h mmc: core: support HPI send command 2011-10-26 16:32:29 -04:00
quirks.c mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:06 -04:00
sd.c mmc: core: Fixup suspend/resume issues for UHS-I cards 2012-03-04 12:25:15 -05:00
sd.h mmc: sd: add support for driver type selection 2011-05-24 23:53:24 -04:00
sd_ops.c mmc: Add export.h for EXPORT_SYMBOL/THIS_MODULE as required 2011-10-31 19:32:06 -04:00
sd_ops.h mmc: add erase, secure erase, trim and secure trim operations 2010-08-12 08:43:30 -07:00
sdio.c mmc: core: Fixup suspend/resume issues for UHS-I cards 2012-03-04 12:25:15 -05:00
sdio_bus.c mmc: sdio: Use empty system suspend/resume callbacks at the bus level 2012-04-05 20:32:26 -04:00
sdio_bus.h
sdio_cis.c mmc: replace printk with appropriate display macro 2011-10-26 16:32:22 -04:00
sdio_cis.h
sdio_io.c mmc: sdio: Fix to support any block size optimally 2012-01-11 23:58:40 -05:00
sdio_irq.c mmc: core: Ensure clocks are always enabled before host interaction 2012-02-13 20:38:58 -05:00
sdio_ops.c mmc: sdio: Fix to support any block size optimally 2012-01-11 23:58:40 -05:00
sdio_ops.h sdio: recognize io card without powercycle 2010-03-12 15:52:28 -08:00