diff options
author | vjagadish <vjagadish@nvidia.com> | 2011-09-13 13:35:39 +0530 |
---|---|---|
committer | Varun Colbert <vcolbert@nvidia.com> | 2011-09-13 18:53:47 -0700 |
commit | b9a8d5523af94a3eb033179757f7c63d9bd2856a (patch) | |
tree | fe878f5b020d4b4bf393ba0fc353ca72d3b8a63f /drivers | |
parent | ea3ee402c624826f70c735f56a017326e3c7ed83 (diff) |
sdhci: tegra: Detect SDcard inserted/Removed during suspend
Update card_present variable during resume by reading
card detect gpio value inorder to detect cards inserted
or removed during suspend
Bug 871234
Change-Id: I4e068d5ad595d58fa245d7ec1fb24973ffdd4aca
Reviewed-on: http://git-master/r/51778
Reviewed-by: Venkata Jagadish <vjagadish@nvidia.com>
Tested-by: Venkata Jagadish <vjagadish@nvidia.com>
Reviewed-by: Pavan Kunapuli <pkunapuli@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mmc/host/sdhci-tegra.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c index 0ee91e543200..e5fc4ca495d8 100644 --- a/drivers/mmc/host/sdhci-tegra.c +++ b/drivers/mmc/host/sdhci-tegra.c @@ -604,7 +604,7 @@ static int tegra_sdhci_suspend(struct platform_device *pdev, pm_message_t state) static int tegra_sdhci_resume(struct platform_device *pdev) { struct tegra_sdhci_host *host = platform_get_drvdata(pdev); - int ret = 0; + int ret = 0, prev_card_present_stat = 0; if (host->card_always_on && is_card_sdio(host->sdhci->mmc->card)) { int ret = 0; @@ -631,10 +631,21 @@ static int tegra_sdhci_resume(struct platform_device *pdev) ret = regulator_enable(host->reg_vddio); tegra_sdhci_enable_clock(host, SDHCI_TEGRA_MIN_CONTROLLER_CLOCK); + ret = sdhci_resume_host(host->sdhci); if (ret) pr_err("%s: failed, error = %d\n", __func__, ret); + if (host->cd_gpio != -1) { + prev_card_present_stat = host->card_present; + + host->card_present = + (gpio_get_value(host->cd_gpio) == host->cd_gpio_polarity); + + if(prev_card_present_stat != host->card_present) + sdhci_card_detect_callback(host->sdhci); + } + return ret; } #else |