From patchwork Mon Mar 20 00:32:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Pearson X-Patchwork-Id: 71919 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp938987wrt; Sun, 19 Mar 2023 17:34:35 -0700 (PDT) X-Google-Smtp-Source: AK7set+Lhnzp8m8+TJj1YXK+lq9LMNjhOCgf1HJzKdh0VcINREXBTXhdk5kUQ+lJtoN8iQKcHg3R X-Received: by 2002:a17:90a:6e08:b0:233:a836:15f4 with SMTP id b8-20020a17090a6e0800b00233a83615f4mr16036819pjk.1.1679272475108; Sun, 19 Mar 2023 17:34:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679272475; cv=none; d=google.com; s=arc-20160816; b=Xw3USPwcR9+UeudGwFFjCO4Cu4O/zoE1MzRK2JKL0oM7YV3KGsZjuqfhlHV0eKUiKR DWw+R1oukHFCyNOZnkn94HHWsHF1vZksV1bFTU1Cm3BhmuUt5uJV2u1DKUZQ0ZRNgkb0 RPjVguqWKj7T2VCjQ69RLXIWx7Uk/JieegIibAlfVFdaUefWCvQvTvxxX0BGojJJ8MPP irVhErSKjalj9A8xAa+S/F5V4clV4NnGzQDNn+kCOUfywmVFJno5scI2g7+iKE4gwoZg QptBgqCY0vae2T0To45KIX3RGOoELn9ppGgeyio+KoC39ZNxCjuVjp5ezGnRJS2J56AE nKAg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :feedback-id:dkim-signature:dkim-signature; bh=iwPU2XUoORcrqxgWnL7qQpsymVVO5t7PxaOWHT9jlq4=; b=gCaG1KB2cishI4KTOgkIMoIfyNl/PAK5q4n8Sty4SRs30vnhqMUb9hpPR+5bXd+isx R6wWusI6B0vHYp6JIuwN1iyCV2v4a16ATSlrHrFXEPBsBT2rSOOH5Gt1sDfFlGu3UW8+ 10OktHkjFqfztKN9v9WBfkqlUjqvBOsXnTtPmDjL3Kcbe+GTopLmGm7iCICxOpiBweGY 4/XzkBow9hh/s8EmyPLV/Lc+zG9a7zmFVXdbKy3ETvdGdJUMgNch+Aed9BL3GATuq4hC xMUApxq+kBnnN9iNDdSmHemD+pLz4tXfea8ZDvNQii2NqtPtzSDDX5voyCs6Qtg68M8D 2yTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@squebb.ca header.s=fm3 header.b=C00Hio0r; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b="A/gN8Tp0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 35-20020a17090a09a600b0023d0d26c503si14754968pjo.89.2023.03.19.17.34.20; Sun, 19 Mar 2023 17:34:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@squebb.ca header.s=fm3 header.b=C00Hio0r; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b="A/gN8Tp0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229642AbjCTAck (ORCPT + 99 others); Sun, 19 Mar 2023 20:32:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229446AbjCTAci (ORCPT ); Sun, 19 Mar 2023 20:32:38 -0400 Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8586F168B3 for ; Sun, 19 Mar 2023 17:32:36 -0700 (PDT) Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.nyi.internal (Postfix) with ESMTP id DFDFF5C00BA; Sun, 19 Mar 2023 20:32:33 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Sun, 19 Mar 2023 20:32:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=squebb.ca; h=cc :cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm3; t=1679272353; x= 1679358753; bh=iwPU2XUoORcrqxgWnL7qQpsymVVO5t7PxaOWHT9jlq4=; b=C 00Hio0rKz2qHrJrV/M0gZ59GCcgOB7qtFIVEE9CxnYxSb+UqxO+Mas/kFePj1CG0 fvVmSLzCBxWGd31+327oOeZhXQp4kFSwpGHchnERuLGfanccv+lorCF6o+k8L9Lq Q+4zMEH0NUOQ26Zy/IJPab+B73aJnlG/B+L06vaxZ+ZQBvrW0tM6iBrYZhjkrKlR XUVUFNRTpbtFtp/Q/iOSR0cRuFA96H8IpLuSJTULUZqYZ1sUDF1CcorKbFQgFCh4 6k68/kFlvly64oOypRer5zaRjQdr/OQtWB0I1euVZkG6vJukiCsXuJNAlhEJSXBL YKgpTjdNj26edaCtiyQBA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1679272353; x= 1679358753; bh=iwPU2XUoORcrqxgWnL7qQpsymVVO5t7PxaOWHT9jlq4=; b=A /gN8Tp0KGpuCQ2Xs/NPe/tWeVCkfMQNplm/nOPrsYLGdQ7Siq0DHrol0XYkr1oTh RaeJrH+NB4Qwc1pOp0zlVx8zehLJ8lrWptOSe8Cy+zcvbbNNrsxPJ9OQ21MNeok6 hKeHPrJSt9SHfQ0vmo713yRHGPjiriwLT/elqlVSG+X64PfdqlOV1lGbOcXoLe9E WrcBWqx+wvfdgjwpjnh57zk+c2i/UkxeFNX2tRE4L/GHrWCQwu3PcpfBppb856VU 4ffHwRkcAkDBCsNyFscEd3LKv1mmWc2Io7wK2nUNUaa1HaT9XOG6Ltr0KK1q6eAl VwO/3z9/JvHqnNG2hA9nQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvdefjedgvdefucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucgoteeftdduqddtudculdduhedmnecujfgurhephf fvvefufffkofgjfhgggfestdekredtredttdenucfhrhhomhepofgrrhhkucfrvggrrhhs ohhnuceomhhpvggrrhhsohhnqdhlvghnohhvohesshhquhgvsggsrdgtrgeqnecuggftrf grthhtvghrnhepfedtvdejfeelffevhffgjeejheduteetieeguefgkefhhfegjeduueet hefgvdffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh epmhhpvggrrhhsohhnqdhlvghnohhvohesshhquhgvsggsrdgtrg X-ME-Proxy: Feedback-ID: ibe194615:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 19 Mar 2023 20:32:33 -0400 (EDT) From: Mark Pearson To: mpearson-lenovo@squebb.ca Cc: hdegoede@redhat.com, markgross@kernel.org, markpearson@lenovo.com, thomas@t-8ch.de, pobrn@protonmail.com, linux-kernel@vger.kernel.org Subject: [PATCH v4 4/4] platform/x86: think-lmi: Add possible_values for ThinkStation Date: Sun, 19 Mar 2023 20:32:21 -0400 Message-Id: <20230320003221.561750-4-mpearson-lenovo@squebb.ca> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230320003221.561750-1-mpearson-lenovo@squebb.ca> References: <20230320003221.561750-1-mpearson-lenovo@squebb.ca> MIME-Version: 1.0 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1760844814421206900?= X-GMAIL-MSGID: =?utf-8?q?1760844814421206900?= ThinkStation platforms don't support the API to return possible_values but instead embed it in the settings string. Try and extract this information and set the possible_values attribute appropriately. Signed-off-by: Mark Pearson --- Changes in v4: - is_visible handling split out into separate patch - linelength reduced so checkpatch is clean. Changes in v3: - Use is_visible attribute to determine if possible_values should be available - Code got refactored a bit to make compilation cleaner Changes in v2: - Move no value for possible_values handling into show function - use kstrndup for allocating string drivers/platform/x86/think-lmi.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 6f8c91716a95..aaaeb30fb0b0 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -1422,6 +1422,26 @@ static int tlmi_analyze(void) if (ret || !setting->possible_values) pr_info("Error retrieving possible values for %d : %s\n", i, setting->display_name); + } else { + /* + * Older Thinkstations don't support the bios_selections API. + * Instead they store this as a [Optional:Option1,Option2] section of the + * name string. + * Try and pull that out if it's available. + */ + char *item, *optstart, *optend; + + if (!tlmi_setting(setting->index, &item, LENOVO_BIOS_SETTING_GUID)) { + optstart = strstr(item, "[Optional:"); + if (optstart) { + optstart += strlen("[Optional:"); + optend = strstr(optstart, "]"); + if (optend) + setting->possible_values = + kstrndup(optstart, optend - optstart, + GFP_KERNEL); + } + } } /* * firmware-attributes requires that possible_values are separated by ';' but