Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp2577199pxb; Tue, 13 Apr 2021 05:28:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx9Ml+LGAAGy0rePssuqI9PBKqXabdkQ85TxrgPKeU4IbIydIz7PdxR8yXeRG5MWReYkQMt X-Received: by 2002:a17:906:3c45:: with SMTP id i5mr6078212ejg.368.1618316898678; Tue, 13 Apr 2021 05:28:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618316898; cv=none; d=google.com; s=arc-20160816; b=Jm3q8ld+ddAWu94pz3DZOEYNPT7PA4Kn33Lv3PTOgXaeul4WRqxxXSdOQfLJaHyDOp ZAdLXWGOL7BceqqoKdxG82Bb2cIY5eFuQyPY6oxrqM0y5nvMz72M0yKeKy25t+VqpnZA BQikqeL2Qh9fERWQRbv/XNEQI2QdW2wy0Yf8uMcJRGf45shI1D9X6LQ2j/8Q6exCaYol xD6KyTg1QTQmajxNsgB7EjFozb9Ze+fdWMaUAeXDDyBtyn0EoYcHjbW3Qys8k6vKSfEm Hbe/WVMpkAQr4YnniXQyTqxjTebZQdKkzANzVx6eMaxsAjNEccBeSDpqkkDRSZFk5MxJ zPAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from :dkim-signature; bh=yheRx+kYUsbNUD7gJ5pySz1Sr2ILfCsXaKYlyJifNug=; b=R58uPny2YHSN2u8NJp9z/ni8sJb7pdKCMWMpsDv1VOhuQormCs7INcGiclLEsPB8W8 GdEKuD+MnssAQSN3AUYFJ6rfo43Kmj/qzKmFsdzHhfiIqkUPuSOFo/HlJUUGIqHFA0h0 IYVIAw4vFBhIe/Aclaxh0c7rmZTfrOkq0rrMx9xfMiq7LUPp9Lpl0Xar+pSw2+M1kan6 +iFs5Uwk5vHSON41rbYPh5xguZFY10EIfgSOsZOwzjQoNEjswShb19/u+U3G1fNoPLT6 ELgb3YsoxhAH5BFbiTRksKwxPYZW3Wd6A6cEAkNxRQh/f653CXqUgpJJRrzQ/W1Fj1Bo u6YQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=SjJPOJQw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s7si7236766ejd.402.2021.04.13.05.27.54; Tue, 13 Apr 2021 05:28:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=SjJPOJQw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240128AbhDMBVQ (ORCPT + 99 others); Mon, 12 Apr 2021 21:21:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56490 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235837AbhDMBVP (ORCPT ); Mon, 12 Apr 2021 21:21:15 -0400 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0CE2C061574; Mon, 12 Apr 2021 18:20:56 -0700 (PDT) Received: by mail-pj1-x1033.google.com with SMTP id e8-20020a17090a7288b029014e51f5a6baso2819670pjg.2; Mon, 12 Apr 2021 18:20:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=yheRx+kYUsbNUD7gJ5pySz1Sr2ILfCsXaKYlyJifNug=; b=SjJPOJQw3GzbMhck9SE/ymw2UYnJispVYGjMPUusA0rigSRiMzorrPnOljdlHyqsE1 mVlMQLcUmJCy91zWbdR4+qQxlcFQ5sQc5QlF7T+dCENiCwEz9gZcapR/TDMRu/iDw985 8i4qkTB+P12CJZn+Puiel1RX6jV0IGI8UKElzscv7rbggIRu2nAp8udcwk7fq+V+wFTc bsmojpb0+vNqEOSw42NbyAR2yix5SIII+ZHxkCQU4/e94KjFIexK+VJz/Riledn73mUH wq/6F65d0rYoS+hsZaFRvLBX9bjURWOQbXJlGJ0dW2HqzQO2UlO2Ut5zYI9CNmCcOlgb NhQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=yheRx+kYUsbNUD7gJ5pySz1Sr2ILfCsXaKYlyJifNug=; b=AfY49Td9VCg3/5NWwszK1OE6snailjEGkm+SZnxuk72QkvIlDusaSrsggOTVn42mhF hbuXzLnXxBBr2e6rV1coR42hEXsifleLgHWhpvdhbUG0RG3VUF2EIppwTr54BDyhJmxd 9SGnudmAQrJNwSaKsbJEcT4nxCLmpg7SoVsbQAnrSMTIRoHiEe8a0lfQ6rjt043iziiz u4xFvbLB9kc9pUWzu23hXFOftRWv9Q/t3nOPAF9ALbqXkUYy+t1eTgXPRtD5Rq5qNBpd UBwALET0+y+2aHcVY40LmTrKP4+YKhSTYB3+LDuNx3mEDhO3WvnNzQHtBlwWmcPErc2C czXw== X-Gm-Message-State: AOAM5302AFIBaPZfSfWF0y5JK9XpdI4BiLVGAQs0ivjlNKWfxVltBWRz Xebk7kwQ4SL63XFT7aUhhyk= X-Received: by 2002:a17:902:e889:b029:e7:1490:9da5 with SMTP id w9-20020a170902e889b02900e714909da5mr28568352plg.20.1618276856107; Mon, 12 Apr 2021 18:20:56 -0700 (PDT) Received: from localhost.localdomain ([2401:e180:8d00:23:945d:de90:edc9:855b]) by smtp.gmail.com with ESMTPSA id e13sm3402514pfd.64.2021.04.12.18.20.52 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Apr 2021 18:20:55 -0700 (PDT) From: Johnny Chuang To: Dmitry Torokhov , Benjamin Tissoires , Peter Hutterer , linux-kernel@vger.kernel.org, linux-input@vger.kernel.org, Harry Cutts , Johnny Chuang Cc: James Chen , Jennifer Tsai , Paul Liang , Jeff Chuang , Douglas Anderson , Jingle Subject: [PATCH v3] HID: i2c-hid: Skip ELAN power-on command after reset Date: Tue, 13 Apr 2021 09:20:50 +0800 Message-Id: <1618276850-27178-1-git-send-email-johnny.chuang.emc@gmail.com> X-Mailer: git-send-email 2.7.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Fixes: 43b7029f475e ("HID: i2c-hid: Send power-on command after reset"). For ELAN touchscreen, we found our boot code of IC was not flexible enough to receive and handle this command. Once the FW main code of our controller is crashed for some reason, the controller could not be enumerated successfully to be recognized by the system host. therefore, it lost touch functionality. Add quirk for skip send power-on command after reset. It will impact to ELAN touchscreen and touchpad on HID over I2C projects. Signed-off-by: Johnny Chuang --- Changes in V3: - intent the comment at qurik entry - add Fixes:flag for previous commit id Changes in v2: - move comment to quirk entry --- drivers/hid/i2c-hid/i2c-hid-core.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/hid/i2c-hid/i2c-hid-core.c b/drivers/hid/i2c-hid/i2c-hid-core.c index 9993133..32e3287 100644 --- a/drivers/hid/i2c-hid/i2c-hid-core.c +++ b/drivers/hid/i2c-hid/i2c-hid-core.c @@ -45,6 +45,7 @@ #define I2C_HID_QUIRK_BOGUS_IRQ BIT(4) #define I2C_HID_QUIRK_RESET_ON_RESUME BIT(5) #define I2C_HID_QUIRK_BAD_INPUT_SIZE BIT(6) +#define I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET BIT(7) /* flags */ @@ -178,6 +179,12 @@ static const struct i2c_hid_quirks { I2C_HID_QUIRK_RESET_ON_RESUME }, { USB_VENDOR_ID_ITE, I2C_DEVICE_ID_ITE_LENOVO_LEGION_Y720, I2C_HID_QUIRK_BAD_INPUT_SIZE }, + /* + * Sending the wakeup after reset actually break ELAN touchscreen controller + * Add I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET to skip wakeup after reset + */ + { USB_VENDOR_ID_ELAN, HID_ANY_ID, + I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET }, { 0, 0 } }; @@ -461,7 +468,8 @@ static int i2c_hid_hwreset(struct i2c_client *client) } /* At least some SIS devices need this after reset */ - ret = i2c_hid_set_power(client, I2C_HID_PWR_ON); + if (!(ihid->quirks & I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET)) + ret = i2c_hid_set_power(client, I2C_HID_PWR_ON); out_unlock: mutex_unlock(&ihid->reset_lock); -- 2.7.4