From bacce300d9968b8286e7bc392ce516f7461e6793 Mon Sep 17 00:00:00 2001 From: Jarod Wilson Date: Mon, 18 Jul 2011 16:54:24 -0300 Subject: [PATCH] --- yaml --- r: 271659 b: refs/heads/master c: 4840b788ad608977d47964d39ee53a55bec41702 h: refs/heads/master i: 271657: a9a26821d13570604172c14fa1dbd3ebbe9d87a9 271655: c4d52ae452fc4b698ef3e426d7473ee908255632 v: v3 --- [refs] | 2 +- trunk/drivers/media/rc/mceusb.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f91fd034c720..27e970ce0cb7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fa3348980a504c01e300823ab743cb2d874327fa +refs/heads/master: 4840b788ad608977d47964d39ee53a55bec41702 diff --git a/trunk/drivers/media/rc/mceusb.c b/trunk/drivers/media/rc/mceusb.c index d095b4d13d79..181a9b61de0e 100644 --- a/trunk/drivers/media/rc/mceusb.c +++ b/trunk/drivers/media/rc/mceusb.c @@ -436,6 +436,8 @@ struct mceusb_dev { char name[128]; char phys[64]; enum mceusb_model_type model; + + bool need_reset; /* flag to issue a device resume cmd */ }; /* MCE Device Command Strings, generally a port and command pair */ @@ -735,6 +737,14 @@ static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data, static void mce_async_out(struct mceusb_dev *ir, unsigned char *data, int size) { + int rsize = sizeof(DEVICE_RESUME); + + if (ir->need_reset) { + ir->need_reset = false; + mce_request_packet(ir, DEVICE_RESUME, rsize, MCEUSB_TX); + msleep(10); + } + mce_request_packet(ir, data, size, MCEUSB_TX); msleep(10); } @@ -909,6 +919,9 @@ static void mceusb_handle_command(struct mceusb_dev *ir, int index) case MCE_RSP_EQIRRXPORTEN: ir->learning_enabled = ((hi & 0x02) == 0x02); break; + case MCE_RSP_CMD_ILLEGAL: + ir->need_reset = true; + break; default: break; }