Commit c10bc372 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Ulf Hansson

mmc: sdhci-pci: Convert to use managed functions (part2)

The commit 52ac7acf ("mmc: sdhci-pci: Convert to use managed functions
pcim_* and devm_*") converted ->probe() / ->remove() functions to use device
managed resource API. Here is a follow up to cover sdhci_pci_probe_slot() and
sdhci_pci_remove_slot().
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 923dff87
...@@ -156,7 +156,7 @@ static void sdhci_pci_add_own_cd(struct sdhci_pci_slot *slot) ...@@ -156,7 +156,7 @@ static void sdhci_pci_add_own_cd(struct sdhci_pci_slot *slot)
if (!gpio_is_valid(gpio)) if (!gpio_is_valid(gpio))
return; return;
err = gpio_request(gpio, "sd_cd"); err = devm_gpio_request(&slot->chip->pdev->dev, gpio, "sd_cd");
if (err < 0) if (err < 0)
goto out; goto out;
...@@ -179,7 +179,7 @@ static void sdhci_pci_add_own_cd(struct sdhci_pci_slot *slot) ...@@ -179,7 +179,7 @@ static void sdhci_pci_add_own_cd(struct sdhci_pci_slot *slot)
return; return;
out_free: out_free:
gpio_free(gpio); devm_gpio_free(&slot->chip->pdev->dev, gpio);
out: out:
dev_warn(&slot->chip->pdev->dev, "failed to setup card detect wake up\n"); dev_warn(&slot->chip->pdev->dev, "failed to setup card detect wake up\n");
} }
...@@ -188,8 +188,6 @@ static void sdhci_pci_remove_own_cd(struct sdhci_pci_slot *slot) ...@@ -188,8 +188,6 @@ static void sdhci_pci_remove_own_cd(struct sdhci_pci_slot *slot)
{ {
if (slot->cd_irq >= 0) if (slot->cd_irq >= 0)
free_irq(slot->cd_irq, slot); free_irq(slot->cd_irq, slot);
if (gpio_is_valid(slot->cd_gpio))
gpio_free(slot->cd_gpio);
} }
#else #else
...@@ -1615,7 +1613,6 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot( ...@@ -1615,7 +1613,6 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
slot->chip = chip; slot->chip = chip;
slot->host = host; slot->host = host;
slot->pci_bar = bar;
slot->rst_n_gpio = -EINVAL; slot->rst_n_gpio = -EINVAL;
slot->cd_gpio = -EINVAL; slot->cd_gpio = -EINVAL;
slot->cd_idx = -1; slot->cd_idx = -1;
...@@ -1643,27 +1640,22 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot( ...@@ -1643,27 +1640,22 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
host->irq = pdev->irq; host->irq = pdev->irq;
ret = pci_request_region(pdev, bar, mmc_hostname(host->mmc)); ret = pcim_iomap_regions(pdev, BIT(bar), mmc_hostname(host->mmc));
if (ret) { if (ret) {
dev_err(&pdev->dev, "cannot request region\n"); dev_err(&pdev->dev, "cannot request region\n");
goto cleanup; goto cleanup;
} }
host->ioaddr = pci_ioremap_bar(pdev, bar); host->ioaddr = pcim_iomap_table(pdev)[bar];
if (!host->ioaddr) {
dev_err(&pdev->dev, "failed to remap registers\n");
ret = -ENOMEM;
goto release;
}
if (chip->fixes && chip->fixes->probe_slot) { if (chip->fixes && chip->fixes->probe_slot) {
ret = chip->fixes->probe_slot(slot); ret = chip->fixes->probe_slot(slot);
if (ret) if (ret)
goto unmap; goto cleanup;
} }
if (gpio_is_valid(slot->rst_n_gpio)) { if (gpio_is_valid(slot->rst_n_gpio)) {
if (!gpio_request(slot->rst_n_gpio, "eMMC_reset")) { if (!devm_gpio_request(&pdev->dev, slot->rst_n_gpio, "eMMC_reset")) {
gpio_direction_output(slot->rst_n_gpio, 1); gpio_direction_output(slot->rst_n_gpio, 1);
slot->host->mmc->caps |= MMC_CAP_HW_RESET; slot->host->mmc->caps |= MMC_CAP_HW_RESET;
slot->hw_reset = sdhci_pci_gpio_hw_reset; slot->hw_reset = sdhci_pci_gpio_hw_reset;
...@@ -1702,18 +1694,9 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot( ...@@ -1702,18 +1694,9 @@ static struct sdhci_pci_slot *sdhci_pci_probe_slot(
return slot; return slot;
remove: remove:
if (gpio_is_valid(slot->rst_n_gpio))
gpio_free(slot->rst_n_gpio);
if (chip->fixes && chip->fixes->remove_slot) if (chip->fixes && chip->fixes->remove_slot)
chip->fixes->remove_slot(slot, 0); chip->fixes->remove_slot(slot, 0);
unmap:
iounmap(host->ioaddr);
release:
pci_release_region(pdev, bar);
cleanup: cleanup:
if (slot->data && slot->data->cleanup) if (slot->data && slot->data->cleanup)
slot->data->cleanup(slot->data); slot->data->cleanup(slot->data);
...@@ -1738,17 +1721,12 @@ static void sdhci_pci_remove_slot(struct sdhci_pci_slot *slot) ...@@ -1738,17 +1721,12 @@ static void sdhci_pci_remove_slot(struct sdhci_pci_slot *slot)
sdhci_remove_host(slot->host, dead); sdhci_remove_host(slot->host, dead);
if (gpio_is_valid(slot->rst_n_gpio))
gpio_free(slot->rst_n_gpio);
if (slot->chip->fixes && slot->chip->fixes->remove_slot) if (slot->chip->fixes && slot->chip->fixes->remove_slot)
slot->chip->fixes->remove_slot(slot, dead); slot->chip->fixes->remove_slot(slot, dead);
if (slot->data && slot->data->cleanup) if (slot->data && slot->data->cleanup)
slot->data->cleanup(slot->data); slot->data->cleanup(slot->data);
pci_release_region(slot->chip->pdev, slot->pci_bar);
sdhci_free_host(slot->host); sdhci_free_host(slot->host);
} }
......
...@@ -72,7 +72,6 @@ struct sdhci_pci_slot { ...@@ -72,7 +72,6 @@ struct sdhci_pci_slot {
struct sdhci_host *host; struct sdhci_host *host;
struct sdhci_pci_data *data; struct sdhci_pci_data *data;
int pci_bar;
int rst_n_gpio; int rst_n_gpio;
int cd_gpio; int cd_gpio;
int cd_irq; int cd_irq;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment