diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-24 23:00:58 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-24 23:00:58 -0500 |
commit | ab7826595e9ec51a51f622c5fc91e2f59440481a (patch) | |
tree | 34241b399fa7a12c260e06e6c1c31bc69d46e1e3 /drivers/mmc | |
parent | 21fbd5809ad126b949206d78e0a0e07ec872ea11 (diff) | |
parent | ff7109fa632654eaef657186f2942f5b679023d6 (diff) |
Merge tag 'mfd-3.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
Pull MFS updates from Samuel Ortiz:
"This is the MFD pull request for the 3.9 merge window.
No new drivers this time, but a bunch of fairly big cleanups:
- Roger Quadros worked on a OMAP USBHS and TLL platform data
consolidation, OMAP5 support and clock management code cleanup.
- The first step of a major sync for the ab8500 driver from Lee
Jones. In particular, the debugfs and the sysct interfaces got
extended and improved.
- Peter Ujfalusi sent a nice patchset for cleaning and fixing the
twl-core driver, with a much needed module id lookup code
improvement.
- The regular wm5102 and arizona cleanups and fixes from Mark Brown.
- Laxman Dewangan extended the palmas APIs in order to implement the
palmas GPIO and rt drivers.
- Laxman also added DT support for the tps65090 driver.
- The Intel SCH and ICH drivers got a couple fixes from Aaron Sierra
and Darren Hart.
- Linus Walleij patchset for the ab8500 driver allowed ab8500 and
ab9540 based devices to switch to the new abx500 pin-ctrl driver.
- The max8925 now has device tree and irqdomain support thanks to
Qing Xu.
- The recently added rtsx driver got a few cleanups and fixes for a
better card detection code path and now also supports the RTS5227
chipset, thanks to Wei Wang and Roger Tseng."
* tag 'mfd-3.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (109 commits)
mfd: lpc_ich: Use devres API to allocate private data
mfd: lpc_ich: Add Device IDs for Intel Wellsburg PCH
mfd: lpc_sch: Accomodate partial population of the MFD devices
mfd: da9052-i2c: Staticize da9052_i2c_fix()
mfd: syscon: Fix sparse warning
mfd: twl-core: Fix kernel panic on boot
mfd: rtsx: Fix issue that booting OS with SD card inserted
mfd: ab8500: Fix compile error
mfd: Add missing GENERIC_HARDIRQS dependecies
Documentation: Add docs for max8925 dt
mfd: max8925: Add dts
mfd: max8925: Support dt for backlight
mfd: max8925: Fix onkey driver irq base
mfd: max8925: Fix mfd device register failure
mfd: max8925: Add irqdomain for dt
mfd: vexpress: Allow vexpress-sysreg to self-initialise
mfd: rtsx: Support RTS5227
mfd: rtsx: Implement driving adjustment to device-dependent callbacks
mfd: vexpress: Add pseudo-GPIO based LEDs
mfd: ab8500: Rename ab8500 to abx500 for hwmon driver
...
Diffstat (limited to 'drivers/mmc')
-rw-r--r-- | drivers/mmc/host/rtsx_pci_sdmmc.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c index f74b5adca642..468c92303167 100644 --- a/drivers/mmc/host/rtsx_pci_sdmmc.c +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c | |||
@@ -678,12 +678,19 @@ static void sdmmc_request(struct mmc_host *mmc, struct mmc_request *mrq) | |||
678 | struct mmc_command *cmd = mrq->cmd; | 678 | struct mmc_command *cmd = mrq->cmd; |
679 | struct mmc_data *data = mrq->data; | 679 | struct mmc_data *data = mrq->data; |
680 | unsigned int data_size = 0; | 680 | unsigned int data_size = 0; |
681 | int err; | ||
681 | 682 | ||
682 | if (host->eject) { | 683 | if (host->eject) { |
683 | cmd->error = -ENOMEDIUM; | 684 | cmd->error = -ENOMEDIUM; |
684 | goto finish; | 685 | goto finish; |
685 | } | 686 | } |
686 | 687 | ||
688 | err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); | ||
689 | if (err) { | ||
690 | cmd->error = err; | ||
691 | goto finish; | ||
692 | } | ||
693 | |||
687 | mutex_lock(&pcr->pcr_mutex); | 694 | mutex_lock(&pcr->pcr_mutex); |
688 | 695 | ||
689 | rtsx_pci_start_run(pcr); | 696 | rtsx_pci_start_run(pcr); |
@@ -901,6 +908,9 @@ static void sdmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
901 | if (host->eject) | 908 | if (host->eject) |
902 | return; | 909 | return; |
903 | 910 | ||
911 | if (rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD)) | ||
912 | return; | ||
913 | |||
904 | mutex_lock(&pcr->pcr_mutex); | 914 | mutex_lock(&pcr->pcr_mutex); |
905 | 915 | ||
906 | rtsx_pci_start_run(pcr); | 916 | rtsx_pci_start_run(pcr); |
@@ -1073,6 +1083,10 @@ static int sdmmc_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios) | |||
1073 | if (host->eject) | 1083 | if (host->eject) |
1074 | return -ENOMEDIUM; | 1084 | return -ENOMEDIUM; |
1075 | 1085 | ||
1086 | err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); | ||
1087 | if (err) | ||
1088 | return err; | ||
1089 | |||
1076 | mutex_lock(&pcr->pcr_mutex); | 1090 | mutex_lock(&pcr->pcr_mutex); |
1077 | 1091 | ||
1078 | rtsx_pci_start_run(pcr); | 1092 | rtsx_pci_start_run(pcr); |
@@ -1122,6 +1136,10 @@ static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode) | |||
1122 | if (host->eject) | 1136 | if (host->eject) |
1123 | return -ENOMEDIUM; | 1137 | return -ENOMEDIUM; |
1124 | 1138 | ||
1139 | err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); | ||
1140 | if (err) | ||
1141 | return err; | ||
1142 | |||
1125 | mutex_lock(&pcr->pcr_mutex); | 1143 | mutex_lock(&pcr->pcr_mutex); |
1126 | 1144 | ||
1127 | rtsx_pci_start_run(pcr); | 1145 | rtsx_pci_start_run(pcr); |