Received: by 10.223.185.116 with SMTP id b49csp2351846wrg; Thu, 22 Feb 2018 12:16:54 -0800 (PST) X-Google-Smtp-Source: AH8x227pQMwD7MHP8d3kU/3Gctxqd1irAW/s3yVgLv4PkoXk9J3vkb74iCjW83Mjw5otsp8p69AB X-Received: by 2002:a17:902:b591:: with SMTP id a17-v6mr3012546pls.118.1519330614122; Thu, 22 Feb 2018 12:16:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519330614; cv=none; d=google.com; s=arc-20160816; b=BKoJsoXKH+oAZq4iZJjL8I1t+hLSnLysjkEZ81CRC7cBhs6J48Ff/cep1IQB0kDaGU /6mjkdEg3Y3oNFsXFoBCh9DYJ5678oOZfbc4zBWB6S1MMcpkaA+SbwjJZSlyD02hUVLZ AXS1aM5zCden7/6GwpcjsIdjj9VBi/1ezqYHOD+MTU53NBomN4Od4B8C0kY20M3QBBne 5XMSgAYELRksy5nnpkMS4AqPqWt+lP7m19FXxDB5mbYQy89JODlmQYqoZ4nsUii+D6h6 gG8IvOWjNJKgOW7Xnt4zeI987v4HYPj+4M3OEaHnHTzOTTRQAQAA3COkxyISsJh9jszX u0jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:feedback-id:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:dkim-signature :arc-authentication-results; bh=DFyWJtEaprc+VQ1l+QVPSQqfri3yGBct2cbfvcA3FMY=; b=eAfGmp1cQ6he65OK2Ub6TEo1VXSK5Xlek6L7957FQXQ5FRZB3pcfE0vIedMHSWl9ZC ocFJrhLwSduYOHkA2cIiQ8cYwL6dImDd37LIYhBTdoCkEhL/3l1j59OpmXBGxmTgZ9s8 9cGDAvNKYkqW3CbwblH809rl9bJZyiqtqVAO85RCcnwI5VtV73U4vf8NTK0geCEZw2zX E62hc6XDvYGQbDMtQpR10FiGIRK/leSIrBjACDUSAMowFnmv5kTpYXqVkmKfjHJFHpZ0 LNJpOkYa2UuX/pjsKJoK8KdUBLe6ODrx4+rEc1cb0QK7ncD0P051B2sS6FVZZJq7HqHN HXsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@jcline.org header.s=rdybrs3533vx7mghocfwl3vdwgpl2v5u header.b=UZcadSK7; dkim=pass header.i=@amazonses.com header.s=224i4yxa5dv7c2xz3womw6peuasteono header.b=Ts03pOkX; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o13-v6si500805pli.799.2018.02.22.12.16.37; Thu, 22 Feb 2018 12:16:54 -0800 (PST) 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=@jcline.org header.s=rdybrs3533vx7mghocfwl3vdwgpl2v5u header.b=UZcadSK7; dkim=pass header.i=@amazonses.com header.s=224i4yxa5dv7c2xz3womw6peuasteono header.b=Ts03pOkX; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751273AbeBVUPy (ORCPT + 99 others); Thu, 22 Feb 2018 15:15:54 -0500 Received: from a8-61.smtp-out.amazonses.com ([54.240.8.61]:40954 "EHLO a8-61.smtp-out.amazonses.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750776AbeBVUPw (ORCPT ); Thu, 22 Feb 2018 15:15:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=rdybrs3533vx7mghocfwl3vdwgpl2v5u; d=jcline.org; t=1519330551; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:Content-Type:In-Reply-To; bh=7cZQTJRaK8XjHfx8+YytI2SYKyJ1LdP3MZ3IeVlOOd0=; b=UZcadSK7Q/BErp0a3Lw+VXFzOxzdCq9ygy+zefMm5q3LkY4X3mrjArulCh7jmved 7J0RszRBSqxQd9mv8whMX/vVHBtCYT8xUqfVbZmYLrZS7nyQCU/9qQrLa64ayCZ5Nte 6CNIOm89XJtuvYtrVv6XyCWUr21o8iQoxwuQrPIc= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=224i4yxa5dv7c2xz3womw6peuasteono; d=amazonses.com; t=1519330551; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:Content-Type:In-Reply-To:Feedback-ID; bh=7cZQTJRaK8XjHfx8+YytI2SYKyJ1LdP3MZ3IeVlOOd0=; b=Ts03pOkX3r1uN1LCsHBY0Pceq3mFRAvorp9LmYQLRL6nsNt8Qi2T9IlvONKdiQVR 84H6cl9T5wMVueGngHOretEqqV2sLrZ/dkU8vztds99ee7ns00zL/dyT4J1tDUZe/K9 vqVk2czWmjjq6Y0tvCPtLvPORJFSLEiwgF+TgDxk= X-Virus-Scanned: amavisd-new at jcline.org Date: Thu, 22 Feb 2018 20:15:51 +0000 From: Jeremy Cline To: Mario Limonciello Cc: dvhart@infradead.org, Andy Shevchenko , LKML , platform-driver-x86@vger.kernel.org, Alex Hung Subject: Re: [PATCH] platform/x86: Only activate tablet mode switch on 2-in-1's Message-ID: <01000161bf28670e-bfeaa576-853c-4760-a362-d6abdaa474f1-000000@email.amazonses.com> References: <1519329522-16919-1-git-send-email-mario.limonciello@dell.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1519329522-16919-1-git-send-email-mario.limonciello@dell.com> User-Agent: Mutt/1.9.3 (2018-01-21) X-SES-Outgoing: 2018.02.22-54.240.8.61 Feedback-ID: 1.us-east-1.z18Isoc/FaoPOvCyJyi1mnTt8STwoRuibXVNoUcvG6g=:AmazonSES Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Feb 22, 2018 at 01:58:42PM -0600, Mario Limonciello wrote: > Some laptops such as the XPS 9360 support the intel-vbtn INT33D6 > interface but don't initialize the bit that intel-vbtn uses to > represent switching tablet mode. > > By running this only on real 2-in-1's it shouldn't cause false > positives. > > Fixes: 30323fb6d5 ("Support tablet mode switch") > Reported-by: Jeremy Cline > Signed-off-by: Mario Limonciello > --- > Note: I also moved the code for detecting tablet into it's own > function. To keep things under 80 lines with if statements was > making the code very unreadable otherwise. > > drivers/platform/x86/intel-vbtn.c | 46 ++++++++++++++++++++++++--------------- > 1 file changed, 29 insertions(+), 17 deletions(-) > > diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c > index b703d6f..8173307 100644 > --- a/drivers/platform/x86/intel-vbtn.c > +++ b/drivers/platform/x86/intel-vbtn.c > @@ -7,6 +7,7 @@ > */ > > #include > +#include > #include > #include > #include > @@ -97,9 +98,35 @@ static void notify_handler(acpi_handle handle, u32 event, void *context) > dev_dbg(&device->dev, "unknown event index 0x%x\n", event); > } > > -static int intel_vbtn_probe(struct platform_device *device) > +static void detect_tablet_mode(struct platform_device *device) > { > + const char *chassis_type = dmi_get_system_info(DMI_CHASSIS_TYPE); > + struct intel_vbtn_priv *priv = dev_get_drvdata(&device->dev); > + acpi_handle handle = ACPI_HANDLE(&device->dev); > struct acpi_buffer vgbs_output = { ACPI_ALLOCATE_BUFFER, NULL }; > + union acpi_object *obj; > + acpi_status status; > + int m; > + > + if (!(chassis_type && strcmp(chassis_type, "31") == 0)) > + goto out; > + > + status = acpi_evaluate_object(handle, "VGBS", NULL, &vgbs_output); > + if (ACPI_FAILURE(status)) > + goto out; > + > + obj = vgbs_output.pointer; > + if (!(obj && obj->type == ACPI_TYPE_INTEGER)) > + goto out; > + > + m = !(obj->integer.value & TABLET_MODE_FLAG); > + input_report_switch(priv->input_dev, SW_TABLET_MODE, m); > +out: > + kfree(vgbs_output.pointer); > +} > + > +static int intel_vbtn_probe(struct platform_device *device) > +{ > acpi_handle handle = ACPI_HANDLE(&device->dev); > struct intel_vbtn_priv *priv; > acpi_status status; > @@ -122,22 +149,7 @@ static int intel_vbtn_probe(struct platform_device *device) > return err; > } > > - /* > - * VGBS being present and returning something means we have > - * a tablet mode switch. > - */ > - status = acpi_evaluate_object(handle, "VGBS", NULL, &vgbs_output); > - if (ACPI_SUCCESS(status)) { > - union acpi_object *obj = vgbs_output.pointer; > - > - if (obj && obj->type == ACPI_TYPE_INTEGER) { > - int m = !(obj->integer.value & TABLET_MODE_FLAG); > - > - input_report_switch(priv->input_dev, SW_TABLET_MODE, m); > - } > - } > - > - kfree(vgbs_output.pointer); > + detect_tablet_mode(device); > > status = acpi_install_notify_handler(handle, > ACPI_DEVICE_NOTIFY, > -- > 2.7.4 > Tested-by: Jeremy Cline Regards, Jeremy