From patchwork Tue Oct 12 01:37:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 12551267 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 448DCC433EF for ; Tue, 12 Oct 2021 01:37:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 166E960BD3 for ; Tue, 12 Oct 2021 01:37:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234408AbhJLBjm (ORCPT ); Mon, 11 Oct 2021 21:39:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54344 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232492AbhJLBjl (ORCPT ); Mon, 11 Oct 2021 21:39:41 -0400 Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D1EB4C061570; Mon, 11 Oct 2021 18:37:40 -0700 (PDT) Received: by mail-pj1-x102a.google.com with SMTP id k23-20020a17090a591700b001976d2db364so1310130pji.2; Mon, 11 Oct 2021 18:37:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=TbVMS7P/q6HafBOcr4bcqRI0ZoGUj1NgWInPQIDJGfs=; b=eWrljR1e27yaXHJZXIimuNiWJn6RXDQO1aX150IBEOwZKwJZbqacL/orOFJket7vf7 35xxweILdJRnIFPZ1ULciJeG3FZi1PL4N+qzH9M9HKAZTjt+9fcM8aWRbmCuBULgQ4bl v2pVUdljn5OXo2w6Y7oTLyKR2jt31OnSWCivdsjIaTwr0ZQUt+HO4sABg/iG/nAFBEn2 n+E/FJckrsufJsNyK7/QWlS2+Ihotv3wDoMFeimpJFtqcgO9oSXIkEnhYSm4oSB5C1O3 MrtLRBMtZQ6acEg52FeRITLi89zeSeLKGMsHrr2guv+mB2zEdNetgE2FzXLlPYkalZ3n aobg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=TbVMS7P/q6HafBOcr4bcqRI0ZoGUj1NgWInPQIDJGfs=; b=2ef14eWt7ZGCP6FhQv0aOh/o0c5WqOza8Y1NYlghloqJN7YgfQhOctqPwVkia6D8zm GXjjvuYNPwiImFExWA/vb12BqENkCumVcuuLU9lYqxkR1NmlVaACG/8ibHaWgqJd+qNR JTADur6zM71J5CGui/wSGlWW/5eN/ZRVKl3V/SFA4M5RyPcCTPx9o2fgu1Bf0wYsXGt3 VJ+3jf40U1zxzrSjQ7TY826tuo90yJZCYc2pKBtADcBaO1yOo17CBSzHZA5I4Cqds1+n IygiAYqPzvQ8gmEhhzXVeBegnoxo+XXuYNzGTWhCVeosDnExrIp4OnU5TG+z+2tCREN6 i2nw== X-Gm-Message-State: AOAM533I4tMWwk9nfmmXmUsRfXCxfGZlnZce2YYE7Y8TF/6FfLMv1KNi +S7KKCRSrN9p7sSUtH/HCmKEqNxvPBo= X-Google-Smtp-Source: ABdhPJy6Q9TlBNrOJ0TAkl+CiHCMxlhzhhhJiVCTfmQDwW1cqDZ388o7KJnQerhPSZ1t/Vzhe8GPFg== X-Received: by 2002:a17:90b:354a:: with SMTP id lt10mr2833374pjb.3.1634002659345; Mon, 11 Oct 2021 18:37:39 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:202:201:10fb:4b55:2926:7ada]) by smtp.gmail.com with ESMTPSA id nr14sm654719pjb.24.2021.10.11.18.37.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Oct 2021 18:37:38 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Alexander Sverdlin , linux-kernel@vger.kernel.org Subject: [PATCH 1/4] Input: ep93xx_keypad - annotate suspend/resume as __maybe_unused Date: Mon, 11 Oct 2021 18:37:32 -0700 Message-Id: <20211012013735.3523140-1-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.33.0.882.g93a45727a2-goog MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org Instead of guarding suspend/resume methods with #ifdef CONFIG_PM let's mark them as __maybe_unused as this allows better compile coverage. Signed-off-by: Dmitry Torokhov Acked-by: Alexander Sverdlin --- drivers/input/keyboard/ep93xx_keypad.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c index e0e931e796fa..a0c6cdf8e0d3 100644 --- a/drivers/input/keyboard/ep93xx_keypad.c +++ b/drivers/input/keyboard/ep93xx_keypad.c @@ -175,8 +175,7 @@ static void ep93xx_keypad_close(struct input_dev *pdev) } -#ifdef CONFIG_PM_SLEEP -static int ep93xx_keypad_suspend(struct device *dev) +static int __maybe_unused ep93xx_keypad_suspend(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); @@ -197,7 +196,7 @@ static int ep93xx_keypad_suspend(struct device *dev) return 0; } -static int ep93xx_keypad_resume(struct device *dev) +static int __maybe_unused ep93xx_keypad_resume(struct device *dev) { struct platform_device *pdev = to_platform_device(dev); struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); @@ -220,7 +219,6 @@ static int ep93xx_keypad_resume(struct device *dev) return 0; } -#endif static SIMPLE_DEV_PM_OPS(ep93xx_keypad_pm_ops, ep93xx_keypad_suspend, ep93xx_keypad_resume); From patchwork Tue Oct 12 01:37:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 12551269 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7D967C433F5 for ; Tue, 12 Oct 2021 01:37:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 63C6A61056 for ; Tue, 12 Oct 2021 01:37:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232260AbhJLBjo (ORCPT ); Mon, 11 Oct 2021 21:39:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232492AbhJLBjn (ORCPT ); Mon, 11 Oct 2021 21:39:43 -0400 Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C93EC061570; Mon, 11 Oct 2021 18:37:42 -0700 (PDT) Received: by mail-pj1-x102f.google.com with SMTP id na16-20020a17090b4c1000b0019f5bb661f9so1333700pjb.0; Mon, 11 Oct 2021 18:37:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2qY7OmEsJgZ9iHLdKewMDKhiZ78eeuM4IXQtYMLFZgM=; b=QSEosjzFcOISdwnSiGH55XIhgH1D5Gc1zZ9cliRgDvuEggtNOlW49o2lbpWW4EDSrA 2cDH4W/+75Uuc2MuVXQvym5T/awppZg1ibuI7xXglIawnupaBwBEtMZX2NVQELBUtAv2 PzRY4OFv9qSDMcirSQtod+6gJntN+ch3kf57EdhhqH1mP8NZVYSYPOrvADOsOuU2wau2 llBO2dkjMPLFJd3qNQCRDQi1RvKmfCJc5gjjQKL4Lqj4zWhH7PoftTWWozMRwK7MYurP vHaxtSHntmE08u3pilVEZjavwoIbsqK/kPktkanqpgSK6384dhweKXfburRAaDgfpRcE fgfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2qY7OmEsJgZ9iHLdKewMDKhiZ78eeuM4IXQtYMLFZgM=; b=wGhgEv7KFOU+eC3VOCwtMi1LvnE0adYYi/wUVQArRbZoOguKdjgN2EkhugVbu2GmUS Oe5Nefl4w0rYfmpHauH+dZNzOJGcMnimyRPEyk7evnxG0t79r72t8GIQlmAQX9lDnfbS Nm02tIfCcvbPr4YplzrykjDe2B+RkhNo+eTWxGohxVQJVeIvLvSnifa0K5oOgUhgnIPl uvrUnVMtHr5luqLVNyPiBOqZpolCs2proivvoLwLxbaJzqeAKa+kGtpk5botrAuOaKHQ 3PGI0xFDCto+XxQyXslZcncnBi72AZX4cGEcf5o7+ZAOaJ67l4miqZZrj3tE0sd3HWvV Qhqg== X-Gm-Message-State: AOAM530cGnZ05Iy08IV0hmqywYA1ZsQv43ZpLOnowC1KF1TMeAT6VZoJ LQngLClarEK3pcUwdS6LYHHiK5fBHaQ= X-Google-Smtp-Source: ABdhPJyWrRckkHDpt8LgCswoqPaR7X2GIsDRckFNDU47VUSxBFWse0/5NG5XPpMXK5h96MdYCr7DLA== X-Received: by 2002:a17:90a:f013:: with SMTP id bt19mr197267pjb.82.1634002661240; Mon, 11 Oct 2021 18:37:41 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:202:201:10fb:4b55:2926:7ada]) by smtp.gmail.com with ESMTPSA id nr14sm654719pjb.24.2021.10.11.18.37.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Oct 2021 18:37:39 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Alexander Sverdlin , linux-kernel@vger.kernel.org Subject: [PATCH 2/4] Input: ep93xx_keypad - use BIT() and GENMASK() macros Date: Mon, 11 Oct 2021 18:37:33 -0700 Message-Id: <20211012013735.3523140-2-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.33.0.882.g93a45727a2-goog In-Reply-To: <20211012013735.3523140-1-dmitry.torokhov@gmail.com> References: <20211012013735.3523140-1-dmitry.torokhov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org Also drop parenthesis around macros that do not use expressions as they are not needed. Signed-off-by: Dmitry Torokhov Acked-by: Alexander Sverdlin --- drivers/input/keyboard/ep93xx_keypad.c | 37 +++++++++++++------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c index a0c6cdf8e0d3..6be5474ba2f2 100644 --- a/drivers/input/keyboard/ep93xx_keypad.c +++ b/drivers/input/keyboard/ep93xx_keypad.c @@ -17,6 +17,7 @@ * flag. */ +#include #include #include #include @@ -35,28 +36,28 @@ #define KEY_REG 0x08 /* Key Value Capture register */ /* Key Scan Initialization Register bit defines */ -#define KEY_INIT_DBNC_MASK (0x00ff0000) -#define KEY_INIT_DBNC_SHIFT (16) -#define KEY_INIT_DIS3KY (1<<15) -#define KEY_INIT_DIAG (1<<14) -#define KEY_INIT_BACK (1<<13) -#define KEY_INIT_T2 (1<<12) -#define KEY_INIT_PRSCL_MASK (0x000003ff) -#define KEY_INIT_PRSCL_SHIFT (0) +#define KEY_INIT_DBNC_MASK GENMASK(23, 16) +#define KEY_INIT_DBNC_SHIFT 16 +#define KEY_INIT_DIS3KY BIT(15) +#define KEY_INIT_DIAG BIT(14) +#define KEY_INIT_BACK BIT(13) +#define KEY_INIT_T2 BIT(12) +#define KEY_INIT_PRSCL_MASK GENMASK(9, 0) +#define KEY_INIT_PRSCL_SHIFT 0 /* Key Scan Diagnostic Register bit defines */ -#define KEY_DIAG_MASK (0x0000003f) -#define KEY_DIAG_SHIFT (0) +#define KEY_DIAG_MASK GENMASK(5, 0) +#define KEY_DIAG_SHIFT 0 /* Key Value Capture Register bit defines */ -#define KEY_REG_K (1<<15) -#define KEY_REG_INT (1<<14) -#define KEY_REG_2KEYS (1<<13) -#define KEY_REG_1KEY (1<<12) -#define KEY_REG_KEY2_MASK (0x00000fc0) -#define KEY_REG_KEY2_SHIFT (6) -#define KEY_REG_KEY1_MASK (0x0000003f) -#define KEY_REG_KEY1_SHIFT (0) +#define KEY_REG_K BIT(15) +#define KEY_REG_INT BIT(14) +#define KEY_REG_2KEYS BIT(13) +#define KEY_REG_1KEY BIT(12) +#define KEY_REG_KEY2_MASK GENMASK(11, 6) +#define KEY_REG_KEY2_SHIFT 6 +#define KEY_REG_KEY1_MASK GENMASK(5, 0) +#define KEY_REG_KEY1_SHIFT 0 #define EP93XX_MATRIX_SIZE (EP93XX_MATRIX_ROWS * EP93XX_MATRIX_COLS) From patchwork Tue Oct 12 01:37:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 12551271 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39D25C433F5 for ; Tue, 12 Oct 2021 01:37:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1834060F43 for ; Tue, 12 Oct 2021 01:37:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234857AbhJLBjp (ORCPT ); Mon, 11 Oct 2021 21:39:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54360 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234883AbhJLBjo (ORCPT ); Mon, 11 Oct 2021 21:39:44 -0400 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31714C06161C; Mon, 11 Oct 2021 18:37:44 -0700 (PDT) Received: by mail-pj1-x1031.google.com with SMTP id kk10so14532863pjb.1; Mon, 11 Oct 2021 18:37:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JuTrusPmcxFZVC/Xp3VUv/nhvyc/B5TfxbStn00X03o=; b=UhjNqDQB6CpZhMBGQBkKs0FPEP7Kw1kGREoPHf0IsgdJQBSyPP76ZbTa6y2zm8MoNU Y0WvO0NA4y8y/eNjBEXXiJsd0jxRF9QDCyTs7BrExE+tEI+weLebxDHoxfBwPKsMk97l jXvTT3BVe1db0tdS62qc426RsAmgPD1gVrrx+ezCRpzBjRaTPwIKBAQ6aoO8gH7/NW9T DbwLjUyIxYMLoZ6osiAn+j0PSe/jWZaYp4v1AvD5aR4VUENhU4Xo9iulldqbuiY1r6rS atTIj0OA308AR8zPKF7O5AQAW4Ic5wXvTWVLyl9pRMg/nIcSv6sRKSOKaVaW3zV8dECs tAUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JuTrusPmcxFZVC/Xp3VUv/nhvyc/B5TfxbStn00X03o=; b=zyK1wPT64+N803TZYXPjV3XtvYL8CyDddCCWFQoCK+HEaw9PnPuufqevZ77KwEi34B RTU4bpfsvBOV3s37itu0wesOo2Sx1K8PdOtVb8/1RUXBAgal1LKCawdJZg6TR1X5Al5n bmouHhtDOnCNbj76P75nI4NDgvP9TmGE0MWe+ID3JsOvdUNJxWEqMdpC+YkNo3ddU4sX f3M/+L1YN0/z8TfZ5L/tvJsZZUl90BOckDA9KN31N4VzvhSc1YQmEZ+iy0xltKeLPGHS W9VLjL5RJFMcmTUe2G2suPYf6rS5UvKPJW7f6KDHXNIJWgwxPN0a3hfW61dX7vpYEEVr 72HA== X-Gm-Message-State: AOAM533uJgZXVt8vTrZHppOT3+akMCB38VvywKeVysjmRvT3TfjQuW3X 4am0szroY8AqRRjgs8+rjRQRwhnClXU= X-Google-Smtp-Source: ABdhPJxFeuL4/oAvFlqfKV7YamSy/GEgfAEqvE4igop89RRb40Hu8UNrMBXD5+/8pJ+3MOg4X9vqtQ== X-Received: by 2002:a17:903:32c7:b0:13e:ea76:f8cb with SMTP id i7-20020a17090332c700b0013eea76f8cbmr27395192plr.74.1634002662925; Mon, 11 Oct 2021 18:37:42 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:202:201:10fb:4b55:2926:7ada]) by smtp.gmail.com with ESMTPSA id nr14sm654719pjb.24.2021.10.11.18.37.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Oct 2021 18:37:42 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Alexander Sverdlin , linux-kernel@vger.kernel.org Subject: [PATCH 3/4] Input: ep93xx_keypad - use dev_pm_set_wake_irq() Date: Mon, 11 Oct 2021 18:37:34 -0700 Message-Id: <20211012013735.3523140-3-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.33.0.882.g93a45727a2-goog In-Reply-To: <20211012013735.3523140-1-dmitry.torokhov@gmail.com> References: <20211012013735.3523140-1-dmitry.torokhov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org Instead of manually toggling interrupt as wakeup source in suspend/resume methods, let's declare keypad interrupt and wakeup interrupt and leave the rest to the PM core. Signed-off-by: Dmitry Torokhov Acked-by: Alexander Sverdlin --- drivers/input/keyboard/ep93xx_keypad.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c index 6be5474ba2f2..a66cfeaf5b21 100644 --- a/drivers/input/keyboard/ep93xx_keypad.c +++ b/drivers/input/keyboard/ep93xx_keypad.c @@ -27,6 +27,7 @@ #include #include #include +#include /* * Keypad Interface Register offsets @@ -191,9 +192,6 @@ static int __maybe_unused ep93xx_keypad_suspend(struct device *dev) mutex_unlock(&input_dev->mutex); - if (device_may_wakeup(&pdev->dev)) - enable_irq_wake(keypad->irq); - return 0; } @@ -203,9 +201,6 @@ static int __maybe_unused ep93xx_keypad_resume(struct device *dev) struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); struct input_dev *input_dev = keypad->input_dev; - if (device_may_wakeup(&pdev->dev)) - disable_irq_wake(keypad->irq); - mutex_lock(&input_dev->mutex); if (input_device_enabled(input_dev)) { @@ -316,7 +311,11 @@ static int ep93xx_keypad_probe(struct platform_device *pdev) goto failed_free_irq; platform_set_drvdata(pdev, keypad); + device_init_wakeup(&pdev->dev, 1); + err = dev_pm_set_wake_irq(&pdev->dev, keypad->irq); + if (err) + dev_warn(&pdev->dev, "failed to set up wakeup irq: %d\n", err); return 0; @@ -342,6 +341,8 @@ static int ep93xx_keypad_remove(struct platform_device *pdev) struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); struct resource *res; + dev_pm_clear_wake_irq(&pdev->dev); + free_irq(keypad->irq, keypad); if (keypad->enabled) From patchwork Tue Oct 12 01:37:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Torokhov X-Patchwork-Id: 12551273 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15B3FC4332F for ; Tue, 12 Oct 2021 01:37:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F337E60524 for ; Tue, 12 Oct 2021 01:37:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235015AbhJLBjr (ORCPT ); Mon, 11 Oct 2021 21:39:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235009AbhJLBjq (ORCPT ); Mon, 11 Oct 2021 21:39:46 -0400 Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0B864C061570; Mon, 11 Oct 2021 18:37:46 -0700 (PDT) Received: by mail-pj1-x1030.google.com with SMTP id oa12-20020a17090b1bcc00b0019f715462a8so1306209pjb.3; Mon, 11 Oct 2021 18:37:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WYGli3uMb1mpii0PyOfilUSGkqTbEUQmSwfBucAPCF4=; b=LCHt/IXJG8H2QjxbDXybs8LbBCyuRucYxlrqx1CiZBaVX2S0UHY4+SIPaTc8OcsfCW 2wIZYuhWaTqEEfDstJuGgvn/G+JbtGa/bKbHS24ogWgVXf1rtKSUp1LmijeG7YxkYf6I H4xylhUQMlozuRoD/RY3McTiZirJ6/52EK68IN6qDQ5lwNr1+IFNnkiubkiNhWdytGDN fzMUr/jCqGt7IQyJUL8pKUzWXWJhhNMnu2qur1H1o8pIMWRVsUK4rwvtYqzNbRGfT0Ia SHg1VFcfvkAeZf245wFVckVgYH0cFn3my2/SKCJuiSNFgI4vTKncY2x5wTo1UfJPxJ7u VJZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WYGli3uMb1mpii0PyOfilUSGkqTbEUQmSwfBucAPCF4=; b=0Mq3utk8iEbcf+WMTPed2Z3veiIezj12eOq8Z2Ca8+rYUuBc8Y/lWBUFzvRq2j+QnY RiTrn9/SNwJt8rtiOfXhd51H6+l3cRkKIsesbcRqtDcY0Z2LP9bNNqEbGrEQUUddXv/X TPR9EuYJbQG7ItDbEQrBxrVxIkIm1s6Lf+a0GiYcUhyogUPCZxFiwB4uk1v5tNiJP82p 0UqC/kxSuFegZa6WZTofWThFXVE4qxOiIR49kmFj1QL1qTQnu5RZCEXpmNDEghEWviW1 QZjYGadIVYIvkPl98KYaLsBRjyllIvjncc+jYGrLRf4gvGhrxWwjdBwXySVUrOPQgUF5 H5MQ== X-Gm-Message-State: AOAM531yoEJERRGTJgbcaa7qsK55zpkobqecn+hRZCg7qyQ9e1nwM5l7 FluNEsjHqApAkuEvNGAwQIpYAntbDIA= X-Google-Smtp-Source: ABdhPJxaCgYNI/B+dPGuiYaBDjFd9IS5SvGtenK9vHuQdyFjqMF+VfUU17SlJ1E7Yd0y0Y9WxN66kw== X-Received: by 2002:a17:902:d50d:b0:13e:a44e:2d2a with SMTP id b13-20020a170902d50d00b0013ea44e2d2amr27057062plg.89.1634002664608; Mon, 11 Oct 2021 18:37:44 -0700 (PDT) Received: from dtor-ws.mtv.corp.google.com ([2620:15c:202:201:10fb:4b55:2926:7ada]) by smtp.gmail.com with ESMTPSA id nr14sm654719pjb.24.2021.10.11.18.37.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Oct 2021 18:37:43 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org Cc: Alexander Sverdlin , linux-kernel@vger.kernel.org Subject: [PATCH 4/4] Input: ep93xx_keypad - switch to using managed resources Date: Mon, 11 Oct 2021 18:37:35 -0700 Message-Id: <20211012013735.3523140-4-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.33.0.882.g93a45727a2-goog In-Reply-To: <20211012013735.3523140-1-dmitry.torokhov@gmail.com> References: <20211012013735.3523140-1-dmitry.torokhov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org By using managed resources (devm) we are able to streamline error handling in probe and remove most of the custom remove method. Signed-off-by: Dmitry Torokhov --- drivers/input/keyboard/ep93xx_keypad.c | 116 ++++++++----------------- 1 file changed, 36 insertions(+), 80 deletions(-) diff --git a/drivers/input/keyboard/ep93xx_keypad.c b/drivers/input/keyboard/ep93xx_keypad.c index a66cfeaf5b21..90157707dc05 100644 --- a/drivers/input/keyboard/ep93xx_keypad.c +++ b/drivers/input/keyboard/ep93xx_keypad.c @@ -219,6 +219,13 @@ static int __maybe_unused ep93xx_keypad_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(ep93xx_keypad_pm_ops, ep93xx_keypad_suspend, ep93xx_keypad_resume); +static void ep93xx_keypad_release_gpio_action(void *_pdev) +{ + struct platform_device *pdev = _pdev; + + ep93xx_keypad_release_gpio(pdev); +} + static int ep93xx_keypad_probe(struct platform_device *pdev) { struct ep93xx_keypad *keypad; @@ -227,61 +234,46 @@ static int ep93xx_keypad_probe(struct platform_device *pdev) struct resource *res; int err; - keypad = kzalloc(sizeof(struct ep93xx_keypad), GFP_KERNEL); + keypad = devm_kzalloc(&pdev->dev, sizeof(*keypad), GFP_KERNEL); if (!keypad) return -ENOMEM; keypad->pdata = dev_get_platdata(&pdev->dev); - if (!keypad->pdata) { - err = -EINVAL; - goto failed_free; - } + if (!keypad->pdata) + return -EINVAL; keymap_data = keypad->pdata->keymap_data; - if (!keymap_data) { - err = -EINVAL; - goto failed_free; - } + if (!keymap_data) + return -EINVAL; keypad->irq = platform_get_irq(pdev, 0); - if (keypad->irq < 0) { - err = keypad->irq; - goto failed_free; - } + if (keypad->irq < 0) + return keypad->irq; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - err = -ENXIO; - goto failed_free; - } - - res = request_mem_region(res->start, resource_size(res), pdev->name); - if (!res) { - err = -EBUSY; - goto failed_free; - } + if (!res) + return -ENXIO; - keypad->mmio_base = ioremap(res->start, resource_size(res)); - if (keypad->mmio_base == NULL) { - err = -ENXIO; - goto failed_free_mem; - } + keypad->mmio_base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(keypad->mmio_base)) + return PTR_ERR(keypad->mmio_base); err = ep93xx_keypad_acquire_gpio(pdev); if (err) - goto failed_free_io; + return err; + + err = devm_add_action_or_reset(&pdev->dev, + ep93xx_keypad_release_gpio_action, pdev); + if (err) + return err; keypad->clk = clk_get(&pdev->dev, NULL); - if (IS_ERR(keypad->clk)) { - err = PTR_ERR(keypad->clk); - goto failed_free_gpio; - } + if (IS_ERR(keypad->clk)) + return PTR_ERR(keypad->clk); - input_dev = input_allocate_device(); - if (!input_dev) { - err = -ENOMEM; - goto failed_put_clk; - } + input_dev = devm_input_allocate_device(&pdev->dev); + if (!input_dev) + return -ENOMEM; keypad->input_dev = input_dev; @@ -289,26 +281,26 @@ static int ep93xx_keypad_probe(struct platform_device *pdev) input_dev->id.bustype = BUS_HOST; input_dev->open = ep93xx_keypad_open; input_dev->close = ep93xx_keypad_close; - input_dev->dev.parent = &pdev->dev; err = matrix_keypad_build_keymap(keymap_data, NULL, EP93XX_MATRIX_ROWS, EP93XX_MATRIX_COLS, keypad->keycodes, input_dev); if (err) - goto failed_free_dev; + return err; if (keypad->pdata->flags & EP93XX_KEYPAD_AUTOREPEAT) __set_bit(EV_REP, input_dev->evbit); input_set_drvdata(input_dev, keypad); - err = request_irq(keypad->irq, ep93xx_keypad_irq_handler, - 0, pdev->name, keypad); + err = devm_request_irq(&pdev->dev, keypad->irq, + ep93xx_keypad_irq_handler, + 0, pdev->name, keypad); if (err) - goto failed_free_dev; + return err; err = input_register_device(input_dev); if (err) - goto failed_free_irq; + return err; platform_set_drvdata(pdev, keypad); @@ -318,48 +310,12 @@ static int ep93xx_keypad_probe(struct platform_device *pdev) dev_warn(&pdev->dev, "failed to set up wakeup irq: %d\n", err); return 0; - -failed_free_irq: - free_irq(keypad->irq, keypad); -failed_free_dev: - input_free_device(input_dev); -failed_put_clk: - clk_put(keypad->clk); -failed_free_gpio: - ep93xx_keypad_release_gpio(pdev); -failed_free_io: - iounmap(keypad->mmio_base); -failed_free_mem: - release_mem_region(res->start, resource_size(res)); -failed_free: - kfree(keypad); - return err; } static int ep93xx_keypad_remove(struct platform_device *pdev) { - struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); - struct resource *res; - dev_pm_clear_wake_irq(&pdev->dev); - free_irq(keypad->irq, keypad); - - if (keypad->enabled) - clk_disable(keypad->clk); - clk_put(keypad->clk); - - input_unregister_device(keypad->input_dev); - - ep93xx_keypad_release_gpio(pdev); - - iounmap(keypad->mmio_base); - - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - release_mem_region(res->start, resource_size(res)); - - kfree(keypad); - return 0; }