From patchwork Fri Oct 3 09:43:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Pali_Roh=C3=A1r?= X-Patchwork-Id: 5021711 Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 2699AC11AB for ; Fri, 3 Oct 2014 09:44:17 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 48E65201FE for ; Fri, 3 Oct 2014 09:44:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7486E201F2 for ; Fri, 3 Oct 2014 09:44:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752079AbaJCJnp (ORCPT ); Fri, 3 Oct 2014 05:43:45 -0400 Received: from mail-wi0-f173.google.com ([209.85.212.173]:60015 "EHLO mail-wi0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751963AbaJCJnn (ORCPT ); Fri, 3 Oct 2014 05:43:43 -0400 Received: by mail-wi0-f173.google.com with SMTP id fb4so2196792wid.0 for ; Fri, 03 Oct 2014 02:43:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=pyGNS91ZeEovalSTsqlBZpralWcnWsqnAjkuv6YEJIw=; b=zZ8MxHNxyDDQWBciuJslgK3+vPQu5QjKby1fBGwhfzMT8jo4miXt7eRdGBv3ZnRKDj E+5M//OTyVRdhiwZRx3O0yr5PMk/y3tgVqV4FTLAik/uI1z0mVkEIlfAy7dcei0DGFe0 y9iqZCyI10ceLAO2Hulf5h6CyMDqbCJfnCPEQcsx1K8kvqPaLye9Ps6LkOIirbVI+J9/ Jj0Hl2O+ZSQA0zer4FHWh9Lo26sfFuNVgByXAqgWqy992UV46pwXS3m5R4ttseoFwPdt 7d6cS9Fl2Njo7y+WcnJ5PWFP9k1EIkeFLohMErduXrHPhylF1anxVNTAdX//lEVz9lfv e2ww== X-Received: by 10.180.231.9 with SMTP id tc9mr11225651wic.58.1412329422381; Fri, 03 Oct 2014 02:43:42 -0700 (PDT) Received: from Pali-Latitude.kolej.mff.cuni.cz (pali.kolej.mff.cuni.cz. [78.128.193.202]) by mx.google.com with ESMTPSA id k2sm7389416wjy.34.2014.10.03.02.43.40 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 03 Oct 2014 02:43:41 -0700 (PDT) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Dmitry Torokhov , Hans de Goede , Yunkang Tang , Tommy Will Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= Subject: [PATCH 2/3] input: alps: For protocol V3, do not process data when last packet's bit7 is set Date: Fri, 3 Oct 2014 11:43:11 +0200 Message-Id: <1412329392-5580-3-git-send-email-pali.rohar@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1412329392-5580-1-git-send-email-pali.rohar@gmail.com> References: <1412329392-5580-1-git-send-email-pali.rohar@gmail.com> MIME-Version: 1.0 Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Sometimes laptops with closed lid receive invalid ALPS protocol V3 packets with last bit7 set. This happens on Dell Latitude laptops and it looks like it is BIOS bug. Probably EC does not correctly split keyboard and touchpad PS/2 data and when laptop lid is closed it adds 0xFF packet into touchpad PS/2 data. When last packet's bit7 is set it is invalid ALPS packet. So Do not process it and drop it with PSMOUSE_FULL_PACKET. After testing it looks like this patch fixed problem with reseting mouse (after series of invalid packets) when laptop lid is closed on Dell Latitude machines. Signed-off-by: Pali Rohár Tested-by: Pali Rohár Acked-by: Hans de Goede --- drivers/input/mouse/alps.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index 1bd5aa1..b1f44d4 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c @@ -1179,6 +1179,16 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse) return PSMOUSE_BAD_DATA; } + if (priv->proto_version == ALPS_PROTO_V3 && psmouse->pktcnt == psmouse->pktsize) { + // For protocol V3, do not process data when last packet's bit7 is set + if (psmouse->packet[psmouse->pktcnt - 1] & 0x80) { + psmouse_dbg(psmouse, "v3 discard packet[%i] = %x\n", + psmouse->pktcnt - 1, + psmouse->packet[psmouse->pktcnt - 1]); + return PSMOUSE_FULL_PACKET; + } + } + /* Bytes 2 - pktsize should have 0 in the highest bit */ if ((priv->proto_version < ALPS_PROTO_V5) && psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize &&