atmel-mci: Implement tasklet as a state machine
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
Thu, 31 Jul 2008 12:49:16 +0000 (14:49 +0200)
committerHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
Sun, 5 Oct 2008 18:39:20 +0000 (20:39 +0200)
commitc06ad2580dca4eb14ca07541d4f00a3b7cbcf12f
treefb3cac8ab80b921b5ea1cfb4bad7f18248fb94ad
parenta252e3e35ef8144fb772da70bb93c99a1486097a
atmel-mci: Implement tasklet as a state machine

With the current system of completed/pending events, things may get
handled in different order depending on which event triggers first. For
example, if the data transfer is complete before the command, the stop
command must be sent after the command is complete, not the data. This
creates a bit of complexity around the stop command.

By having the tasklet go through a sequence of clearly defined states,
things always happen in a certain order even if the events come at
different times, so the stop command can simply be sent when we exit the
"sending data" state because we will never enter that state before the
command has been sent successfully.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
drivers/mmc/host/atmel-mci.c