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;