Patch to make BBB properly boot from eMMC every time

Warner Losh imp at bsdimp.com
Tue May 13 14:03:37 UTC 2014


On May 13, 2014, at 3:12 AM, Sulev-Madis Silber (ketas) <madis555 at hot.ee> wrote:

> On my BBB, I need following patch to boot from eMMC 100% of cases.
> Without that, device is detected with 1 / 4 bit bus (it's actually 8
> bit) or not at all (then boot fails).
> 
> Actually, that code looks like weird way to implement sleep(), or at
> least it has such (side) effect.

So you added a printf and the problem went away. That’s good info, but not sufficient. Does the problem go away if you put a DELAY(10) or something like that instead? That’s a better fix, or better yet, more nuanced retry...

Warner

> Actually ian@ made that patch, and was confused about results.
> 
> 
> -------------------------------------------------------------------------
> Index: sys/dev/mmc/mmc.c
> ===================================================================
> --- sys/dev/mmc/mmc.c   (revision 264141)
> +++ sys/dev/mmc/mmc.c   (working copy)
> @@ -769,8 +769,10 @@ mmc_test_bus_width(struct mmc_softc *sc)
>                data.data = p8;
>                data.len = 8;
>                data.flags = MMC_DATA_WRITE;
> -               mmc_wait_for_cmd(sc, &cmd, 0);
> -
> +               err = mmc_wait_for_cmd(sc, &cmd, 0);
> +               if (err != 0)
> +                       device_printf(sc->dev, "BUSTEST_W err %d\n", err);
> +
>                memset(&cmd, 0, sizeof(cmd));
>                memset(&data, 0, sizeof(data));
>                cmd.opcode = MMC_BUSTEST_R;
> @@ -782,7 +784,12 @@ mmc_test_bus_width(struct mmc_softc *sc)
>                data.len = 8;
>                data.flags = MMC_DATA_READ;
>                err = mmc_wait_for_cmd(sc, &cmd, 0);
> -
> +               if (err != 0)
> +                       device_printf(sc->dev, "BUSTEST_R err %d\n", err);
> +
> +               device_printf(sc->dev, "read %02x %02x %02x %02x %02x
> %02x %02x %02x\n",
> +                       buf[0], buf[1], buf[2], buf[3], buf[4], buf[5],
> buf[6], buf[7]);
> +
>                mmcbr_set_bus_width(sc->dev, bus_width_1);
>                mmcbr_update_ios(sc->dev);
> -------------------------------------------------------------------------
> _______________________________________________
> freebsd-arm at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arm
> To unsubscribe, send any mail to "freebsd-arm-unsubscribe at freebsd.org"

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 842 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freebsd.org/pipermail/freebsd-arm/attachments/20140513/953a9eae/attachment.sig>


More information about the freebsd-arm mailing list