I think I've found the problem.
The interrupt-checking loop inside drivers/mmc/imx_edshc.c, at line 380, never terminates. Seems like the interrupt never gets raised.
Code:
while (!(tmp =
(readl(®s->irqstat) & IRQSTAT_TC))
);
A quick (hand-written) draft of the stack trace:
Code:
esdhc_send_cmd
mmc_read
idme_check_update
setup_board_info
...
I suspect the emmc to have failed, and thus the DMA to not raise the interrupt for the finished operation, but I don't know how to confirm that.
Aside from this, I don't understand why the stock pre-built u-boot.bin is not printing anything at all.