OSDN Git Service

mfd: cros_ec: Detect in-progress commands
authorSimon Glass <sjg@chromium.org>
Wed, 18 Jun 2014 18:14:01 +0000 (11:14 -0700)
committerLee Jones <lee.jones@linaro.org>
Wed, 9 Jul 2014 13:58:16 +0000 (14:58 +0100)
Some commands take a while to execute. Use -EAGAIN to signal this to the
caller.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Doug Anderson <dianders@chromium.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/cros_ec_spi.c

index 6c3075f..9d45d88 100644 (file)
@@ -288,6 +288,12 @@ static int cros_ec_cmd_xfer_spi(struct cros_ec_device *ec_dev,
        /* check response error code */
        ptr = ec_dev->din;
        if (ptr[0]) {
+               if (ptr[0] == EC_RES_IN_PROGRESS) {
+                       dev_dbg(ec_dev->dev, "command 0x%02x in progress\n",
+                               ec_msg->cmd);
+                       ret = -EAGAIN;
+                       goto exit;
+               }
                dev_warn(ec_dev->dev, "command 0x%02x returned an error %d\n",
                         ec_msg->cmd, ptr[0]);
                debug_packet(ec_dev->dev, "in_err", ptr, len);