On Wed, 11 Jan 2017, Enric Balletbo i Serra wrote: > From: Gwendal Grignou <gwen...@chromium.org> > > Add cros_ec_get_event() entry point to retrieve event within functions > called by the notifier. > > Signed-off-by: Gwendal Grignou <gwen...@chromium.org> > Signed-off-by: Enric Balletbo i Serra <enric.balle...@collabora.com> > --- > drivers/platform/chrome/cros_ec_proto.c | 20 ++++++++++++++++++++
> include/linux/mfd/cros_ec.h | 10 ++++++++++ Acked-by: Lee Jones <lee.jo...@linaro.org> > 2 files changed, 30 insertions(+) > > diff --git a/drivers/platform/chrome/cros_ec_proto.c > b/drivers/platform/chrome/cros_ec_proto.c > index ed5dee7..7428c2b 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) > return get_keyboard_state_event(ec_dev); > } > EXPORT_SYMBOL(cros_ec_get_next_event); > + > +u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev) > +{ > + u32 host_event; > + > + BUG_ON(!ec_dev->mkbp_event_supported); > + > + if (ec_dev->event_data.event_type != EC_MKBP_EVENT_HOST_EVENT) > + return 0; > + > + if (ec_dev->event_size != sizeof(host_event)) { > + dev_warn(ec_dev->dev, "Invalid host event size\n"); > + return 0; > + } > + > + host_event = get_unaligned_le32(&ec_dev->event_data.data.host_event); > + > + return host_event; > +} > +EXPORT_SYMBOL(cros_ec_get_host_event); > diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h > index b3d04de..be2c4eb 100644 > --- a/include/linux/mfd/cros_ec.h > +++ b/include/linux/mfd/cros_ec.h > @@ -299,6 +299,16 @@ int cros_ec_query_all(struct cros_ec_device *ec_dev); > */ > int cros_ec_get_next_event(struct cros_ec_device *ec_dev); > > +/** > + * cros_ec_get_host_event - Return a mask of event set by the EC. > + * > + * When MKBP is supported, when the EC raises an interrupt, > + * We collect the events raised and call the functions in the ec notifier. > + * > + * This function is a helper to know which events are raised. > + */ > +u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev); > + > /* sysfs stuff */ > extern struct attribute_group cros_ec_attr_group; > extern struct attribute_group cros_ec_lightbar_attr_group; -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog