Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp2413674ioo; Mon, 23 May 2022 18:47:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyRgn+Jlj6SRdgdMe1JDQEV6pgNk5MiP34GbWeUkn8WrycEFGTEdEc26rFQOxkpKI4wvvCd X-Received: by 2002:a17:902:eb42:b0:161:faa6:e3ac with SMTP id i2-20020a170902eb4200b00161faa6e3acmr16958913pli.37.1653356831876; Mon, 23 May 2022 18:47:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653356831; cv=none; d=google.com; s=arc-20160816; b=J+0uWfxY/DEUFKz6uvr/UI3uRQZUW18lKSibBKy4Po1Wd/iTy2xRsv5nKmBnzKBtTC ntxrAa6NJderL/On+KOJyVYIj/2oCjyh8/lK8fm0Qgb4l2dJTFwS1qsJNKlHwXdqlpDq 8QCKeSFA4Ni/IvhP621JUS+oc8MYFfe1QCp7vDU9t5I1CfOtHJVp49+f/MCwKkjdM5OR UtciDkfEQcicLN9gg9vg8SmK7bbTCHIOLvfOChZEq2o5O7z0UZWIPoQ6U1DQhVWVCa1G baTBapZ/GDDNDnJhkBNrfOVXc/VRJgzaZsNo2MojG1r0E4dod1VsOYtHHLbAfLacZCaf kFSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-disposition:mime-version:message-id :subject:cc:to:from:date:dkim-signature; bh=pJTRgXjYxPKGivC1ddsBnyqDyotE4GS4vzjjb/S5WBE=; b=Kkh4ZYbCJL5iLd5850CI8hhl4dbs03rEUB5u9eVQDjShvwLTcIcTN66gMgFygTgi1K Y+wz/oHA2SUFgKvIXB64sfPeX46pdT8+yTC6LAGoYsg4CrXs5+9zlNUrDeKm5qSPs/5D X3N8d8AH3wZt5N0r4VyIHD5Gwwj4b9AUCpnZhypEy54QGbDkhRkjOXawen4gfcmjI6ig N7uOoMe5XpA5P5B2QjKgrOKKc9Oi8G7bGobNyNYZKS6UxRDAVLaIDS2jC/HEFly2L8/N nxvjO0odk289Yz8DVQaagTM2/rYgdIocblW4OCw28UPwHORDkxaJIg6CABq8dzwEe3Wa fOFA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="ESCC6/40"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k12-20020a170902c40c00b00158d6f07b2esi14353356plk.85.2022.05.23.18.46.51; Mon, 23 May 2022 18:47:11 -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=@gmail.com header.s=20210112 header.b="ESCC6/40"; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229924AbiEWWQ6 (ORCPT + 99 others); Mon, 23 May 2022 18:16:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229522AbiEWWQ5 (ORCPT ); Mon, 23 May 2022 18:16:57 -0400 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B313978929; Mon, 23 May 2022 15:16:56 -0700 (PDT) Received: by mail-pl1-x62f.google.com with SMTP id s14so14283397plk.8; Mon, 23 May 2022 15:16:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:subject:message-id:mime-version:content-disposition; bh=pJTRgXjYxPKGivC1ddsBnyqDyotE4GS4vzjjb/S5WBE=; b=ESCC6/40VtCzAGtorsLZn0r0V2dBdWiAOt/cG6gTdpQvsDw+mGlgVg7Rk53aHsoQQp 0+uIQkSr3+LV3ofNC3mJgx8gX9WwjMSSnmnZddXeQKgw56PdhYP6Dpkq7qNvcqOfJqdv T7SdjCVb57q7FlX/b0P0C7c5IJDFGC2tczw4YqAlFOIc7KvyWtLLtVdSccSr234CejTZ /zPS5dQ3UeU2+8yW1jlkkiuqf4goS0Lz/gAX8rZ5QdmW7/pF94+serdUK5wna9OzJ/gb /RRupefhXyaSG4Ep9gxcObKqnFHrT/5dS5XIwIukTLs3fzer6b5uHSKFz2pWYneFUqUa Wp8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition; bh=pJTRgXjYxPKGivC1ddsBnyqDyotE4GS4vzjjb/S5WBE=; b=eDTwiql2C2rmUmBwa0s7bqfoMku8ACch4yFs5Sp1AUhLan/UmGLxAFP/9OuGrcs8GH qcvqvhlZymf91fnMKyVmUUlB6Vzy3E7DgXOuKHwWmDM/ORA4QPTTdtgJEdZhM97iSs+X DvdDCh5D5erYYpSZRhBS9HaKiNHo6yZF2AXVaoqNXZCC3MOJdZKr1Y3Zbql8cL73R1WL PSVOJC2YLrl2pJ1boNZtEo7MpftX6VPKxTqyYaN8MaoVtZL21UVY2cZpTrVllAC9bT2D rSAFmZlgalH3/oIcmDi+7XzNBgm4pFcgnjH1faevvJu1Vv0h7p/ciCFw/YNYStoGmzDT EoNQ== X-Gm-Message-State: AOAM5306L2Xzbx2nvymB0JSwbcYqi6V/Th2xZGiRdQh8cixuQI8r/G2b 04ucGWPm4DkTDwkAL6nXPhyTrhHyUeo= X-Received: by 2002:a17:90a:aa8c:b0:1df:359a:1452 with SMTP id l12-20020a17090aaa8c00b001df359a1452mr1170029pjq.75.1653344213190; Mon, 23 May 2022 15:16:53 -0700 (PDT) Received: from google.com ([2620:15c:202:201:ce25:f34f:c90d:61fa]) by smtp.gmail.com with ESMTPSA id ck18-20020a17090afe1200b001cb6527ca39sm214063pjb.0.2022.05.23.15.16.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 May 2022 15:16:52 -0700 (PDT) Date: Mon, 23 May 2022 15:16:49 -0700 From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Mattijs Korpershoek , AngeloGioacchino Del Regno , linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] Input: mtk-pmic-keys - use single update when configuring long press behavior Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 Instead of doing 3 read-modify-write operations when configuring behavior of long-press, consolidate everything into one. Signed-off-by: Dmitry Torokhov --- drivers/input/keyboard/mtk-pmic-keys.c | 71 ++++++++++---------------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/drivers/input/keyboard/mtk-pmic-keys.c b/drivers/input/keyboard/mtk-pmic-keys.c index c31ab4368388..d2f0db245ff6 100644 --- a/drivers/input/keyboard/mtk-pmic-keys.c +++ b/drivers/input/keyboard/mtk-pmic-keys.c @@ -18,17 +18,11 @@ #include #include -#define MTK_PMIC_PWRKEY_RST_EN_MASK 0x1 -#define MTK_PMIC_PWRKEY_RST_EN_SHIFT 6 -#define MTK_PMIC_HOMEKEY_RST_EN_MASK 0x1 -#define MTK_PMIC_HOMEKEY_RST_EN_SHIFT 5 -#define MTK_PMIC_RST_DU_MASK 0x3 -#define MTK_PMIC_RST_DU_SHIFT 8 - -#define MTK_PMIC_PWRKEY_RST \ - (MTK_PMIC_PWRKEY_RST_EN_MASK << MTK_PMIC_PWRKEY_RST_EN_SHIFT) -#define MTK_PMIC_HOMEKEY_RST \ - (MTK_PMIC_HOMEKEY_RST_EN_MASK << MTK_PMIC_HOMEKEY_RST_EN_SHIFT) +#define MTK_PMIC_RST_DU_MASK GENMASK(9, 8) +#define MTK_PMIC_RST_DU_SHIFT 8 +#define MTK_PMIC_RST_KEY_MASK GENMASK(6, 5) +#define MTK_PMIC_PWRKEY_RST BIT(6) +#define MTK_PMIC_HOMEKEY_RST BIT(5) #define MTK_PMIC_PWRKEY_INDEX 0 #define MTK_PMIC_HOMEKEY_INDEX 1 @@ -108,53 +102,44 @@ enum mtk_pmic_keys_lp_mode { }; static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys, - u32 pmic_rst_reg) + u32 pmic_rst_reg) { - int ret; u32 long_press_mode, long_press_debounce; + u32 value, mask; + int error; - ret = of_property_read_u32(keys->dev->of_node, - "power-off-time-sec", &long_press_debounce); - if (ret) + error = of_property_read_u32(keys->dev->of_node, "power-off-time-sec", + &long_press_debounce); + if (error) long_press_debounce = 0; - regmap_update_bits(keys->regmap, pmic_rst_reg, - MTK_PMIC_RST_DU_MASK << MTK_PMIC_RST_DU_SHIFT, - long_press_debounce << MTK_PMIC_RST_DU_SHIFT); + mask = MTK_PMIC_RST_DU_MASK; + value = long_press_debounce << MTK_PMIC_RST_DU_SHIFT; - ret = of_property_read_u32(keys->dev->of_node, - "mediatek,long-press-mode", &long_press_mode); - if (ret) + error = of_property_read_u32(keys->dev->of_node, + "mediatek,long-press-mode", + &long_press_mode); + if (error) long_press_mode = LP_DISABLE; switch (long_press_mode) { - case LP_ONEKEY: - regmap_update_bits(keys->regmap, pmic_rst_reg, - MTK_PMIC_PWRKEY_RST, - MTK_PMIC_PWRKEY_RST); - regmap_update_bits(keys->regmap, pmic_rst_reg, - MTK_PMIC_HOMEKEY_RST, - 0); - break; case LP_TWOKEY: - regmap_update_bits(keys->regmap, pmic_rst_reg, - MTK_PMIC_PWRKEY_RST, - MTK_PMIC_PWRKEY_RST); - regmap_update_bits(keys->regmap, pmic_rst_reg, - MTK_PMIC_HOMEKEY_RST, - MTK_PMIC_HOMEKEY_RST); - break; + value |= MTK_PMIC_HOMEKEY_RST; + fallthrough; + + case LP_ONEKEY: + value |= MTK_PMIC_PWRKEY_RST; + fallthrough; + case LP_DISABLE: - regmap_update_bits(keys->regmap, pmic_rst_reg, - MTK_PMIC_PWRKEY_RST, - 0); - regmap_update_bits(keys->regmap, pmic_rst_reg, - MTK_PMIC_HOMEKEY_RST, - 0); + mask |= MTK_PMIC_RST_KEY_MASK; break; + default: break; } + + regmap_update_bits(keys->regmap, pmic_rst_reg, mask, value); } static irqreturn_t mtk_pmic_keys_irq_handler_thread(int irq, void *data) -- 2.36.1.124.g0e6072fb45-goog -- Dmitry