diff options
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/keyboard/cros_ec_keyb.c | 13 |
1 files changed, 8 insertions, 5 deletions
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, | |||
148 | 148 | ||
149 | static int cros_ec_keyb_get_state(struct cros_ec_keyb *ckdev, uint8_t *kb_state) | 149 | static int cros_ec_keyb_get_state(struct cros_ec_keyb *ckdev, uint8_t *kb_state) |
150 | { | 150 | { |
151 | int ret; | ||
151 | struct cros_ec_command msg = { | 152 | struct cros_ec_command msg = { |
152 | .version = 0, | ||
153 | .command = EC_CMD_MKBP_STATE, | 153 | .command = EC_CMD_MKBP_STATE, |
154 | .outdata = NULL, | ||
155 | .outsize = 0, | ||
156 | .indata = kb_state, | ||
157 | .insize = ckdev->cols, | 154 | .insize = ckdev->cols, |
158 | }; | 155 | }; |
159 | 156 | ||
160 | return cros_ec_cmd_xfer(ckdev->ec, &msg); | 157 | ret = cros_ec_cmd_xfer(ckdev->ec, &msg); |
158 | if (ret < 0) | ||
159 | return ret; | ||
160 | |||
161 | memcpy(kb_state, msg.indata, ckdev->cols); | ||
162 | |||
163 | return 0; | ||
161 | } | 164 | } |
162 | 165 | ||
163 | static irqreturn_t cros_ec_keyb_irq(int irq, void *data) | 166 | static irqreturn_t cros_ec_keyb_irq(int irq, void *data) |