diff --git a/sys/dev/sdhci/sdhci_fdt_gpio.c b/sys/dev/sdhci/sdhci_fdt_gpio.c index 2f2fb1864f2..f3c8f7bc948 100644 --- a/sys/dev/sdhci/sdhci_fdt_gpio.c +++ b/sys/dev/sdhci/sdhci_fdt_gpio.c @@ -220,9 +220,14 @@ sdhci_fdt_gpio_teardown(struct sdhci_fdt_gpio *gpio) if (gpio == NULL) return; - if (gpio->cd_ihandler != NULL) { + if (gpio->cd_ihandler != NULL) bus_teardown_intr(gpio->dev, gpio->cd_ires, gpio->cd_ihandler); - } + if (gpio->wp_pin != NULL) + gpio_pin_release(gpio->wp_pin); + if (gpio->cd_pin != NULL) + gpio_pin_release(gpio->cd_pin); + if (gpio->cd_ires != NULL) + bus_release_resource(gpio->dev, SYS_RES_IRQ, 0, gpio->cd_ires); free(gpio, M_DEVBUF); }