From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Date: Tue, 13 Sep 2016 13:50:20 +0200 Subject: [U-Boot] [bug report] sunxi: booting from eMMC In-Reply-To: <413059d4-d0d7-609b-4798-ee9c4aa181e4@redhat.com> References: <20160912135651.GA18160@lukather> <413059d4-d0d7-609b-4798-ee9c4aa181e4@redhat.com> Message-ID: <20160913114649.GA12521@lukather> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, On Mon, Sep 12, 2016 at 04:47:49PM +0200, Hans de Goede wrote: > On 12-09-16 15:56, Maxime Ripard wrote: > >Hi, > > > >On Mon, Sep 12, 2016 at 01:53:24PM +0200, Ciprian Manea wrote: > >>I'm using a SinA33 dev board (Allwinner a33 SoC) and at the moment > >>I'm trying to boot from the eMMC. > >> > >>But it fails in the following way: > >> > >> > >>*Got the following error at boot time:* > >>*U-Boot SPL 2016.09-rc2-00125-g6e8b42f (Sep 08 2016 - 11:00:46) DRAM: 1024 > >>MiB Trying to boot from MMC2 MMC Device 1 not found spl: could not find mmc > >>device. error: -19 SPL: failed to boot from all boot devices ### ERROR ### > >>Please RESET the board ###* > > > >So I've been on the same issue for the last couple of days. > > > >Since that board is already supported, adding support for the eMMC > >basically came down to that patch on top of 2016.09-rc2. > > > >http://code.bulix.org/kcgxri-106037?raw > > > >(Quite hackish, the 8-Bits part being a separate issue that would need > >to be addressed somehow). > > > >However, it doesn't work, neither when flashing u-boot on the eMMC > >itself (where there's a timeout error in the SPL) nor when trying to > >access the eMMC from a U-Boot loaded from the (external) SD. > > > >In the latter case, even mmc dev 1 fails silently. > > > >I traced that down to the mmc_switch here: > >http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/mmc.c#l530 > > > >Which fails with ETIMEDOUT, and more specifically, it's the call to > >mmc_rint_wait here > >http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/mmc/sunxi_mmc.c#l383 > >that times out. > > > >Increasing the timeout value (to 10000) doesn't really change > >anything. I guess this is also the reason why we had a timeout error > >in the SPL. > > > >This eMMC works fine in Linux, with the same muxing (and I guess the > >earlier commands wouldn't be successful if the muxing or power was not > >set up appropriately). So I'm kind of running out of ideas on what > >could be the root cause of this. > > > >Hans, any ideas? > > Maybe the emmc needs external pull-ups ? I don't remember if u-boot > always enables those or not ... So I pushed this a bit more, and it seems like commenting the call to mmc_change_freq makes everything just work. Reading the JEDEC spec, it looks like when you switch to high speed, you also need to change the controller clock rate, that u-boot doesn't seem to do at the moment, which obviously will fail, since the controller will be stuck at the former rate, while the eMMC would be switched. If I comment mmc_change_freq, everything works. > I've not tried booting from eMMC on A33 boards (-ENOHARDWARE) but it > does work on A13 and A20 boards (last time I tried). I'm guessing this is more about what rates and modes are supported, rather than the actual SoC. Maxime -- Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: