Skip to content

Commit

Permalink
[media] mceusb: issue device resume cmd when needed
Browse files Browse the repository at this point in the history
According to MS docs, the device firmware may halt after receiving an
unknown instruction, but that it should be possible to tell the firmware
to continue running by simply sending a device resume command. So lets
do that.

Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Jarod Wilson authored and Mauro Carvalho Chehab committed Aug 27, 2011
1 parent fa33489 commit 4840b78
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions drivers/media/rc/mceusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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;
}
Expand Down

0 comments on commit 4840b78

Please sign in to comment.