From owner-freebsd-arm@FreeBSD.ORG Tue May 13 13:30:20 2014 Return-Path: Delivered-To: freebsd-arm@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BEE8C9A5 for ; Tue, 13 May 2014 13:30:20 +0000 (UTC) Received: from mho-02-ewr.mailhop.org (mho-02-ewr.mailhop.org [204.13.248.72]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9377526C3 for ; Tue, 13 May 2014 13:30:20 +0000 (UTC) Received: from c-24-8-230-52.hsd1.co.comcast.net ([24.8.230.52] helo=damnhippie.dyndns.org) by mho-02-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1WkCmb-000Ka4-3g; Tue, 13 May 2014 13:30:13 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id s4DDU8TL035221; Tue, 13 May 2014 07:30:08 -0600 (MDT) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 24.8.230.52 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX19a6+QdkwttetKvNGoxYVmz Subject: Re: Patch to make BBB properly boot from eMMC every time From: Ian Lepore To: "Sulev-Madis Silber (ketas)" In-Reply-To: <5371E1F3.6080002@hot.ee> References: <5371E1F3.6080002@hot.ee> Content-Type: text/plain; charset="us-ascii" Date: Tue, 13 May 2014 07:30:08 -0600 Message-ID: <1399987808.56626.2.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: freebsd-arm X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 May 2014 13:30:20 -0000 On Tue, 2014-05-13 at 12:12 +0300, Sulev-Madis Silber (ketas) 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. > > 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); > ------------------------------------------------------------------------- Confused about the cause of the results, yes. I think the printf I had you add to help me figure out the problem just changed the timing of the retry to make it work on the second try, but I have no idea why. Does anybody else with a BBB see the device randomly boot up as 1 or 4 or 8 bits, changing from one boot to the next? The bits are reported in the mmcsd0 line: mmcsd0: 8GB at mmc0 50.0MHz/4bit/65535-block That's from a wandboard, but a BBB eMMC should always be 8 bits. -- Ian