Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1057846pxb; Sun, 19 Sep 2021 04:57:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx3Aw403bJgyM71YOrBqSBOJa51dhBnsQNRTbHv+jCfRAv2lD4TzQJI9aSsN4ZS9iviawUN X-Received: by 2002:aa7:c150:: with SMTP id r16mr23128817edp.388.1632052679742; Sun, 19 Sep 2021 04:57:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632052679; cv=none; d=google.com; s=arc-20160816; b=YXvTorvd3/U5nehRAuVrY0gOLQulNd2mmx9WvR5DX0KM5OnLZVeP+covQwUSWjH9Zw PssOxJwuGEkfbG7cU2gM97pQ4wFoisfGCwzyKf1wR4qALFiyk8oyrJzpT42x1bu2XdXS qXq4aw97SdSmxJcVyOC6fSlZHAAKLLD2tq2b4GO5F8KFmQhyq4oe+GMm/U4LRT1C8zFn pXZ7wrVTu9eHkL805Be1EsTib28O6j1QZiGi6QJPPkpGnOMmgOF7XouVLTQkoJgwx+QI GHf6hpNLAXHGej+z58cr2i3W6aoLgI0uAXnxRTsqCuQHubmlIiKcMlr3muabvgKuVF+m qWKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :organization:message-id:date:subject:cc:to:from; bh=QVaCHAUVwEws3YH+I6lfzeczg476uu9uFQKAmy6tg84=; b=YKZAksWlQC0c64cC1X1Dq5VrNytDuWAgz7CGs4S5swu16n6341BaiwaunDcqh5wAH/ Na/9YQl4wlv2OpMTPApaosmqMwAWQE2YSRP6sdEfFggGbqga55ctGApv+/JXxkkvs4OV II9dsbrHhUVFS2yzy9DYG+lY4REPCCkx/u8wIJVETpBGfoBmIbBRZ+NUdydN+FYpprMe 8DX+jz8ddISk3rWzXeGTIBOoX0sZUnHKpyTRGNeD++s0uEuFpIW0RjHj2Ifk+MlxrESR 0RMQkb7J6yc5GeR3PDz89ikTrsFGhNET3HD0m9G3GSszLlm7Ry37jeMGdYWy0QhWB2zO vhyw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v8si17323373ede.567.2021.09.19.04.57.35; Sun, 19 Sep 2021 04:57:59 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235913AbhIRXRj (ORCPT + 99 others); Sat, 18 Sep 2021 19:17:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45494 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230080AbhIRXRi (ORCPT ); Sat, 18 Sep 2021 19:17:38 -0400 X-Greylist: delayed 965 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Sat, 18 Sep 2021 16:16:14 PDT Received: from xilka.com (bbb.xilka.com [IPv6:2001:470:1f11:5a5:16da:e9ff:fe11:e54b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45D98C061574; Sat, 18 Sep 2021 16:16:14 -0700 (PDT) Received: from comer.internal ([IPv6:2001:470:1f11:5a5:2b1b:9a83:6c1c:2916]) (authenticated bits=0) by xilka.com (8.16.1/8.16.1) with ESMTPSA id 18IMxvbo091468 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sat, 18 Sep 2021 16:59:58 -0600 From: Kelly Anderson To: ike.pan@canonical.com, hdegoede@redhat.com, mgross@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, kelly@xilka.com Subject: [PATCH] add platform support for Ideapad 5 Pro 16ACH6-82L5 Date: Sat, 18 Sep 2021 16:59:51 -0600 Message-ID: <5753131.lOV4Wx5bFT@comer.internal> Organization: Xilka MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Spam-Status: No, score=-2.9 required=2.5 tests=ALL_TRUSTED,BAYES_00 autolearn=ham autolearn_force=no version=4.0.0-rsvnunknown X-Spam-Checker-Version: SpamAssassin 4.0.0-rsvnunknown (svnunknown) on bbb.internal Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding support specifically for Ideapad 5 Pro 16ACH6-82L5 by adding a whitelist function that can validate notebooks for which dytc_version is less than 5, and seem to work fine at dytc_version 4. This code has been tested to work properly on the specified system. Signed-off-by: Kelly Anderson drivers/platform/x86/ideapad-laptop.c | 37 ++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index e7a1299e3776..92b8f7dc79f5 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c @@ -868,7 +868,28 @@ static void dytc_profile_refresh(struct ideapad_private *priv) } } -static int ideapad_dytc_profile_init(struct ideapad_private *priv) +static int ideapad_dytc_v4_whitelist(struct platform_device *pdev) +{ + const char *vendor = dmi_get_system_info(DMI_SYS_VENDOR); + const char *product = dmi_get_system_info(DMI_PRODUCT_NAME); + + if ( product ) { + if ( vendor ) { + dev_info(&pdev->dev, "DYTC Vendor: %s\n", vendor); + } + + dev_info(&pdev->dev, "DYTC Product: %s\n", product); + + if ( ! strncmp(product, "82L5", 4) ) /* IdeaPad 5 Pro 16ACH6 */ { + return 1; + } + } + + return 0; +} + +static int ideapad_dytc_profile_init(struct platform_device *pdev, + struct ideapad_private *priv) { int err, dytc_version; unsigned long output; @@ -883,11 +904,21 @@ static int ideapad_dytc_profile_init(struct ideapad_private *priv) /* Check DYTC is enabled and supports mode setting */ if (!test_bit(DYTC_QUERY_ENABLE_BIT, &output)) + { + dev_info(&pdev->dev, "DYTC_QUERY_ENABLE_BIT returned false\n"); return -ENODEV; + } dytc_version = (output >> DYTC_QUERY_REV_BIT) & 0xF; + if (dytc_version < 5) - return -ENODEV; + { + if ( dytc_version < 4 || ! ideapad_dytc_v4_whitelist(pdev) ) + { + dev_info(&pdev->dev, "DYTC_VERSION is less than 4 or is not whitelisted: %d\n", dytc_version); + return -ENODEV; + } + } priv->dytc = kzalloc(sizeof(*priv->dytc), GFP_KERNEL); if (!priv->dytc) @@ -1595,7 +1626,7 @@ static int ideapad_acpi_add(struct platform_device *pdev) ideapad_sync_rfk_state(priv); ideapad_sync_touchpad_state(priv); - err = ideapad_dytc_profile_init(priv); + err = ideapad_dytc_profile_init(pdev, priv); if (err) { if (err != -ENODEV) dev_warn(&pdev->dev, "Could not set up DYTC interface: %d\n", err); -- 2.33.0