Index: head/sys/dev/mmc/host/dwmmc.c =================================================================== --- head/sys/dev/mmc/host/dwmmc.c +++ head/sys/dev/mmc/host/dwmmc.c @@ -457,20 +457,32 @@ /* IP block reset is optional */ error = hwreset_get_by_ofw_name(sc->dev, 0, "reset", &sc->hwreset); - if (error != 0 && error != ENOENT) + if (error != 0 && + error != ENOENT && + error != ENODEV) { device_printf(sc->dev, "Cannot get reset\n"); + goto fail; + } /* vmmc regulator is optional */ error = regulator_get_by_ofw_property(sc->dev, 0, "vmmc-supply", &sc->vmmc); - if (error != 0 && error != ENOENT) + if (error != 0 && + error != ENOENT && + error != ENODEV) { device_printf(sc->dev, "Cannot get regulator 'vmmc-supply'\n"); + goto fail; + } /* vqmmc regulator is optional */ error = regulator_get_by_ofw_property(sc->dev, 0, "vqmmc-supply", &sc->vqmmc); - if (error != 0 && error != ENOENT) + if (error != 0 && + error != ENOENT && + error != ENODEV) { device_printf(sc->dev, "Cannot get regulator 'vqmmc-supply'\n"); + goto fail; + } /* Assert reset first */ if (sc->hwreset != NULL) { @@ -483,8 +495,12 @@ /* BIU (Bus Interface Unit clock) is optional */ error = clk_get_by_ofw_name(sc->dev, 0, "biu", &sc->biu); - if (error != 0 && error != ENOENT) + if (error != 0 && + error != ENOENT && + error != ENODEV) { device_printf(sc->dev, "Cannot get 'biu' clock\n"); + goto fail; + } if (sc->biu) { error = clk_enable(sc->biu); @@ -499,8 +515,12 @@ * if no clock-frequency property is given */ error = clk_get_by_ofw_name(sc->dev, 0, "ciu", &sc->ciu); - if (error != 0 && error != ENOENT) + if (error != 0 && + error != ENOENT && + error != ENODEV) { device_printf(sc->dev, "Cannot get 'ciu' clock\n"); + goto fail; + } if (sc->ciu) { if (bus_hz != 0) {