On Mon, 1 Oct 2018 22:34:38 +0200 Boris Brezillon <boris.brezillon@xxxxxxxxxxx> wrote: > > > > I'd previously tried readl() based on the same hunch. No change. > > > > I think my snippet above might be misleading. While a delay between > > readl_relaxed() and the if should not change the outcome, this is also a > > delay between marvell_nfc_enable_int() and marvell_nfc_disable_int() > > which is probably more significant. Sure enough if I move the delay to > > just before the marvell_nfc_disable_int() the error is not seen. > > AFAICT, your timeout always happens when waiting for RDREQ, not RDYM. > So maybe disabling MRDY too early has a side-effect on the RDREQ event. Can you try with this patch [1]? It should ensure that NDSR_RDY bits are cleared before starting an operation. [1]http://code.bulix.org/lgs30c-468205