]> granicus.if.org Git - esp-idf/commit
sdmmc: wait for command done event even if data transfer is over
authorIvan Grokhotkov <ivan@espressif.com>
Fri, 20 Apr 2018 09:48:34 +0000 (17:48 +0800)
committerAngus Gratton <gus@projectgus.com>
Tue, 15 May 2018 01:59:20 +0000 (09:59 +0800)
commit9379d7b9f906df732a466c610e856139ba668f46
tree6ef54464e3d1831edb7ad0c0af2002b19011f12b
parentcf81db40a2a5afa8df4e2b14a47f25a01f14621c
sdmmc: wait for command done event even if data transfer is over

This fixes errors logged on the console: sdmmc_req:
handle_idle_state_events unhandled: 00000004 00000000

The issue happens if "data done" event occurs before "command done".
State machine code did not check *which* event occurred in
SENDING_CMD state, and went to IDLE or SENDING_DATA state on any
non-error event. In this case, we can't process "data done" event
until command has completed. This change introduces "unhandled event"
mask, which is carried over from one run of process_events to the
other. This allows waiting for the "command done" event to complete,
and then process "data done" event.

Ref TW17126.
components/driver/sdmmc_transaction.c