An error occurred fetching the project authors.
- 03 Mar, 2016 1 commit
-
-
Adrian Hunter authored
commit d9bfbb95 upstream. The 'ocr' parameter passed to mmc_set_signal_voltage() defines the power-on voltage used when power cycling after a failure to set the voltage. However, in the case of mmc_sdio_init_card(), the value passed has the R4_18V_PRESENT flag set which is not valid for power-on and results in an invalid vdd. Fix by passing the card's ocr value which does not have the flag. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
- 26 Oct, 2015 2 commits
-
-
Ulf Hansson authored
MMC_CLKGATE was once invented to save power by gating the bus clock at request inactivity. At that time it served its purpose. The modern way to deal with power saving for these scenarios, is by using runtime PM. Nowadays, several host drivers have deployed runtime PM, but for those that haven't and which still cares power saving at request inactivity, it's certainly time to deploy runtime PM as it has been around for several years now. To simplify code to mmc core and thus decrease maintenance efforts, this patch removes all code related to MMC_CLKGATE. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by:
Linus Walleij <linus.walleij@linaro.org>
-
Ulf Hansson authored
As mmc_claim_host() invokes pm_runtime_get_sync() for the mmc host device, it's important that the host is kept claimed for *all* accesses to it via the host_ops callbacks. In some code paths for SDIO, particularly related to the PM support, mmc_power_off|up() is invoked without keeping the host claimed. Let's fix these. Moreover, mmc_start|stop_host() also invokes mmc_power_off|up() without claiming the host, let's fix these as well. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Acked-by:
Kishon Vijay Abraham I <kishon@ti.com>
-
- 01 Jun, 2015 6 commits
-
-
Adrian Hunter authored
In preparation for adding drive strength support for eMMC, add drive_strength to struct mmc_card to record the card drive strength for UHS-I modes and HS200 / HS400. For eMMC this will be needed when switching between HS200 and HS400. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Adrian Hunter authored
Make a new function out of common code used for drive strength selection. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Adrian Hunter authored
In preparation for supporting also eMMC drive strength, add the 'card' as a parameter so that the callback can distinguish different types of cards if necessary. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Adrian Hunter authored
Card drive strength selection uses a callback to which a mask of supported drive strengths is passed. Currently, the bits are checked against the values in the SD specifications. That is not necessary because the callback will anyway match the mask against a valid value. Simplify by taking the mask as is but still ensuring that the default mandatory value (type B) is always supported. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Adrian Hunter authored
Initialization of UHS-I modes for SD and SDIO cards employs a callback to allow the host driver to choose a drive strength value. Currently that assumes the card drive strength and host driver type must be the same value. Change to let the callback make that decision and return both the card drive strength and host driver type. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
Adrian Hunter authored
Enable re-tuning when tuning is executed and disable re-tuning when card is no longer initialized. In the case of SDIO suspend, the card can keep power. In that case, re-tuning need not be disabled, but, if a re-tuning timer is being used, ensure it is disabled and assume that re-tuning will be needed upon resume since it is not known how long the suspend will last. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 25 May, 2015 1 commit
-
-
Andreas Fenkart authored
Some drivers schedule automatic hw resets. An example is mwifiex, which schedules a card reset if the command handler between driver and card firmware becomes out of sync Signed-off-by:
Andreas Fenkart <afenkart@gmail.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 23 Mar, 2015 1 commit
-
-
NeilBrown authored
Every call to sdio_enable_4bit_bus is followed (on success) by a call to mmc_set_bus_width(). To simplify the code, include those calls directly in sdio_enable_4bit_bus(). Signed-off-by:
NeilBrown <neil@brown.name> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 19 Jan, 2015 1 commit
-
-
Adrian Hunter authored
For each MMC, SD and SDIO there is code that holds the clock, calls ops->execute_tuning, and releases the clock. Simplify the code a bit by providing a separate function to do that. Signed-off-by:
Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 26 Nov, 2014 2 commits
-
-
NeilBrown authored
mmc_sdio_power_restore() calls mmc_send_if_cond(host, host->card->ocr); ret = mmc_send_io_op_cond(host, 0, NULL); between mmc_go_idle() and mmc_sdio_init_card(). mmc_sdio_resume() needs to as well, else my libertas sdio wifi device doesn't resume properly from suspend. Signed-off-by:
NeilBrown <neilb@suse.de> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
NeilBrown authored
As we are restoring power to a known card, it makes sense to use the 'ocr' value known for the card rather than the generic one for the host interface. This matches the use of card->ocr passed to mmc_power_up in mmc_sdio_runtime_resume (just before mmc_sdio_power_restore is called), and the value passed to mmc_sdio_init_card() a little later in mmc_sdio_power_restore(). Suggested-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
NeilBrown <neilb@suse.de> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 24 Sep, 2014 1 commit
-
-
Joe Perches authored
Use the much more common pr_warn instead of pr_warning. Other miscellanea: o Coalesce formats o Realign arguments o Remove extra spaces when coalescing formats Signed-off-by:
Joe Perches <joe@perches.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 09 Sep, 2014 1 commit
-
-
Fu Zhonghui authored
781e989c ("mmc: sdhci: convert to new SDIO IRQ handling") and bf3b5ec6 ("mmc: sdio_irq: rework sdio irq handling") disabled the use of our own custom threaded IRQ handler, but left in an unconditional wake_up_process() on that handler at resume-time. Link: https://bugzilla.kernel.org/show_bug.cgi?id=80151 In addition, the check for MMC_CAP_SDIO_IRQ capability is added before enable sdio IRQ. Signed-off-by:
Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by:
Chris Ball <chris@printf.net> Signed-off-by:
Fu Zhonghui <zhonghui.fu@linux.intel.com> Cc: <stable@vger.kernel.org> # v3.16+ Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org>
-
- 12 May, 2014 1 commit
-
-
Seungwon Jeon authored
Timing mode identifier has same role and can take the place of speed mode. This change removes all related speed mode. Signed-off-by:
Seungwon Jeon <tgih.jun@samsung.com> Tested-by:
Jaehoon Chung <jh80.chung@samsung.com> Acked-by:
Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <chris@printf.net>
-
- 22 Apr, 2014 1 commit
-
-
Ulf Hansson authored
The sdio func device is added to the driver model after the card device. This means the sdio func device will be suspend before the card device and thus resumed after. The consequence are the mmc core don't explicity need to protect itself from receiving sdio requests in suspended state. Instead that can be handled from the sdio bus, which is thus invokes the PM callbacks instead of old dummy function. In the case were the sdio func driver don't implement the PM callbacks the mmc core will in the early phase of system suspend, remove the card from the driver model and thus power off it. Cc: Aaron Lu <aaron.lu@intel.com> Cc: NeilBrown <neilb@suse.de> Cc: Rafael J. Wysocki <rjw@rjwysocki.net> Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Reviewed-by:
Aaron Lu <aaron.lu@intel.com> Tested-by:
xiaoming wang <xiaoming.wang@intel.com> Tested-by:
Chuanxiao Dong <chuanxiao.dong@intel.com> Signed-off-by:
Chris Ball <chris@printf.net>
-
- 31 Oct, 2013 7 commits
-
-
Ulf Hansson authored
Since mmc_select_voltage now only gets called from the attach sequence, it makes sense to move the out of spec validations of the card ocr into this function. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Ulf Hansson authored
According to eMMC/SD/SDIO specs, the VDD (VCC) voltage level must be maintained during the initialization sequence. If we want/need to tune the voltage level, a complete power cycle of the card must be executed. Most host drivers conforms to the specifications by only allowing to change VDD voltage level at the MMC_POWER_UP state, but some also cares about MMC_POWER_ON state, which they should'nt. This patch will not break those drivers, but they could clean up code to better reflect what is expected from the protocol layer. A big re-work of the mmc_select_voltage function is done to only change VDD voltage level if the host supports MMC_CAP2_FULL_PWR_CYCLE. Otherwise only validation of the host and card ocr mask will be done. A very nice side-effect of this patch is that we now don't need to reset the negotiated ocr mask at the mmc_power_off function, since now it will actually reflect the present voltage level, which safely can be used at the next power up and re-initialization. Moreover, we then only need to execute mmc_select_voltage from the attach sequence. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Ulf Hansson authored
The negotiated ocr mask is directly related to the card. Once a card gets removed, the mask shall be dropped. By moving the cache of the ocr mask from the host struct to the card struct we have accomplished this. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Ulf Hansson authored
At several places in mmc_sdio_init_card function the cached mask in host->ocr were being updated. To simplify code, we make use of an local ocr parameter instead. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Ulf Hansson authored
The retry and fallback mechanism when failing to switch to 1.8V signaling voltage is handled by the SDIO card init function. Thus we can remove the duplicated old code from the attach function. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Ulf Hansson authored
This is yet another step of restructure code to be able to fixup the setup of the negotiated ocr mask. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Ulf Hansson authored
As a step to fixup the setup of the negotiated ocr mask, we need the mmc_power_up|cycle functions to take the ocr as a parameter. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
- 27 Jun, 2013 2 commits
-
-
Ulf Hansson authored
By moving code from the mmc_suspend|resume_host down into each .suspend|resume bus_ops callback, we get a more flexible solution. Some nice side effects are that we get a better understanding of each bus_ops suspend|resume sequence and the common code don't have to take care of specific corner cases, especially for the SDIO case. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Tested-by:
Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Ulf Hansson authored
This patch moves the validation for all the suspend prerequisites to be done at SUSPEND_PREPARE notification. Previously in the SDIO case parts of the validation was done from mmc_suspend_host. This patch invents a new pre_suspend bus_ops callback and implements it for SDIO. Returning an error code from it, will mean at SUSPEND_PREPARE notification, the card will be removed before proceeding with the suspend sequence. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Tested-by:
Jaehoon Chung <jh80.chung@samsung.com> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
- 26 May, 2013 2 commits
-
-
Ulf Hansson authored
SDIO is the only protocol that uses runtime pm for the card device right now. To provide the option for sd and mmc to use runtime pm as well the bus_ops callback are extended with two new functions. One for runtime_suspend and one for runtime_resume. This patch will also implement the callbacks for SDIO to make sure existing functionality is maintained. It also prepares to move away from using the mmc_power_restore_host API, since it is not needed when using runtime PM. Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Fredrik Soderstedt authored
Only execute tuning for sd and sdio devices that are using SDR50 or SDR104. Make sure clock is hold during tuning for sdio devices. Signed-off-by:
Fredrik Soderstedt <fredrik.soderstedt@stericsson.com> Acked-by:
Johan Rudholm <jrudholm@gmail.com> Acked-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
- 12 Apr, 2013 1 commit
-
-
Li Fei authored
Even in failed case of pm_runtime_get_sync, the usage_count is incremented. In order to keep the usage_count with correct value and runtime power management to behave correctly, call pm_runtime_put_noidle in such case. Signed-off-by:
Liu Chuansheng <chuansheng.liu@intel.com> Signed-off-by:
Li Fei <fei.li@intel.com> Acked-by:
Ohad Ben-Cohen <ohad@wizery.com> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
- 24 Feb, 2013 2 commits
-
-
Johan Rudholm authored
When switching SD and SDIO cards from 3.3V to 1.8V signal levels, the clock should be gated for 5 ms during the step. After enabling the clock, the host should wait for at least 1 ms before checking for failure. Failure by the card to switch is indicated by dat[0:3] being pulled low. The host should check for this condition and power-cycle the card if failure is indicated. Add a retry mechanism for the SDIO case. If the voltage switch fails repeatedly, give up and continue the initialization using the original voltage. This patch places a couple of requirements on the host driver: 1) mmc_set_ios with ios.clock = 0 must gate the clock 2) mmc_power_off must actually cut the power to the card 3) The card_busy host_ops member must be implemented if these requirements are not fulfilled, the 1.8V signal voltage switch will still be attempted but may not be successful. Signed-off-by:
Johan Rudholm <johan.rudholm@stericsson.com> Signed-off-by:
Kevin Liu <kliu5@marvell.com> Acked-by:
Ulf Hansson <ulf.hansson@linaro.org> Tested-by:
Wei WANG <wei_wang@realsil.com.cn> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Johan Rudholm authored
Allow callers to access the start_signal_voltage_switch host_ops member without going through any cmd11 logic. This is mostly a preparation for the following signal voltage switch patch. Also, reset ios.signal_voltage to its original value if start_signal_voltage_switch fails. Signed-off-by:
Johan Rudholm <johan.rudholm@stericsson.com> Acked-by:
Ulf Hansson <ulf.hansson@linaro.org> Tested-by:
Wei WANG <wei_wang@realsil.com.cn> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
- 11 Feb, 2013 3 commits
-
-
Subhash Jadavani authored
When SDIO3.0 card is detected, incorrect bus speed mode is printed as part of card detection print in kernel logs. This change fixes it so that user won't be confused by looking at incorrect card detection message in logs. Signed-off-by:
Subhash Jadavani <subhashj@codeaurora.org> Tested-by:
Jackey Shen <Jackey.Shen@amd.com> Acked-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Sujit Reddy Thumma authored
According to UHS-I initialization sequence for SDIO 3.0 cards, the host must set bit[24] (S18R) of OCR register during OCR handshake to know whether the SDIO card is capable of doing 1.8V I/O. Signed-off-by:
Sujit Reddy Thumma <sthumma@codeaurora.org> Signed-off-by:
Subhash Jadavani <subhashj@codeaurora.org> Reviewed-by:
Johan Rudholm <johan.rudholm@stericsson.com> Reviewed-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Subhash Jadavani authored
If SDIO keep power flag (MMC_PM_KEEP_POWER) is not set, card would be reinitialized during resume but as we are not resetting (CMD52 reset) the SDIO card during this reinitialization, card may fail to respond back to subsequent commands (CMD5 etc...). This change resets the card before the reinitialization of card during resume. Signed-off-by:
Subhash Jadavani <subhashj@codeaurora.org> Acked-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
- 28 Jan, 2013 3 commits
-
-
Subhash Jadavani authored
When SDIO3.0 card is detected, incorrect bus speed mode is printed as part of card detection print in kernel logs. This change fixes it so that user won't be confused by looking at incorrect card detection message in logs. Signed-off-by:
Subhash Jadavani <subhashj@codeaurora.org> Tested-by:
Jackey Shen <Jackey.Shen@amd.com> Acked-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Sujit Reddy Thumma authored
According to UHS-I initialization sequence for SDIO 3.0 cards, the host must set bit[24] (S18R) of OCR register during OCR handshake to know whether the SDIO card is capable of doing 1.8V I/O. Signed-off-by:
Sujit Reddy Thumma <sthumma@codeaurora.org> Signed-off-by:
Subhash Jadavani <subhashj@codeaurora.org> Reviewed-by:
Johan Rudholm <johan.rudholm@stericsson.com> Reviewed-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
Subhash Jadavani authored
If SDIO keep power flag (MMC_PM_KEEP_POWER) is not set, card would be reinitialized during resume but as we are not resetting (CMD52 reset) the SDIO card during this reinitialization, card may fail to respond back to subsequent commands (CMD5 etc...). This change resets the card before the reinitialization of card during resume. Signed-off-by:
Subhash Jadavani <subhashj@codeaurora.org> Acked-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by:
Chris Ball <cjb@laptop.org>
-
- 01 Sep, 2012 1 commit
-
-
Masanari Iida authored
Correct spelling typo in drivers/mmc Signed-off-by:
Masanari Iida <standby24x7@gmail.com> Signed-off-by:
Jiri Kosina <jkosina@suse.cz>
-
- 22 Jul, 2012 1 commit
-
-
Aaron Lu authored
Add a call to mmc_set_signal_voltage() to set signal voltage to 3.3v in mmc_power_up so that we do not need to touch signal voltage setting in mmc/sd/sdio init functions and rescan function. For mmc/sd cards, when doing a suspend/resume cycle, consider the unsafe resume case, the card will lose its power and when powered on again, we will set signal voltage to 3.3v in mmc_power_up before its resume function gets called, which will re-init the card. And for sdio cards, when doing a suspend/resume cycle, consider the unsafe resume case, the card will either lose its power or not depending on if it wants to wakeup the host. If power is not maintained, it is the same case as mmc/sd cards. If power is maintained, mmc_power_up will not be called and the card's signal voltage will remain at the last setting. Signed-off-by:
Aaron Lu <aaron.lu@amd.com> Tested-by:
Venkatraman S <svenkatr@ti.com> Signed-off-by:
Chris Ball <cjb@laptop.org>
-