mmc: sdhci-pci: Convert to use managed functions (part2)
The commit 52ac7acf41
("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: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
923dff8737
commit
c10bc37223
|
@ -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)
|
||||||
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)
|
||||||
{
|
{
|
||||||
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(
|
||||||
|
|
||||||
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(
|
||||||
|
|
||||||
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(
|
||||||
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)
|
||||||
|
|
||||||
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 {
|
||||||
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;
|
||||||
|
|
Loading…
Reference in New Issue