svn commit: r353575 - head/sys/dev/mmc/host
Ruslan Bukin
br at FreeBSD.org
Tue Oct 15 17:24:22 UTC 2019
Author: br
Date: Tue Oct 15 17:24:21 2019
New Revision: 353575
URL: https://svnweb.freebsd.org/changeset/base/353575
Log:
Fix dwmmc(4) driver attachment when ext_resources are not present.
Ignore only ENOENT (no DTS properties found) and ENODEV (driver not
present) non-zero return values from ext_resources.
Reviewed by: manu
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D22043
Modified:
head/sys/dev/mmc/host/dwmmc.c
Modified: head/sys/dev/mmc/host/dwmmc.c
==============================================================================
--- head/sys/dev/mmc/host/dwmmc.c Tue Oct 15 17:17:16 2019 (r353574)
+++ head/sys/dev/mmc/host/dwmmc.c Tue Oct 15 17:24:21 2019 (r353575)
@@ -457,20 +457,32 @@ parse_fdt(struct dwmmc_softc *sc)
/* 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 @@ parse_fdt(struct dwmmc_softc *sc)
/* 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 @@ parse_fdt(struct dwmmc_softc *sc)
* 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) {
More information about the svn-src-all
mailing list