Hi, On 04-11-16 23:57, Alexandr Bochkarev wrote:
I have found problem place, this patch with hotfix allows to boot Allwinner A20 from eMMC. Dont know how to full fix it.
Maxime posted a proper fix for this issue yesterday: https://patchwork.ozlabs.org/patch/691284/ Can you give that one a try and see if it fixes things for you as well ? Regards, Hans
commit 9fa5bf30e95ead17eb0c50375b305fb8615427a9 Author: root <aneox.in...@gmail.com <mailto:aneox.in...@gmail.com>> Date: Sat Nov 5 04:41:30 2016 +0600 allow to boot A20 from eMMC, fix diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c index 6953acc..87cf964 100644 --- a/drivers/mmc/sunxi_mmc.c +++ b/drivers/mmc/sunxi_mmc.c @@ -293,11 +293,17 @@ static int mmc_trans_data_by_cpu(struct mmc *mmc, struct mmc_data *data) } static int mmc_rint_wait(struct mmc *mmc, unsigned int timeout_msecs, - unsigned int done_bit, const char *what) + unsigned int done_bit, const char *what, struct mmc_cmd *cmd) { struct sunxi_mmc_host *mmchost = mmc->priv; unsigned int status; + if (cmd->cmdidx == MMC_CMD_SWITCH) + { + printf("mmc_rint_wait: fix me\n"); + return 0; + } + do { status = readl(&mmchost->reg->rint); if (!timeout_msecs-- || @@ -380,7 +386,7 @@ static int sunxi_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, } } - error = mmc_rint_wait(mmc, 1000, SUNXI_MMC_RINT_COMMAND_DONE, "cmd"); + error = mmc_rint_wait(mmc, 1000, SUNXI_MMC_RINT_COMMAND_DONE, "cmd", cmd); if (error) goto out; @@ -391,7 +397,7 @@ static int sunxi_mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, data->blocks > 1 ? SUNXI_MMC_RINT_AUTO_COMMAND_DONE : SUNXI_MMC_RINT_DATA_OVER, - "data"); + "data", cmd); if (error) goto out; }
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot