Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp2137077ybp; Sat, 5 Oct 2019 06:21:46 -0700 (PDT) X-Google-Smtp-Source: APXvYqyg9svaEHh2lDYKYT2AZCRqpJByf9h8ptGqtvUe88yr0yIr33jysmFDFKCL+Dzkg53QRLnj X-Received: by 2002:a50:eb44:: with SMTP id z4mr20118450edp.207.1570281705897; Sat, 05 Oct 2019 06:21:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570281705; cv=none; d=google.com; s=arc-20160816; b=muvZJxhbosR8AneXCpr6jVTnJAfjhnJdT8MNvgL4CSivHIFSF6uKT3vk3DviwCnwfZ VTRwz4ggRfbYx51ZgbgVo0KvZntL4AavYOwP6+pXs+SO0FlWDwVTBVJhJqlJBq6OZajp dn7xR24185g4ivkLZrC9BIPUkP5eZ7KFQ+u6MM0EiUMjsi4pPgwnpLC2f/tYqGRV/0Be FkRgrWmHdHJrW4VmgshuoS6bA/dIWEqavbuRr4Cl4ydMB1MJN2niXKzV48ZFjh3jCH6T 8noOf2JLzX7X+wdGkCV4YO59+4eYkro8QExZq/mXBS87S0GAvkOqqzugRwiYjuD3iZBX C1Rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=v19mNPkRJ9AE8uxKqZArmEnab1FDl/k/mlgPV+xCOYk=; b=AutiJVywURPB1yJviP8ptj0emskAJyK3fNLrkz5AoILgjjmnH3GdB2aFLVa34u5nbK jt/GthWati77PwYjhAsWz23blD4vA6rvi6ik/3Lji7o8hv+z8JMtJyR7gcTcUrHxgMFK vsfEWHe5Ol/yB2RveB0sRb6C5HFLa5QjcIm8Xbdx7qVBZc8G/OPrPAwAEcHLoa3kRPJ4 XrmbplYkdleDu/K7Yg/LJCPY6JmEQKE2lmPqwNkvaLstnKOIJRd8ugH4K2/WZX8BSvO/ BvBDnoKAQnKx6ow7U9rn8NZvBaKPsVH0Tdo9Y8i4e7K4L2CVGgQZxVz3BWVM+F64cKR6 NcpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Z4kmd4RE; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o49si5383351edc.261.2019.10.05.06.21.22; Sat, 05 Oct 2019 06:21:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Z4kmd4RE; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728184AbfJENU6 (ORCPT + 99 others); Sat, 5 Oct 2019 09:20:58 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:59304 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728006AbfJENU6 (ORCPT ); Sat, 5 Oct 2019 09:20:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1570281657; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v19mNPkRJ9AE8uxKqZArmEnab1FDl/k/mlgPV+xCOYk=; b=Z4kmd4RE6OfTVadl6pcy3lVWXXn4EzbAToYmV8UyrYUm7j6tH4budfLO5q0Z9uo8RSlMmP bYx95sHiKTXrrLSsBR7MEfod5TNFd5o90lfyR0v+/BPCEbS+8jaUNqPmECIdpr1OqmuLo8 V7fexC6dAwos9BR7lg57Gngkt0JIWKM= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-301-P4n59BDFN1S7M3zYG5wABA-1; Sat, 05 Oct 2019 09:20:54 -0400 Received: by mail-wr1-f70.google.com with SMTP id y18so2045582wrw.8 for ; Sat, 05 Oct 2019 06:20:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=UJR8lqM5VkVKo9oBw0pEtSAy8UtflGegNgDHZMNB8ts=; b=mngQopLECttqxfUyO4vLvgtTSyS3LxlI2MVAbMnlRwUe4CiwysFb7LhvcJvi2UEc0F ikIp+kx9p1KsHxuHrVqwbzWGCixfCv6XdiTDmgiDlC9ZI7aK5iMuTieTas3/FMw8LPwT RLxf4f3mjt6E9aBFoPSnMH3sFLZpL5mDNHEK5FIHTJs/tvhOyJqu430tDQCkpDOL5ZW4 IWUB8dkVSD0JOGRZG/GQqmd0zP9S2NUNUkmq6kNNVO8GsqexBJd6Hf9D8wD6o3t/4d9p +5BxknFM+UT03a01kHZ0hspA0Rn7FUhgz7Ex368JmJuoqBpcXmghLQqC+OD4q+3PrOpO kfeg== X-Gm-Message-State: APjAAAUmJddvxiQLDGasTxGcGueOzykt2HDq0caGaSxXZs2DNfByKvlt CdBwk7nWX4K97ugoC3WTiZcXopZvvX1uWiuWqpx+KcqJSYYd/a0LSX1J0lvRXXzYTq+4KDMIsSj yPaMSHkyoyGmdp14qQzg2h3e7 X-Received: by 2002:a5d:61c5:: with SMTP id q5mr4788401wrv.124.1570281653248; Sat, 05 Oct 2019 06:20:53 -0700 (PDT) X-Received: by 2002:a5d:61c5:: with SMTP id q5mr4788390wrv.124.1570281653007; Sat, 05 Oct 2019 06:20:53 -0700 (PDT) Received: from shalem.localdomain (2001-1c00-0c14-2800-ec23-a060-24d5-2453.cable.dynamic.v6.ziggo.nl. [2001:1c00:c14:2800:ec23:a060:24d5:2453]) by smtp.gmail.com with ESMTPSA id y14sm15566463wrd.84.2019.10.05.06.20.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 05 Oct 2019 06:20:52 -0700 (PDT) Subject: Re: [PATCH 5.4 regression fix] Input: soc_button_array - partial revert of support for newer surface devices To: Maximilian Luz , Dmitry Torokhov , Andy Shevchenko Cc: linux-input@vger.kernel.org, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org References: <20191005105551.353273-1-hdegoede@redhat.com> <222c364a-bc2b-5960-3fe4-7d1ce222e3e2@gmail.com> From: Hans de Goede Message-ID: <96cea5be-d285-8323-1ab2-9c8e87993165@redhat.com> Date: Sat, 5 Oct 2019 15:20:51 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.1 MIME-Version: 1.0 In-Reply-To: <222c364a-bc2b-5960-3fe4-7d1ce222e3e2@gmail.com> Content-Language: en-US X-MC-Unique: P4n59BDFN1S7M3zYG5wABA-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 05-10-2019 14:17, Maximilian Luz wrote: > Hi, >=20 > sorry for the inconvenience this change has caused. >=20 > On 10/5/19 12:55 PM, Hans de Goede wrote: >> Note ideally this seamingly unrelated change would have been made in a >> separate commit, with a message explaining the what and why of this >> change. >=20 > Would I have known the impact, then yes. This change was added due to > some reported instances where it seems that soc_button_array would > occasionally load on MSHW0040 before the GPIO controller was ready, > causing power and volume buttons to not work. >=20 >> I guess this change may have been added to deal with -EPROBE_DEFER error= s, >=20 > Correct. After a comment mentioned that gpiod_get() returning > -EPROBE_DEFER would be the proper way to detect this, I decided on this > change. Ok, on x86 the GPIO drivers really should all be builtin because various ACPI methods including device D0 / D3 (power-on/off) methods may depend on them. So normally this should never happen. If this (-EPROBE_DEFER on surface devices) somehow still is happening please let me know and we will figure something out. > Might I suggest the following addition: >=20 > Signed-off-by: Maximilian Luz S-o-b is only for patches which pass through your hands, e.g. if you make changes to my patch and submit a v2 of it. I guess you mean / want one of: Acked-by: ... or Reviewed-by: ... ? Regards, Hans > --- > =C2=A0drivers/input/misc/soc_button_array.c | 25 ++++++++++++++++++++---= -- > =C2=A01 file changed, 20 insertions(+), 5 deletions(-) >=20 > diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/s= oc_button_array.c > index 97e3639e99d0..a0f0c977b790 100644 > --- a/drivers/input/misc/soc_button_array.c > +++ b/drivers/input/misc/soc_button_array.c > @@ -92,11 +92,18 @@ soc_button_device_create(struct platform_device *pdev= , > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= continue; >=20 > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 gpio =3D soc_button_loo= kup_gpio(&pdev->dev, info->acpi_index); > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (gpio < 0 && gpio !=3D -EN= OENT) { > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 error= =3D gpio; > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 goto = err_free_mem; > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } else if (!gpio_is_valid(gpi= o)) { > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* Sk= ip GPIO if not present */ > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!gpio_is_valid(gpio)) { > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * Skip GPIO if not present. Note we deliberately > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * ignore -EPROBE_DEFER errors here. On some devices > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * Intel is using so called virtual GPIOs which are not > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * GPIOs at all but some way for AML code to check some > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * random status bits without need a custom opregion. > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * In some cases the resources table we parse points to > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * such a virtual GPIO, since these are not real GPIOs > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * we do not have a driver for these so they will never > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= * show up, therefor we ignore -EPROBE_DEFER. > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= */ > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= continue; > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } >=20 > @@ -429,6 +436,14 @@ static int soc_device_check_MSHW0040(struct device *= dev) >=20 > =C2=A0=C2=A0=C2=A0=C2=A0 dev_dbg(dev, "OEM Platform Revision %llu\n", oe= m_platform_rev); >=20 > +=C2=A0=C2=A0=C2=A0 /* > +=C2=A0=C2=A0=C2=A0=C2=A0 * Explicitly check if GPIO controller is ready.= This check is done here > +=C2=A0=C2=A0=C2=A0=C2=A0 * to avoid issues with virtual GPIOs on other c= hips, as elaborated above. > +=C2=A0=C2=A0=C2=A0=C2=A0 * We are at least expecting one GPIO pin for th= e power button (index 0). > +=C2=A0=C2=A0=C2=A0=C2=A0 */ > +=C2=A0=C2=A0=C2=A0 if (soc_button_lookup_gpio(dev, 0) =3D=3D -EPROBE_DEF= ER) > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return -EPROBE_DEFER; > + > =C2=A0=C2=A0=C2=A0=C2=A0 return 0; > =C2=A0} >=20