aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/platform/chrome/cros_ec_proto.c20
-rw-r--r--include/linux/mfd/cros_ec.h10
2 files changed, 30 insertions, 0 deletions
diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c
index ed5dee744c74..7428c2b965bb 100644
--- a/drivers/platform/chrome/cros_ec_proto.c
+++ b/drivers/platform/chrome/cros_ec_proto.c
@@ -494,3 +494,23 @@ int cros_ec_get_next_event(struct cros_ec_device *ec_dev)
494 return get_keyboard_state_event(ec_dev); 494 return get_keyboard_state_event(ec_dev);
495} 495}
496EXPORT_SYMBOL(cros_ec_get_next_event); 496EXPORT_SYMBOL(cros_ec_get_next_event);
497
498u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev)
499{
500 u32 host_event;
501
502 BUG_ON(!ec_dev->mkbp_event_supported);
503
504 if (ec_dev->event_data.event_type != EC_MKBP_EVENT_HOST_EVENT)
505 return 0;
506
507 if (ec_dev->event_size != sizeof(host_event)) {
508 dev_warn(ec_dev->dev, "Invalid host event size\n");
509 return 0;
510 }
511
512 host_event = get_unaligned_le32(&ec_dev->event_data.data.host_event);
513
514 return host_event;
515}
516EXPORT_SYMBOL(cros_ec_get_host_event);
diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h
index 28baee63eaf6..b61b2e013698 100644
--- a/include/linux/mfd/cros_ec.h
+++ b/include/linux/mfd/cros_ec.h
@@ -300,6 +300,16 @@ int cros_ec_query_all(struct cros_ec_device *ec_dev);
300 */ 300 */
301int cros_ec_get_next_event(struct cros_ec_device *ec_dev); 301int cros_ec_get_next_event(struct cros_ec_device *ec_dev);
302 302
303/**
304 * cros_ec_get_host_event - Return a mask of event set by the EC.
305 *
306 * When MKBP is supported, when the EC raises an interrupt,
307 * We collect the events raised and call the functions in the ec notifier.
308 *
309 * This function is a helper to know which events are raised.
310 */
311u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev);
312
303/* sysfs stuff */ 313/* sysfs stuff */
304extern struct attribute_group cros_ec_attr_group; 314extern struct attribute_group cros_ec_attr_group;
305extern struct attribute_group cros_ec_lightbar_attr_group; 315extern struct attribute_group cros_ec_lightbar_attr_group;