lkml.org 
[lkml]   [2017]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH RESEND 09/13] platform/chrome: cros_ec_lpc: Add MKBP events support over ACPI
    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 <gwendal@chromium.org>
    >
    > This patch installs a notify handler to process MKBP events for EC
    > firmware directing them over ACPI.
    >
    > Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
    > Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
    > ---
    > 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
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2017-06-22 21:36    [W:4.206 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site