On Sun, Apr 24, 2016 at 08:23:53AM +0000, Karel W. Dingeldey wrote: > > > On 2016-04-22 10:32, Jonathan Gray wrote: > > > On Fri, Apr 22, 2016 at 10:10:10AM +0000, Karel W. Dingeldey wrote: > > > >> Hi everyone, > >> > >> I'm currently using OpenBSD 5.7 and 5.8 on a couple of BBBs -- works > >> like a charm. > >> > >> Since 5.9 came out a couple of days ago, I wanted to use it on another > >> BBB (new install). > >> > >> When it comes to stating which hard drive it should install to (eMMC in > >> this instance), I can only select sd0, which is the SD card. For some > >> reason the eMMC isn't recognised anymore in this version. > >> > >> In the change log I saw that some amendments were made to the sdmmc > >> driver (supposedly to improve eMMC support on devices like the BBB). In > >> my case it has quite the contrary effect. > >> > >> Anyone a similar experience? Maybe a hint how to sort it out? > >> > >> ThanksKarel > > > > Which version of u-boot are you using? It seems newer versions may be > > causing problems. > > > > Can you include the console output here? > > Output from the installation boot (are second and third line the > issue?):
Try the following fix adapted from FreeBSD. This is also in the latest armv7 snapshot. Index: ommmc.c =================================================================== RCS file: /cvs/src/sys/arch/armv7/omap/ommmc.c,v retrieving revision 1.20 diff -u -p -r1.20 ommmc.c --- ommmc.c 7 May 2016 00:18:23 -0000 1.20 +++ ommmc.c 19 May 2016 09:55:22 -0000 @@ -1041,7 +1041,18 @@ ommmc_soft_reset(struct ommmc_softc *sc, DPRINTF(1,("%s: software reset reg=%#x\n", DEVNAME(sc), mask)); HSET4(sc, MMCHS_SYSCTL, mask); - delay(10); + /* + * If we read the software reset register too fast after writing it we + * can get back a zero that means the reset hasn't started yet rather + * than that the reset is complete. Per TI recommendations, work around + * it by reading until we see the reset bit asserted, then read until + * it's clear. + */ + for (timo = 1000; timo > 0; timo--) { + if (ISSET(HREAD4(sc, MMCHS_SYSCTL), mask)) + break; + delay(1); + } for (timo = 1000; timo > 0; timo--) { if (!ISSET(HREAD4(sc, MMCHS_SYSCTL), mask)) break;