From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752065AbdLATuU (ORCPT ); Fri, 1 Dec 2017 14:50:20 -0500 Received: from mail-wr0-f195.google.com ([209.85.128.195]:40089 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751706AbdLATuR (ORCPT ); Fri, 1 Dec 2017 14:50:17 -0500 X-Google-Smtp-Source: AGs4zMae1kXP4Xtll0hhxtAXt44U2ixW+JZJO4NOSYqPdtplRydtiQ8GlQT8M/w1nlo5TwY+RjPsOO9f9uknpWfw7C8= MIME-Version: 1.0 In-Reply-To: <1512135743-16529-2-git-send-email-thierry.escande@collabora.com> References: <1512135743-16529-1-git-send-email-thierry.escande@collabora.com> <1512135743-16529-2-git-send-email-thierry.escande@collabora.com> From: Gwendal Grignou Date: Fri, 1 Dec 2017 11:49:54 -0800 X-Google-Sender-Auth: w-oXXiFiUUPNIyZH-_V0ZkpZ3KU Message-ID: Subject: Re: [PATCH v5 1/3] platform/chrome: cros_ec_lpc: Register the driver if ACPI entry is missing. To: Thierry Escande Cc: Benson Leung , Lee Jones , Jonathan Cameron , Enric Balletbo i Serra , Gwendal Grignou , Linux Kernel Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Checked against 7412f0a0d90ee6ddbad4cde794f88f1489422f3a (CHROMIUM: platform/chrome: Support MKBP protocol over ACPI) Reviewed-by: Gwendal Grignou On Fri, Dec 1, 2017 at 5:42 AM, Thierry Escande wrote: > From: Enric Balletbo i Serra > > Commit 12278dc7c572 ("platform/chrome: cros_ec_lpc: Add support for > GOOG004 ACPI device") added support when the firmware reports the ACPI > device, there are some firmwares though that doesn't report this device > but have it. In such cases we need to instantiate the driver explicitly > if it is not instantiated through ACPI. > > Fixes: 12278dc7c572 ("platform/chrome: cros_ec_lpc: Add support for GOOG004 ACPI device") > Signed-off-by: Guenter Roeck > Signed-off-by: Enric Balletbo i Serra > Signed-off-by: Thierry Escande > --- > drivers/platform/chrome/cros_ec_lpc.c | 34 +++++++++++++++++++++++++++++++++- > 1 file changed, 33 insertions(+), 1 deletion(-) > > diff --git a/drivers/platform/chrome/cros_ec_lpc.c b/drivers/platform/chrome/cros_ec_lpc.c > index 1baf720..0b26a09 100644 > --- a/drivers/platform/chrome/cros_ec_lpc.c > +++ b/drivers/platform/chrome/cros_ec_lpc.c > @@ -35,6 +35,9 @@ > #define DRV_NAME "cros_ec_lpcs" > #define ACPI_DRV_NAME "GOOG0004" > > +/* True if ACPI device is present */ > +static bool cros_ec_lpc_acpi_device_found; > + > static int ec_response_timed_out(void) > { > unsigned long one_second = jiffies + HZ; > @@ -396,9 +399,21 @@ static struct platform_driver cros_ec_lpc_driver = { > .remove = cros_ec_lpc_remove, > }; > > +static struct platform_device cros_ec_lpc_device = { > + .name = DRV_NAME > +}; > + > +static acpi_status cros_ec_lpc_parse_device(acpi_handle handle, u32 level, > + void *context, void **retval) > +{ > + *(bool *)context = true; > + return AE_CTRL_TERMINATE; > +} > + > static int __init cros_ec_lpc_init(void) > { > int ret; > + acpi_status status; > > if (!dmi_check_system(cros_ec_lpc_dmi_table)) { > pr_err(DRV_NAME ": unsupported system.\n"); > @@ -415,11 +430,28 @@ static int __init cros_ec_lpc_init(void) > return ret; > } > > - return 0; > + status = acpi_get_devices(ACPI_DRV_NAME, cros_ec_lpc_parse_device, > + &cros_ec_lpc_acpi_device_found, NULL); > + if (ACPI_FAILURE(status)) > + pr_warn(DRV_NAME ": Looking for %s failed\n", ACPI_DRV_NAME); > + > + if (!cros_ec_lpc_acpi_device_found) { > + /* Register the device, and it'll get hooked up automatically */ > + ret = platform_device_register(&cros_ec_lpc_device); > + if (ret) { > + pr_err(DRV_NAME ": can't register device: %d\n", ret); > + platform_driver_unregister(&cros_ec_lpc_driver); > + cros_ec_lpc_reg_destroy(); > + } > + } > + > + return ret; > } > > static void __exit cros_ec_lpc_exit(void) > { > + if (!cros_ec_lpc_acpi_device_found) > + platform_device_unregister(&cros_ec_lpc_device); > platform_driver_unregister(&cros_ec_lpc_driver); > cros_ec_lpc_reg_destroy(); > } > -- > 2.7.4 >