On 2022-06-21 09:46, Sascha Hauer wrote:
Hi Robin,
...
We should only ever
clear the bits we have handled, like sdhci_transfer_data_dma() does with
sdhci_write32(sdhci, SDHCI_INT_STATUS, SDHCI_INT_DMA);
I just noticed that the tegra-sdmmc mci driver might have the same issue.
https://git.pengutronix.de/cgit/barebox/tree/drivers/mci/tegra-sdmmc.c#n149
It can prevent the following conditional from ever evaluating true trapping
the process in the while loop.
https://git.pengutronix.de/cgit/barebox/tree/drivers/mci/tegra-sdmmc.c#n203
This driver clears the status register on error (not on start/end of
function)
with an old value 'val' which can be lacking status bits that popped up
along the way...
I can't test code changes for this platform.
- Robin