X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=drivers%2Finput%2Fkeyboard%2Fcros_ec_keyb.c;h=b50c5b8b8a4de4bc121743c4dace3aa5f4dd5636;hb=36a8032d77649430f5ef11fbf0df2bb026be0b04;hp=64b9b59ad4cbf434e658336dc7351496ba38d94e;hpb=38eb1dbb0d7d190bdfe2ea824e94dab19e32737f;p=uclinux-h8%2Flinux.git diff --git a/drivers/input/keyboard/cros_ec_keyb.c b/drivers/input/keyboard/cros_ec_keyb.c index 64b9b59ad4cb..b50c5b8b8a4d 100644 --- a/drivers/input/keyboard/cros_ec_keyb.c +++ b/drivers/input/keyboard/cros_ec_keyb.c @@ -148,16 +148,19 @@ static void cros_ec_keyb_process(struct cros_ec_keyb *ckdev, static int cros_ec_keyb_get_state(struct cros_ec_keyb *ckdev, uint8_t *kb_state) { + int ret; struct cros_ec_command msg = { - .version = 0, .command = EC_CMD_MKBP_STATE, - .outdata = NULL, - .outsize = 0, - .indata = kb_state, .insize = ckdev->cols, }; - return cros_ec_cmd_xfer(ckdev->ec, &msg); + ret = cros_ec_cmd_xfer(ckdev->ec, &msg); + if (ret < 0) + return ret; + + memcpy(kb_state, msg.indata, ckdev->cols); + + return 0; } static irqreturn_t cros_ec_keyb_irq(int irq, void *data)