Hi
Compiling an armv7 kernel with option SDHC_DEBUG fails as there is no definition
of the ommmc_dump_regs function, so add it.
Tested on real hardware (Beaglebone Black):
ommmc0 at omap0
ommmc0: SYSCONFIG: 0x00002015 SYSSTATUS: 0x00000001 CSRE: 0x00000000
ommmc0: SYSTEST: 0x00000000 CON: 0x00000600 PWCNT: 0x00000000
ommmc0: BLK: 0x00000000 ARG: 0x00000000 CMD: 0x00000000
ommmc0: RSP10: 0x00000000 RSP32: 0x00000000 RSP54: 0x00000000
ommmc0: RSP76: 0x00000000 DATA: 0x00000000 PSTATE: 0x01f70000
ommmc0: HCTL: 0x00000000 SYSCTL: 0x00000000 STAT: 0x00000040
ommmc0: IE: 0x00000000 ISE: 0x00000000 AC12: 0x00000000
ommmc0: CAPA: 0x06e10080 CUR_CAPA: 0x00000000 REV: 0x31010000
ommmc0: software reset reg=0x1000000
sdmmc0 at ommmc0
This will help figure out why the onboard eMMC flash memory isn't being
configured properly on later BBB revisions where they bumped it from 2GB -> 4GB.
Ian
Index: ommmc.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/omap/ommmc.c,v
retrieving revision 1.14
diff -u -p -r1.14 ommmc.c
--- ommmc.c 30 May 2015 02:17:36 -0000 1.14
+++ ommmc.c 2 Jul 2015 01:48:32 -0000
@@ -244,7 +244,41 @@ void ommmc_write_data(struct ommmc_softc
#ifdef SDHC_DEBUG
int ommmcdebug = 20;
#define DPRINTF(n,s) do { if ((n) <= ommmcdebug) printf s; } while (0)
-void ommmc_dump_regs(struct ommmc_softc *);
+void
+ommmc_dump_regs(struct ommmc_softc *sc)
+{
+ DPRINTF(3,("%s: SYSCONFIG: 0x%08x SYSSTATUS: 0x%08x CSRE: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_SYSCONFIG), HREAD4(sc, MMCHS_SYSSTATUS),
+ HREAD4(sc, MMCHS_CSRE)));
+
+ DPRINTF(3,("%s: SYSTEST: 0x%08x CON: 0x%08x PWCNT: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_SYSTEST), HREAD4(sc, MMCHS_CON),
+ HREAD4(sc, MMCHS_PWCNT)));
+
+ DPRINTF(3,("%s: BLK: 0x%08x ARG: 0x%08x CMD: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_BLK), HREAD4(sc, MMCHS_ARG),
+ HREAD4(sc, MMCHS_CMD)));
+
+ DPRINTF(3,("%s: RSP10: 0x%08x RSP32: 0x%08x RSP54: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_RSP10), HREAD4(sc, MMCHS_RSP32),
+ HREAD4(sc, MMCHS_RSP54)));
+
+ DPRINTF(3,("%s: RSP76: 0x%08x DATA: 0x%08x PSTATE: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_RSP76), HREAD4(sc, MMCHS_DATA),
+ HREAD4(sc, MMCHS_PSTATE)));
+
+ DPRINTF(3,("%s: HCTL: 0x%08x SYSCTL: 0x%08x STAT: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_HCTL), HREAD4(sc, MMCHS_SYSCTL),
+ HREAD4(sc, MMCHS_STAT)));
+
+ DPRINTF(3,("%s: IE: 0x%08x ISE: 0x%08x AC12: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_IE), HREAD4(sc, MMCHS_ISE),
+ HREAD4(sc, MMCHS_AC12)));
+
+ DPRINTF(3,("%s: CAPA: 0x%08x CUR_CAPA: 0x%08x REV: 0x%08x\n",
+ DEVNAME(sc), HREAD4(sc, MMCHS_CAPA), HREAD4(sc, MMCHS_CUR_CAPA),
+ HREAD4(sc, MMCHS_REV)));
+}
#else
#define DPRINTF(n,s) do {} while(0)
#endif