aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/keyboard/cros_ec_keyb.c13
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
149static int cros_ec_keyb_get_state(struct cros_ec_keyb *ckdev, uint8_t *kb_state) 149static 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
163static irqreturn_t cros_ec_keyb_irq(int irq, void *data) 166static irqreturn_t cros_ec_keyb_irq(int irq, void *data)