Przeglądaj źródła

mmc: sdhci-tegra: free irq on error and remove

Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Acked-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Chris Ball <cjb@laptop.org>
Wolfram Sang 14 lat temu
rodzic
commit
8154b5756d
1 zmienionych plików z 5 dodań i 1 usunięć
  1. 5 1
      drivers/mmc/host/sdhci-tegra.c

+ 5 - 1
drivers/mmc/host/sdhci-tegra.c

@@ -169,7 +169,7 @@ static int tegra_sdhci_pltfm_init(struct sdhci_host *host,
 		if (rc) {
 		if (rc) {
 			dev_err(mmc_dev(host->mmc),
 			dev_err(mmc_dev(host->mmc),
 				"failed to allocate wp gpio\n");
 				"failed to allocate wp gpio\n");
-			goto out_cd;
+			goto out_irq;
 		}
 		}
 		tegra_gpio_enable(plat->wp_gpio);
 		tegra_gpio_enable(plat->wp_gpio);
 		gpio_direction_input(plat->wp_gpio);
 		gpio_direction_input(plat->wp_gpio);
@@ -195,6 +195,9 @@ out_wp:
 		gpio_free(plat->wp_gpio);
 		gpio_free(plat->wp_gpio);
 	}
 	}
 
 
+out_irq:
+	if (gpio_is_valid(plat->cd_gpio))
+		free_irq(gpio_to_irq(plat->cd_gpio), host);
 out_cd:
 out_cd:
 	if (gpio_is_valid(plat->cd_gpio)) {
 	if (gpio_is_valid(plat->cd_gpio)) {
 		tegra_gpio_disable(plat->cd_gpio);
 		tegra_gpio_disable(plat->cd_gpio);
@@ -225,6 +228,7 @@ static void tegra_sdhci_pltfm_exit(struct sdhci_host *host)
 	}
 	}
 
 
 	if (gpio_is_valid(plat->cd_gpio)) {
 	if (gpio_is_valid(plat->cd_gpio)) {
+		free_irq(gpio_to_irq(plat->cd_gpio), host);
 		tegra_gpio_disable(plat->cd_gpio);
 		tegra_gpio_disable(plat->cd_gpio);
 		gpio_free(plat->cd_gpio);
 		gpio_free(plat->cd_gpio);
 	}
 	}