Re: [PATCH] acer-wmi: setup accelerometer when appropriate acpi device was found
From: Andy Shevchenko
Date: Fri Apr 28 2017 - 14:58:32 EST
On Fri, Apr 28, 2017 at 11:23 AM, Lee, Chun-Yi <joeyli.kernel@xxxxxxxxx> wrote:
> The 98d610c3739a patch was introduced since v4.11-rc1 that it causes
> that the accelerometer input device will not be created on workable
> machines because the HID string comparing logic is wrong.
>
> And, the patch doesn't prevent that the accelerometer input device
> be created on the machines that have no BST0001. That's because
> the acpi_get_devices() returns success even it didn't find any
> match device.
>
> This patch fixed the HID string comparing logic of BST0001 device.
> And, it also makes sure that the acpi_get_devices() returns
> acpi_handle for BST0001.
>
Pushed to testing, thanks.
> Fixes: 98d610c3739a ("acer-wmi: setup accelerometer when machine has appropriate notify event")
> Reference: https://bugzilla.kernel.org/show_bug.cgi?id=193761
> Reported-by: Samuel Sieb <samuel-kbugs@xxxxxxxx>
> Signed-off-by: "Lee, Chun-Yi" <jlee@xxxxxxxx>
> ---
> drivers/platform/x86/acer-wmi.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c
> index dac0fbe..dbb4e6e 100644
> --- a/drivers/platform/x86/acer-wmi.c
> +++ b/drivers/platform/x86/acer-wmi.c
> @@ -1896,7 +1896,7 @@ static acpi_status __init acer_wmi_get_handle_cb(acpi_handle ah, u32 level,
> if (!strcmp(ctx, "SENR")) {
> if (acpi_bus_get_device(ah, &dev))
> return AE_OK;
> - if (!strcmp(ACER_WMID_ACCEL_HID, acpi_device_hid(dev)))
> + if (strcmp(ACER_WMID_ACCEL_HID, acpi_device_hid(dev)))
> return AE_OK;
> } else
> return AE_OK;
> @@ -1917,8 +1917,7 @@ static int __init acer_wmi_get_handle(const char *name, const char *prop,
> handle = NULL;
> status = acpi_get_devices(prop, acer_wmi_get_handle_cb,
> (void *)name, &handle);
> -
> - if (ACPI_SUCCESS(status)) {
> + if (ACPI_SUCCESS(status) && handle) {
> *ah = handle;
> return 0;
> } else {
> @@ -2290,8 +2289,8 @@ static int __init acer_wmi_init(void)
> if (err)
> return err;
> err = acer_wmi_accel_setup();
> - if (err)
> - return err;
> + if (err && err != -ENODEV)
> + pr_warn("Cannot enable accelerometer\n");
> }
>
> err = platform_driver_register(&acer_platform_driver);
> --
> 2.6.2
>
--
With Best Regards,
Andy Shevchenko