svn commit: r353575 - head/sys/dev/mmc/host

Emmanuel Vadot manu at bidouilliste.com
Tue Oct 15 17:35:00 UTC 2019


On Tue, 15 Oct 2019 17:24:22 +0000 (UTC)
Ruslan Bukin <br at FreeBSD.org> wrote:

> 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

 I've just realized that you are probably using the SOCFPGA kernel
configuration and it doesn't have option EXT_RESOURCES so how did you
got those errors ?

> 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) {


-- 
Emmanuel Vadot <manu at bidouilliste.com>


More information about the svn-src-head mailing list