media: ir_toy: deal with residual irdata before expected response
authorSean Young <sean@mess.org>
Wed, 8 Sep 2021 13:05:52 +0000 (15:05 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 30 Sep 2021 08:08:01 +0000 (10:08 +0200)
After sending the start transmit command, the device is supposed to
respond with the length of the buffer which can be sent. There might
be some residual ir data there.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/rc/ir_toy.c

index 45d39b6e49c0b405e29c4c8931a1b4aaa488f3ce..2b7c8bba4d6ace04e655d78b33454d5c7bbc282b 100644 (file)
@@ -122,6 +122,7 @@ static void irtoy_response(struct irtoy *irtoy, u32 len)
                                len, irtoy->in);
                }
                break;
+       case STATE_COMMAND_NO_RESP:
        case STATE_IRDATA: {
                struct ir_raw_event rawir = { .pulse = irtoy->pulse };
                __be16 *in = (__be16 *)irtoy->in;
@@ -167,10 +168,8 @@ static void irtoy_response(struct irtoy *irtoy, u32 len)
                        int err;
 
                        if (len != 1 || space > MAX_PACKET || space == 0) {
-                               dev_err(irtoy->dev, "packet length expected: %*phN\n",
+                               dev_dbg(irtoy->dev, "packet length expected: %*phN\n",
                                        len, irtoy->in);
-                               irtoy->state = STATE_IRDATA;
-                               complete(&irtoy->command_done);
                                break;
                        }
 
@@ -194,9 +193,6 @@ static void irtoy_response(struct irtoy *irtoy, u32 len)
                        irtoy->tx_len -= buf_len;
                }
                break;
-       case STATE_COMMAND_NO_RESP:
-               dev_err(irtoy->dev, "unexpected response to reset: %*phN\n",
-                       len, irtoy->in);
        }
 }