Hi Enric and Thierry, Just one minor question about this commit. On Tue, May 16, 2017 at 06:13:15PM +0200, Enric Balletbo i Serra wrote: > From: Gwendal Grignou > > This patch installs a notify handler to process MKBP events for EC > firmware directing them over ACPI. > > Signed-off-by: Gwendal Grignou > Signed-off-by: Thierry Escande > --- > drivers/platform/chrome/cros_ec_lpc.c | 32 ++++++++++++++++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/drivers/platform/chrome/cros_ec_lpc.c b/drivers/platform/chrome/cros_ec_lpc.c > index 89afad7..eeb187e 100644 > --- a/drivers/platform/chrome/cros_ec_lpc.c > +++ b/drivers/platform/chrome/cros_ec_lpc.c > @@ -227,9 +227,20 @@ static int cros_ec_lpc_readmem(struct cros_ec_device *ec, unsigned int offset, > return cnt; > } > > +static void cros_ec_lpc_acpi_notify(acpi_handle device, u32 value, void *data) > +{ > + struct cros_ec_device *ec_dev = data; > + > + if (ec_dev->mkbp_event_supported && cros_ec_get_next_event(ec_dev) > 0) > + blocking_notifier_call_chain(&ec_dev->event_notifier, 0, > + ec_dev); > +} > + > static int cros_ec_lpc_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > + struct acpi_device *adev; > + acpi_status status; > struct cros_ec_device *ec_dev; > u8 buf[2]; > int ret; > @@ -277,12 +288,33 @@ static int cros_ec_lpc_probe(struct platform_device *pdev) > return ret; > } > > + /* > + * Connect a notify handler to process MKBP messages if we have a > + * companion ACPI device. > + */ > + adev = ACPI_COMPANION(dev); > + if (adev) { > + status = acpi_install_notify_handler(adev->handle, > + ACPI_ALL_NOTIFY, Is there a reason you're using ACPI_ALL_NOTIFY here instead of ACPI_SYSTEM_NOTIFY that is done in the CHROMIUM version of this? > + cros_ec_lpc_acpi_notify, > + ec_dev); > + if (ACPI_FAILURE(status)) > + dev_warn(dev, "Failed to register notifier %08x\n", > + status); > + } > + > return 0; > } > > static int cros_ec_lpc_remove(struct platform_device *pdev) > { > struct cros_ec_device *ec_dev; > + struct acpi_device *adev; > + > + adev = ACPI_COMPANION(&pdev->dev); > + if (adev) > + acpi_remove_notify_handler(adev->handle, ACPI_ALL_NOTIFY, > + cros_ec_lpc_acpi_notify); > > ec_dev = platform_get_drvdata(pdev); > cros_ec_remove(ec_dev); > -- > 2.9.3 > -- Benson Leung Staff Software Engineer Chrome OS Kernel Google Inc. bleung@google.com Chromium OS Project bleung@chromium.org