Module Name:    src
Committed By:   ryo
Date:           Fri Jun 23 08:43:59 UTC 2017

Modified Files:
        src/sys/dev/sdmmc: sdhc.c sdhcreg.h

Log Message:
fix problem for ESDHC/USDHC due to change of r1.96

on ESDHC/USDHC, even if the iosize is less than SDHC_HOST_CTL_VERSION,
specver must be an appropriate value.


To generate a diff of this commit:
cvs rdiff -u -r1.100 -r1.101 src/sys/dev/sdmmc/sdhc.c
cvs rdiff -u -r1.18 -r1.19 src/sys/dev/sdmmc/sdhcreg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/sdmmc/sdhc.c
diff -u src/sys/dev/sdmmc/sdhc.c:1.100 src/sys/dev/sdmmc/sdhc.c:1.101
--- src/sys/dev/sdmmc/sdhc.c:1.100	Sat Apr 22 21:49:41 2017
+++ src/sys/dev/sdmmc/sdhc.c	Fri Jun 23 08:43:59 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: sdhc.c,v 1.100 2017/04/22 21:49:41 jmcneill Exp $	*/
+/*	$NetBSD: sdhc.c,v 1.101 2017/06/23 08:43:59 ryo Exp $	*/
 /*	$OpenBSD: sdhc.c,v 1.25 2009/01/13 19:44:20 grange Exp $	*/
 
 /*
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sdhc.c,v 1.100 2017/04/22 21:49:41 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sdhc.c,v 1.101 2017/06/23 08:43:59 ryo Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_sdmmc.h"
@@ -292,42 +292,41 @@ sdhc_host_found(struct sdhc_softc *sc, b
 	callout_init(&hp->tuning_timer, CALLOUT_MPSAFE);
 	callout_setfunc(&hp->tuning_timer, sdhc_tuning_timer, hp);
 
-	if (iosize <= SDHC_HOST_CTL_VERSION) {
-		aprint_normal_dev(sc->sc_dev, "SDHC NO-VERS");
-		hp->specver = -1;
+	if (ISSET(hp->sc->sc_flags, SDHC_FLAG_USDHC)) {
+		sdhcver = SDHC_SPEC_VERS_300 << SDHC_SPEC_VERS_SHIFT;
+	} else if (ISSET(hp->sc->sc_flags, SDHC_FLAG_ENHANCED)) {
+		sdhcver = HREAD4(hp, SDHC_ESDHC_HOST_CTL_VERSION);
+	} else if (iosize <= SDHC_HOST_CTL_VERSION) {
+		sdhcver = SDHC_SPEC_NOVERS << SDHC_SPEC_VERS_SHIFT;
 	} else {
-		if (ISSET(hp->sc->sc_flags, SDHC_FLAG_USDHC)) {
-			sdhcver = SDHC_SPEC_VERS_300 << SDHC_SPEC_VERS_SHIFT;
-		} else if (ISSET(hp->sc->sc_flags, SDHC_FLAG_ENHANCED)) {
-			sdhcver = HREAD4(hp, SDHC_ESDHC_HOST_CTL_VERSION);
-		} else
-			sdhcver = HREAD2(hp, SDHC_HOST_CTL_VERSION);
-		aprint_normal_dev(sc->sc_dev, "SDHC ");
-		hp->specver = SDHC_SPEC_VERSION(sdhcver);
-		switch (SDHC_SPEC_VERSION(sdhcver)) {
-		case SDHC_SPEC_VERS_100:
-			aprint_normal("1.0");
-			break;
-
-		case SDHC_SPEC_VERS_200:
-			aprint_normal("2.0");
-			break;
-
-		case SDHC_SPEC_VERS_300:
-			aprint_normal("3.0");
-			break;
-
-		case SDHC_SPEC_VERS_400:
-			aprint_normal("4.0");
-			break;
-
-		default:
-			aprint_normal("unknown version(0x%x)",
-			    SDHC_SPEC_VERSION(sdhcver));
-			break;
-		}
-		aprint_normal(", rev %u", SDHC_VENDOR_VERSION(sdhcver));
+		sdhcver = HREAD2(hp, SDHC_HOST_CTL_VERSION);
+	}
+	aprint_normal_dev(sc->sc_dev, "SDHC ");
+	hp->specver = SDHC_SPEC_VERSION(sdhcver);
+	switch (SDHC_SPEC_VERSION(sdhcver)) {
+	case SDHC_SPEC_VERS_100:
+		aprint_normal("1.0");
+		break;
+	case SDHC_SPEC_VERS_200:
+		aprint_normal("2.0");
+		break;
+	case SDHC_SPEC_VERS_300:
+		aprint_normal("3.0");
+		break;
+	case SDHC_SPEC_VERS_400:
+		aprint_normal("4.0");
+		break;
+	case SDHC_SPEC_NOVERS:
+		hp->specver = -1;
+		aprint_normal("NO-VERS");
+		break;
+	default:
+		aprint_normal("unknown version(0x%x)",
+		    SDHC_SPEC_VERSION(sdhcver));
+		break;
 	}
+	if (SDHC_SPEC_VERSION(sdhcver) != SDHC_SPEC_NOVERS)
+		aprint_normal(", rev %u", SDHC_VENDOR_VERSION(sdhcver));
 
 	/*
 	 * Reset the host controller and enable interrupts.

Index: src/sys/dev/sdmmc/sdhcreg.h
diff -u src/sys/dev/sdmmc/sdhcreg.h:1.18 src/sys/dev/sdmmc/sdhcreg.h:1.19
--- src/sys/dev/sdmmc/sdhcreg.h:1.18	Thu Dec 31 11:53:19 2015
+++ src/sys/dev/sdmmc/sdhcreg.h	Fri Jun 23 08:43:59 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: sdhcreg.h,v 1.18 2015/12/31 11:53:19 ryo Exp $	*/
+/*	$NetBSD: sdhcreg.h,v 1.19 2017/06/23 08:43:59 ryo Exp $	*/
 /*	$OpenBSD: sdhcreg.h,v 1.4 2006/07/30 17:20:40 fgsch Exp $	*/
 
 /*
@@ -246,6 +246,7 @@
 #define SDHC_SPEC_VERS_200		0x01
 #define SDHC_SPEC_VERS_300		0x02
 #define SDHC_SPEC_VERS_400		0x03
+#define SDHC_SPEC_NOVERS		0xff	/* dummy */
 
 /* SDHC_CAPABILITIES decoding */
 #define SDHC_BASE_V3_FREQ_KHZ(cap)					\

Reply via email to