From patchwork Wed Mar 24 12:55:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161059 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9689DC433E4 for ; Wed, 24 Mar 2021 12:57:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8500F61A0A for ; Wed, 24 Mar 2021 12:57:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234393AbhCXM4a (ORCPT ); Wed, 24 Mar 2021 08:56:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234510AbhCXM4D (ORCPT ); Wed, 24 Mar 2021 08:56:03 -0400 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3CD0C0613DF for ; Wed, 24 Mar 2021 05:56:02 -0700 (PDT) Received: by mail-ej1-x634.google.com with SMTP id a7so32674237ejs.3 for ; Wed, 24 Mar 2021 05:56:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Yt30BylsVFl1b+dQoUipKgO72wces4+1J22+XTIwK04=; b=V8+VKpPq1U3Ka+KRlgK1LrfG0FXSzQm1cNKLBQ6O2nxnxVzkanqDoJuBIVMpFNTI/k CrUDsK6kgCZsvJCSO2qZhIbVvYynh64zRpkGOd7XjRj9bBMa/BU+XPghLVESFNnrkMx8 LXRT30o//+Lcnlh2q460VIEFZGMIRTWCBREme/3lfnKXtdLTXFklnjXHaitlMqwdUkk9 bMDPrzfjaoI141OP2Yd9QDjb9erYtStOxFtOhWuZL1+xgDfJFWDpF0kP3SRcjPS1UD8L fPxR2E4mQqREpdJsiSII//4O14+f7YIWtLv6bAihhtHKKt65mDTw988HWetaPFF9BYBJ u0aw== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Yt30BylsVFl1b+dQoUipKgO72wces4+1J22+XTIwK04=; b=iYbGf6SaG36afA4UDzGyHI1S3UcmLnbbwf5GiK2/cso98C2kR/tkzc7QCOy9XB/f4O QuBKDASzQmg5SmJ/tDJ5yjt9s5OKLpCQKmC2k6Xo1ym5OvHlHBroKQv3izDK9m42ffHB jrsMdfa2XQLarrX7s0nZPPOTIhj39ENdWXr1rMPF5hNMTVmWsyfs5qAzW2RYpczo8LpW CRgob62maKk+gLksp+shNMvr2q/hXFtVKkF0GjsYk5IjmXYvSElvItcXYIR5LnGZTTox h7yX6RDgjaPdRJwFDw2glpv9mbOlemER47rZwF+LjIA2DcP3tTVw3RZpETwrD3l9OgeZ Jf/g== X-Gm-Message-State: AOAM530YTFbuNeGgp2urWougKnUHkugRtgGMJTYfKbdwXgjdJZ3w68QL 4VR1KR6g3XLmT7aZA20ET92n7ra8ErsTOZeq X-Google-Smtp-Source: ABdhPJxreCAgoVxptS2To6BlyigUOXCdyHhdVvCZ3X35rkt7s2d0JLzqBu7v5QsTP1W7Eu45RVnMEQ== X-Received: by 2002:a17:906:b316:: with SMTP id n22mr3404360ejz.249.1616590561345; Wed, 24 Mar 2021 05:56:01 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:01 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 01/10] platform/x86: toshiba_acpi: bind life-time of toshiba_acpi_dev to parent Date: Wed, 24 Mar 2021 14:55:39 +0200 Message-Id: <20210324125548.45983-2-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org The 'toshiba_acpi_dev' object is allocated first and free'd last. We can bind it's life-time to the parent ACPI device object. This is a first step in using more device-managed allocated functions for this. The main intent is to try to convert the IIO framework to export only device-managed functions (i.e. devm_iio_device_alloc() and devm_iio_device_register()). It's still not 100% sure that this is possible, but for now, this is the process of taking it slowly in that direction. Signed-off-by: Alexandru Ardelean --- drivers/platform/x86/toshiba_acpi.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index fa7232ad8c39..6d298810b7bf 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -2998,8 +2998,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) if (toshiba_acpi) toshiba_acpi = NULL; - kfree(dev); - return 0; } @@ -3016,6 +3014,7 @@ static const char *find_hci_method(acpi_handle handle) static int toshiba_acpi_add(struct acpi_device *acpi_dev) { + struct device *parent = &acpi_dev->dev; struct toshiba_acpi_dev *dev; const char *hci_method; u32 dummy; @@ -3033,7 +3032,7 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) return -ENODEV; } - dev = kzalloc(sizeof(*dev), GFP_KERNEL); + dev = devm_kzalloc(parent, sizeof(*dev), GFP_KERNEL); if (!dev) return -ENOMEM; dev->acpi_dev = acpi_dev; @@ -3045,7 +3044,6 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) ret = misc_register(&dev->miscdev); if (ret) { pr_err("Failed to register miscdevice\n"); - kfree(dev); return ret; } From patchwork Wed Mar 24 12:55:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161061 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D335BC433E6 for ; Wed, 24 Mar 2021 12:57:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AC92E619D5 for ; Wed, 24 Mar 2021 12:57:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234706AbhCXM4b (ORCPT ); Wed, 24 Mar 2021 08:56:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234521AbhCXM4E (ORCPT ); Wed, 24 Mar 2021 08:56:04 -0400 Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com [IPv6:2a00:1450:4864:20::533]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DAA54C0613E0 for ; Wed, 24 Mar 2021 05:56:03 -0700 (PDT) Received: by mail-ed1-x533.google.com with SMTP id e7so27428264edu.10 for ; Wed, 24 Mar 2021 05:56:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vjfeStBI2DcHZmjQrx+N+dsAxgF1a/tnl6rrv3SVE6Q=; b=tekIiAZWW3kwi3DlNvLmMjX9jCWj63bcKAuPkI/Q5kJI1jxRdebmh1n9A/tlN0QDix AhF96gOTxQDa/INulpZewfZFCBHRT32NBq4aN7Wt9iCdCk3hqwXQu0HoXJcnqap2l8rT hp892/IN6CoTYtv4sXGNN0pSbemNt7+zWkpKgHHWadomhZp399P88VkrOkkjNOLK/EO1 7/wbr3XDjeBjDtw3cLPZB8UFskNHxNGG40xlP5icGyEQXICCz1O9EsMJb3DXQOXP3TOD Ci3Pr1aUf75aTPI9Grsc2yKD1Y1687FHnbcYBoFJve456VIQJ2f1B4xhuPoI55jOS2ev k91Q== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=vjfeStBI2DcHZmjQrx+N+dsAxgF1a/tnl6rrv3SVE6Q=; b=ZxkVqnt/Zx3oy36fMo9EQSYqepPj+e9P+RXYb3GBSskhfJf+TrFTe3bvhs1P4nlTWL S/ZUDNi7GpyT16ePbuCeJNueOB7bh5+bLmNuiTVrm9XpqBMD91jX6v1pEm5LxShH7zCw Umzen71bsVbsOV4VLuFtQM6g/GDCtBKyvIZnH2GEhx2vit0o+ZBFwKq63dLTb7P9s+6e /1NOLGW9FrrEzhsntFw3EZ4Y8Am7TSvwZY+ojoRwBqLYe/TD42ThjVLvMKhS5FIL0G/V 1mJdhnHUGYEHCXHBJ9Tby0Xv9Red4gn7O65toq1k5oajYjD4rDZGF9X5EiOi3/+hF+4P ONOw== X-Gm-Message-State: AOAM5328jL45geu+fhFvktDl1wf/d1WkQwJ3vLZJhQ7WD6SXPMBe+9EO hDVJw9890O2wxiBCg2hjgDjQ8GiiZZtF8P7V X-Google-Smtp-Source: ABdhPJyE/+A23QNDkwguoiMrfXl+jMVy6xCycwVkij0rRzaeQOah7cxBFhnpOcFlsG90OWCUZmfHRg== X-Received: by 2002:a05:6402:2076:: with SMTP id bd22mr3260352edb.378.1616590562364; Wed, 24 Mar 2021 05:56:02 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:02 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 02/10] platform/x86: toshiba_acpi: use devm_add_action_or_reset() for singleton clear Date: Wed, 24 Mar 2021 14:55:40 +0200 Message-Id: <20210324125548.45983-3-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org The only reason to do this is to enforce the ordering of deinitialization, when the conversion of the device-managed functions is done. The singleton object should be cleared right before it is free'd. Signed-off-by: Alexandru Ardelean --- drivers/platform/x86/toshiba_acpi.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 6d298810b7bf..c5284601bc2a 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -2995,9 +2995,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) rfkill_destroy(dev->wwan_rfk); } - if (toshiba_acpi) - toshiba_acpi = NULL; - return 0; } @@ -3012,6 +3009,11 @@ static const char *find_hci_method(acpi_handle handle) return NULL; } +static void toshiba_acpi_singleton_clear(void *data) +{ + toshiba_acpi = NULL; +} + static int toshiba_acpi_add(struct acpi_device *acpi_dev) { struct device *parent = &acpi_dev->dev; @@ -3035,6 +3037,13 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) dev = devm_kzalloc(parent, sizeof(*dev), GFP_KERNEL); if (!dev) return -ENOMEM; + + ret = devm_add_action_or_reset(parent, + toshiba_acpi_singleton_clear, + NULL); + if (ret) + return ret; + dev->acpi_dev = acpi_dev; dev->method_hci = hci_method; dev->miscdev.minor = MISC_DYNAMIC_MINOR; From patchwork Wed Mar 24 12:55:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161063 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0AE6EC433E9 for ; Wed, 24 Mar 2021 12:57:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E456D619D5 for ; Wed, 24 Mar 2021 12:57:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234735AbhCXM4f (ORCPT ); Wed, 24 Mar 2021 08:56:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234540AbhCXM4F (ORCPT ); Wed, 24 Mar 2021 08:56:05 -0400 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7801C061763 for ; Wed, 24 Mar 2021 05:56:04 -0700 (PDT) Received: by mail-ej1-x62a.google.com with SMTP id u5so32688386ejn.8 for ; Wed, 24 Mar 2021 05:56:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=frWPEUlqs06JkDdBYmeAt9wV6HnzyvV5zsDKfCcKu+M=; b=GmpYQYHQItWYbKynRGeuKnH14x7wgEAUOeru1GAukTiYyBVZyNuC62e9vPztxuB3b+ o9qG1cfC4xJt5eKWXvGYooq4t61JA5rELbrYnZC5EImztn7SNINNZaLjhtNqYTZPU1lG 7HDtCpP+MNoS8NfsghQJc1E42HJqvPOPjK1ajPTu6/XtqpQfNdX/CeS3ANPpsNm/o9ED xDwA7eSuWn46kA6P5NmMwaateIOfXhnoptqZyvF9gYKJhhCg+kP0Prb/bLGnSsfNc52a i/ddBMFrew2LvfV46CLC6Wa9q+r3n1hZeM5EfvzjgzxZzvQ0xEdou4zZQsUFhFSTfULD oSFw== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=frWPEUlqs06JkDdBYmeAt9wV6HnzyvV5zsDKfCcKu+M=; b=r9JjDB0jyzwZHy6Uw0Kt73fb5PHhli8ysttqRJdGZZqgYi8hkO5mWuWkrLznyT/Vjr 4kKffCvEvSobYFW4OaAZNkO+KxGT8mlkzVLQ7jq3ZdfW//z9Ki1l++M9gZQe9rwhg0Gg L2KDo6yaGZaFT/c5CamXk+mqmnJKm533Claayw5lSq0lILcXHDxDpNvYXbt0S6te7jVN kLtg+zi4yNWO9yepnA4upZb8TOP3smHOo7uAuTW6MsS6bSB9rHAQbbYzxjuZX0rJ82uv gPRTI0SFfSbD0IwQYv99iKCrAaw6qJMLzXFI7J0GnXsNO/2wmg6UFZgfeysACGRid0nw c5Ng== X-Gm-Message-State: AOAM532brQ/RG7MSS/eKIPedbCIxdReSFVAvpBhm5h8aSmXt75z0/v5j F2nqb/69PLtkuvk7NQ0Ggl/OiPgksP5wIkZQ X-Google-Smtp-Source: ABdhPJzpxStqf4689RHXTCYW0kDpZhBA8gf9Qrkx0RVSK+qnEqvmhL4BwM1bxJkrz6O7EHd8bIM0+g== X-Received: by 2002:a17:907:a042:: with SMTP id gz2mr3506188ejc.174.1616590563362; Wed, 24 Mar 2021 05:56:03 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:03 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 03/10] platform/x86: toshiba_acpi: bind registration of miscdev object to parent Date: Wed, 24 Mar 2021 14:55:41 +0200 Message-Id: <20210324125548.45983-4-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org This change moves the registration of the Toshiba ACPI miscdev to be handled by the devm_add_action_or_reset() hook. This way, the miscdev will be unregistered when the reference count of the parent device object goes to zero. This also changes the order of cleanup in toshiba_acpi_remove(), where the miscdev was deregistered first. Now it will be deregistered right before the toshiba_acpi_dev object is free'd. Signed-off-by: Alexandru Ardelean Acked-by: Jonathan Cameron --- drivers/platform/x86/toshiba_acpi.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index c5284601bc2a..53ef565378ef 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -2963,8 +2963,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) { struct toshiba_acpi_dev *dev = acpi_driver_data(acpi_dev); - misc_deregister(&dev->miscdev); - remove_toshiba_proc_entries(dev); if (dev->accelerometer_supported && dev->indio_dev) { @@ -3014,6 +3012,13 @@ static void toshiba_acpi_singleton_clear(void *data) toshiba_acpi = NULL; } +static void toshiba_acpi_misc_deregister(void *data) +{ + struct miscdevice *miscdev = data; + + misc_deregister(miscdev); +} + static int toshiba_acpi_add(struct acpi_device *acpi_dev) { struct device *parent = &acpi_dev->dev; @@ -3056,6 +3061,11 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) return ret; } + ret = devm_add_action_or_reset(parent, toshiba_acpi_misc_deregister, + &dev->miscdev); + if (ret) + return ret; + acpi_dev->driver_data = dev; dev_set_drvdata(&acpi_dev->dev, dev); From patchwork Wed Mar 24 12:55:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161067 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F3112C433F1 for ; Wed, 24 Mar 2021 12:57:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D6C1B61A06 for ; Wed, 24 Mar 2021 12:57:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234526AbhCXM4g (ORCPT ); Wed, 24 Mar 2021 08:56:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234552AbhCXM4G (ORCPT ); Wed, 24 Mar 2021 08:56:06 -0400 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D9263C0613DF for ; Wed, 24 Mar 2021 05:56:05 -0700 (PDT) Received: by mail-ej1-x629.google.com with SMTP id hq27so32680172ejc.9 for ; Wed, 24 Mar 2021 05:56:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UFsO3CjdzjvSKalFHfalsmH1Z1YFNl8tTKEel8RPQ5w=; b=TQDfwW+RWxoC195Fzua0pk1St/0sgu8PKZyJu7DVkyw9hXK8uBUvhbeugCJaGDeBa1 XOjgEjOI0P71D0gflcRsicksf5UFqjY0oDU6w6+pgeDt9g8NvAV2n4mJ3aX37y0QNCH/ 9LIPsAzWyRzNHSYMERj840gXWk7xrth+EsdW2C5+1VlyTkG4PE1IkJ5buDdwwCQn7TN9 rGAhoe9Q49HZCC7RFbF29ucVwlDeZPZkNbpsoJZcAon8HijLMGTxBvSuiVdXAPc67zXL UjSPLB5QbMbIsZrZoA+MPtjMoomX4ZhbJWwlaQiFyLYgqEghv7r3fto2tprog9M2aEHr CoQQ== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=UFsO3CjdzjvSKalFHfalsmH1Z1YFNl8tTKEel8RPQ5w=; b=c2EaPXvqb80AJ6TRJwzXwRQEgXBwVW6+5YV6KCNZPxVJcF939n/pEsbtGTufbjZp8G Ydpmy8nxDfJK+k8naInodWtIAgQKQF4Jst15hxi5mVp1ggnSu7QG1B5sLQN7KLRyYpor lAwrc4QQP2SNawtQNnmUGd9vXYDsuFllzaeinMNMiG3HUW1PHC7+vZVAdaTJy9fwGdrP LbwDKta7RXucQ395zrotJU/U+aKxaXwdubc3qb2g8CPYwij18ZnEQx3FJ5Aw4C1tblLv sJ6ingN2RbyFYnNuQMspRhH0Bofxpf4pniEzH9/AYLw3cieVnG0Uym3FQ5Y4ss5yddzy 4rRQ== X-Gm-Message-State: AOAM533t0TSZyL21GVpeOn08yIhpKQEs6XzIPLuglpjf38DrsekCnixd J4o2YZTSeounkn9ePYWJoYbfF6wt7jwqMTZL X-Google-Smtp-Source: ABdhPJwJyL58sUWBrXWfLdOooX4vIKkqXRt2tWpnGi0EvOn86rz78Pp4fgk7jt1d1LArIR2ZJgoeog== X-Received: by 2002:a17:906:7f84:: with SMTP id f4mr3435189ejr.525.1616590564364; Wed, 24 Mar 2021 05:56:04 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:04 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 04/10] platform/x86: toshiba_acpi: use device-managed functions for input device Date: Wed, 24 Mar 2021 14:55:42 +0200 Message-Id: <20210324125548.45983-5-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org This change uses device managed functions to handle the deregistration of the keyboard resources when the refcount of the parent device goes to zero. For the input device devm_input_allocate_device() must be used, and after that it will be bound also for auto-deregistration when input_device_register() is called. The work object is registered for uninit with devm_add_action(), which will be called on device unregister only. The i8042 filter is registered with devm_add_action() as well, but it is done last in the toshiba_acpi_setup_keyboard() function. This is a little quirky, because this relies on the fact that there can a single toshiba_acpi_dev object. Signed-off-by: Alexandru Ardelean --- drivers/platform/x86/toshiba_acpi.c | 55 +++++++++++++++++++---------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 53ef565378ef..556f2cc99bad 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -186,7 +186,6 @@ struct toshiba_acpi_dev { unsigned int video_supported:1; unsigned int fan_supported:1; unsigned int system_event_supported:1; - unsigned int ntfy_supported:1; unsigned int info_supported:1; unsigned int tr_backlight_supported:1; unsigned int kbd_illum_supported:1; @@ -2756,9 +2755,23 @@ static void toshiba_acpi_process_hotkeys(struct toshiba_acpi_dev *dev) } } -static int toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev) +static void toshiba_acpi_cancel_hotkey_work(void *data) +{ + struct work_struct *hotkey_work = data; + + cancel_work_sync(hotkey_work); +} + +static void toshiba_acpi_i8042_remove_filter(void *data) +{ + i8042_remove_filter(toshiba_acpi_i8042_filter); +} + +static int toshiba_acpi_setup_keyboard(struct device *parent, + struct toshiba_acpi_dev *dev) { const struct key_entry *keymap = toshiba_acpi_keymap; + bool ntfy_supported = false; acpi_handle ec_handle; int error; @@ -2779,7 +2792,7 @@ static int toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev) if (toshiba_hotkey_event_type_get(dev, &dev->hotkey_event_type)) pr_notice("Unable to query Hotkey Event Type\n"); - dev->hotkey_dev = input_allocate_device(); + dev->hotkey_dev = devm_input_allocate_device(parent); if (!dev->hotkey_dev) return -ENOMEM; @@ -2798,7 +2811,7 @@ static int toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev) dev->hotkey_event_type); error = sparse_keymap_setup(dev->hotkey_dev, keymap, NULL); if (error) - goto err_free_dev; + goto err_null_dev; /* * For some machines the SCI responsible for providing hotkey @@ -2811,13 +2824,19 @@ static int toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev) if (ec_handle && acpi_has_method(ec_handle, "NTFY")) { INIT_WORK(&dev->hotkey_work, toshiba_acpi_hotkey_work); + error = devm_add_action(parent, + toshiba_acpi_cancel_hotkey_work, + &dev->hotkey_work); + if (error) + return error; + error = i8042_install_filter(toshiba_acpi_i8042_filter); if (error) { pr_err("Error installing key filter\n"); - goto err_free_dev; + return error; } - dev->ntfy_supported = 1; + ntfy_supported = true; } /* @@ -2840,13 +2859,19 @@ static int toshiba_acpi_setup_keyboard(struct toshiba_acpi_dev *dev) goto err_remove_filter; } + if (ntfy_supported) { + error = devm_add_action(parent, + toshiba_acpi_i8042_remove_filter, + NULL); + goto err_remove_filter; + } + return 0; - err_remove_filter: - if (dev->ntfy_supported) +err_remove_filter: + if (ntfy_supported) i8042_remove_filter(toshiba_acpi_i8042_filter); - err_free_dev: - input_free_device(dev->hotkey_dev); +err_null_dev: dev->hotkey_dev = NULL; return error; } @@ -2974,14 +2999,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) sysfs_remove_group(&dev->acpi_dev->dev.kobj, &toshiba_attr_group); - if (dev->ntfy_supported) { - i8042_remove_filter(toshiba_acpi_i8042_filter); - cancel_work_sync(&dev->hotkey_work); - } - - if (dev->hotkey_dev) - input_unregister_device(dev->hotkey_dev); - backlight_device_unregister(dev->backlight_dev); led_classdev_unregister(&dev->led_dev); @@ -3080,7 +3097,7 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) dev->kbd_function_keys_supported = !ret; dev->hotkey_event_type = 0; - if (toshiba_acpi_setup_keyboard(dev)) + if (toshiba_acpi_setup_keyboard(parent, dev)) pr_info("Unable to activate hotkeys\n"); /* Determine whether or not BIOS supports transflective backlight */ From patchwork Wed Mar 24 12:55:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161065 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C908DC433EA for ; Wed, 24 Mar 2021 12:57:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 83CC861A06 for ; Wed, 24 Mar 2021 12:57:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234552AbhCXM4i (ORCPT ); Wed, 24 Mar 2021 08:56:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234575AbhCXM4H (ORCPT ); Wed, 24 Mar 2021 08:56:07 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C90C4C061763 for ; Wed, 24 Mar 2021 05:56:06 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id dm8so27536706edb.2 for ; Wed, 24 Mar 2021 05:56:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=gTwIvnFJ6UsqMLEIUtmaMXWTcL1Cr8qDnDvFwxUlyRo=; b=bmsC/KwYkIzuvFP7Idgwv5+p6kgC9Ye8LKkbjNEhX+tq2iw90b48JioM/uXs8qGp/j 7yfjdIrCmrv2sB6OFf7M/FkpXYW7wjcT250s9W0gpygqFAd/vs/vdAD5FiiMWDwwNaTp OJgN+VCaAK4AniCbsqmqMkoi02XTfkzi4z/5KDgEaiJotbunvsNjL6+KH7x2+mBaXm3k Vt5Rq5QBnW9eCfp/6ToIbwu4YojnHMXcjCHciJl5BWnrEhHfyXAJD+pfJu6vho1VyuF+ z07Xlox0xuiuC7pl3CAuzlGy+jeFgHtaYJACRudvls1IjhT5jCVEOqQRpigkXONRBI3Q rSIA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=gTwIvnFJ6UsqMLEIUtmaMXWTcL1Cr8qDnDvFwxUlyRo=; b=suPHiyOU6ZwQtUGyiDlUGZXeIC0E7tdwmgpa/6Topk6tkenLVxbTSTwKyi3o27Kkpb AMGOifr8b+HIOPfklPUqmHmzEhn7baUha/UzTqS/oeFcUaZbsb3KNnQRxIZVie/o4M/R qXATzKw9LKeConXr459C15+Luge3ZIoaZBiYYw11m7jHzLjDN1w31MxX80NcSbXKNt12 QUij8wBEy71kqy0dhlKBSwtRKpWDZ4SKsrJQtfPYX5tiHGYri63numuyNNI4glYkVoNJ GNLiD2N5qbzZ+Rpm223X+Dpzn0nhxj0YI1bLqV8qjoUXQYsjnhCS+KjWQCs9PnDdnGVp Casw== X-Gm-Message-State: AOAM530c12sp6eKI1d+VWQ0tLYfSoQCyre5uoFcmPcd5DPwzC/ts/68W PiAHi7YGYqSPh4mC5yAnxCtmKmJYPcBngneE X-Google-Smtp-Source: ABdhPJyN5wrrs/ArU3voReZNJqPglYS2Zo/b32kuE6YTrDfhRKFB4Ch90AD8q0CTaav6C8DazMTz/w== X-Received: by 2002:a05:6402:51cd:: with SMTP id r13mr3347222edd.116.1616590565316; Wed, 24 Mar 2021 05:56:05 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:05 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 05/10] platform/x86: toshiba_acpi: register backlight with device-managed variant Date: Wed, 24 Mar 2021 14:55:43 +0200 Message-Id: <20210324125548.45983-6-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org This change converts the registration of the backlight data with the devm_backlight_device_register() function. This way, the backlight_device_unregister() call is no longer required, and the order of deregistration is made to be more symmetrical with the registration order. Signed-off-by: Alexandru Ardelean Reviewed-by: Jonathan Cameron --- drivers/platform/x86/toshiba_acpi.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 556f2cc99bad..ada2a2d8c913 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -2876,7 +2876,8 @@ static int toshiba_acpi_setup_keyboard(struct device *parent, return error; } -static int toshiba_acpi_setup_backlight(struct toshiba_acpi_dev *dev) +static int toshiba_acpi_setup_backlight(struct device *parent, + struct toshiba_acpi_dev *dev) { struct backlight_properties props; int brightness; @@ -2924,11 +2925,12 @@ static int toshiba_acpi_setup_backlight(struct toshiba_acpi_dev *dev) if (dev->tr_backlight_supported) props.max_brightness++; - dev->backlight_dev = backlight_device_register("toshiba", - &dev->acpi_dev->dev, - dev, - &toshiba_backlight_data, - &props); + dev->backlight_dev = devm_backlight_device_register(parent, + "toshiba", + &dev->acpi_dev->dev, + dev, + &toshiba_backlight_data, + &props); if (IS_ERR(dev->backlight_dev)) { ret = PTR_ERR(dev->backlight_dev); pr_err("Could not register toshiba backlight device\n"); @@ -2999,8 +3001,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) sysfs_remove_group(&dev->acpi_dev->dev.kobj, &toshiba_attr_group); - backlight_device_unregister(dev->backlight_dev); - led_classdev_unregister(&dev->led_dev); led_classdev_unregister(&dev->kbd_led); led_classdev_unregister(&dev->eco_led); @@ -3104,9 +3104,9 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) ret = get_tr_backlight_status(dev, &dummy); dev->tr_backlight_supported = !ret; - ret = toshiba_acpi_setup_backlight(dev); + ret = toshiba_acpi_setup_backlight(parent, dev); if (ret) - goto error; + return ret; toshiba_illumination_available(dev); if (dev->illumination_supported) { From patchwork Wed Mar 24 12:55:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161069 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6CE1DC433F4 for ; Wed, 24 Mar 2021 12:57:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3BC5961A06 for ; Wed, 24 Mar 2021 12:57:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234762AbhCXM4j (ORCPT ); Wed, 24 Mar 2021 08:56:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234591AbhCXM4I (ORCPT ); Wed, 24 Mar 2021 08:56:08 -0400 Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com [IPv6:2a00:1450:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DCC82C061763 for ; Wed, 24 Mar 2021 05:56:07 -0700 (PDT) Received: by mail-ej1-x62c.google.com with SMTP id u9so32677769ejj.7 for ; Wed, 24 Mar 2021 05:56:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Xslj2HthXDrqOB8fzPzGxoP+4g8oF5kFhH9tLbOpuwk=; b=EA/iiRLzhPyouBzEGqEEvNayjzGltHlqtlmPvlamFkf9kwv39A8FvLmv37bHb4Ce4P BmDt+qmivDvxZEKbSlPitksLF3DqE4iX4QXgkJtMo14lpGJBiVzlWMDiZlfS62p6922P 4J7CbykQTUMs2xQnVspOJTy5D2sX6PymEpgCVL/RGIf9ONuHHmPBaglU5kmmINmKgfMi FrVfMouBnq1rDRaUCBRbzgG4lCW+k2KEqXWmOqmo0Sepc+xKR/V+sdEe+OtFGkKu0xgT UBeySBlvXwSoa7meSHqZrtZ6f1mTAyGtTK4krut44NH4dUWZMG3lWhqiAlD+lrHH0BXs 3vNA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Xslj2HthXDrqOB8fzPzGxoP+4g8oF5kFhH9tLbOpuwk=; b=ZGgHaKEf+ctNvyuloRcPfNH0poogCaWS9VO9XOgfoixR9ojt19pMjbgAtwbunPdhpY I56Jhy89m8e3MgJ5IGe5LWaGxNJHVnWcOQw7mkaRpmSib8MO5DgljG3gqmtXNR6KtGzH DHU6bHTRTuHWMzYhTfogNMMLPlh7gMmd1sJOTLGch3sk9P9h4xM8snNdbzLY4LP33DGC ooYQVWkJNndQOgBkVvvW+6phYPyKNlHgeyl8D/jdQrl4LPEuHVoU5vU7Er9wKCZ5Eig7 vF0vnfYuaHzrqcQDSe8v8JDQl777Af/8LfBM305uo6YsetbSG0SVDw8PtTjWr9Vno3QT aQfA== X-Gm-Message-State: AOAM5319E1Vz/dePh9D04Wzh54lais5pREv3kMGVOWRXRzEIsnEjTfkQ 8Nj+ujdVjTaTZ/EZR7Sk43lbUCtYRI+4bYCe X-Google-Smtp-Source: ABdhPJx2EOP9+eIwQbX5mIZcz9HFnp6uZundPHwJXDNQuVzbLvxvvM5eF6ZIv3J5LAFVfjhQ9AR/ZA== X-Received: by 2002:a17:906:3952:: with SMTP id g18mr3556682eje.104.1616590566405; Wed, 24 Mar 2021 05:56:06 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:06 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 06/10] platform/x86: toshiba_acpi: use devm_led_classdev_register() for LEDs Date: Wed, 24 Mar 2021 14:55:44 +0200 Message-Id: <20210324125548.45983-7-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org With this change the deregistration of the LED objects is made symmetrical (and in reverse) with the registration. We also can get rid of the calls to led_classdev_unregister(), because the LED objects will be cleaned up when the reference to the parent device object goes to zero. This change also unifies the reference to the parent object from '&acpi_dev->dev' and '&dev->acpi_dev->dev' to 'parent', since it's the same reference, and makes the code-lines a bit shorter. Signed-off-by: Alexandru Ardelean Reviewed-by: Jonathan Cameron --- drivers/platform/x86/toshiba_acpi.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index ada2a2d8c913..e787c140eec2 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -3001,10 +3001,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) sysfs_remove_group(&dev->acpi_dev->dev.kobj, &toshiba_attr_group); - led_classdev_unregister(&dev->led_dev); - led_classdev_unregister(&dev->kbd_led); - led_classdev_unregister(&dev->eco_led); - if (dev->wwan_rfk) { rfkill_unregister(dev->wwan_rfk); rfkill_destroy(dev->wwan_rfk); @@ -3114,7 +3110,9 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) dev->led_dev.max_brightness = 1; dev->led_dev.brightness_set = toshiba_illumination_set; dev->led_dev.brightness_get = toshiba_illumination_get; - led_classdev_register(&acpi_dev->dev, &dev->led_dev); + ret = devm_led_classdev_register(parent, &dev->led_dev); + if (ret) + return ret; } toshiba_eco_mode_available(dev); @@ -3123,7 +3121,9 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) dev->eco_led.max_brightness = 1; dev->eco_led.brightness_set = toshiba_eco_mode_set_status; dev->eco_led.brightness_get = toshiba_eco_mode_get_status; - led_classdev_register(&dev->acpi_dev->dev, &dev->eco_led); + ret = devm_led_classdev_register(parent, &dev->eco_led); + if (ret) + return ret; } toshiba_kbd_illum_available(dev); @@ -3139,7 +3139,9 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) dev->kbd_led.max_brightness = 1; dev->kbd_led.brightness_set = toshiba_kbd_backlight_set; dev->kbd_led.brightness_get = toshiba_kbd_backlight_get; - led_classdev_register(&dev->acpi_dev->dev, &dev->kbd_led); + ret = devm_led_classdev_register(parent, &dev->kbd_led); + if (ret) + return ret; } ret = toshiba_touchpad_get(dev, &dummy); From patchwork Wed Mar 24 12:55:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161071 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C1B7C433ED for ; Wed, 24 Mar 2021 12:57:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F3F8361A1C for ; Wed, 24 Mar 2021 12:57:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234586AbhCXM4k (ORCPT ); Wed, 24 Mar 2021 08:56:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57852 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234604AbhCXM4J (ORCPT ); Wed, 24 Mar 2021 08:56:09 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D8AADC0613E2 for ; Wed, 24 Mar 2021 05:56:08 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id bx7so27488758edb.12 for ; Wed, 24 Mar 2021 05:56:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ruo6fYyWvyeJFaVWRfRo7oSi7ED8tQGcfoAxMCBCouU=; b=pToGEiEfgiNyZfl5C5BwyI33D499QdsgN5d4sYrAyvneIIsK/sYBAGjJZrICh9FW3g ltW9Mx8eY0dcmwNGjyTEPcdR9Dx0lfN3skiPB61+AvuKuVXuIB1vG5gF6N0PVrbK+V2d DdrBpkOc5Oc3lAazjRDt8f0l4wKevp/U8+82KBYfgfV8JRJnfBIwkV8w4n2qHGLT/qqw m635iR/BBo/0bSiWsebp3FGP9+gM7BAhr9HXzP7tXV/O3XnnfzLp1O49EzdO4pkb9+Bw AJ5q+u8K7rnnwi+Dl1NA3M0i5lZvPul7SbJbu9QuQOfjKteIHLWGMpLvFxkxWLBVTXgr 5/uA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Ruo6fYyWvyeJFaVWRfRo7oSi7ED8tQGcfoAxMCBCouU=; b=sBjp4uDvdyjhy1SSsPQiLVjB7b9NsRifNpK+vDFUiJMsPjls42rMoPmIhZTu6RWvtl miAZwTkRpevaIHqDlfqsTOqWN8JRIf+LZ27l+97+9pNiX01Jo45GrpnB7hTlmPt/lbH1 oRUo6nSsp6q5BkHJMJ2rA/R4vTgK/jkvZB4VnN1dDEu3QW1nHEnoRV2mKiyQ7/AkZqry RCFlN1xBjH6DVf/r8Zx33IiaQglnmAu7MDdccMt4CerLixwRDkxyCxPQQWZeGWoQyePh i/Rt6fmw9AQLaPSDddvJylBjSn0yaOokWdRfZxa4XxM9biGCqOeExTdJvVhjjfUugAjZ jBhQ== X-Gm-Message-State: AOAM531/YupDprWFngtx1CAZpKb/3UOFWlN7Xd0HSoixIqjplaQsyKaJ ToMmtaZIdG5B2GoPt+yO/ULaQNxjRsdVdtYA X-Google-Smtp-Source: ABdhPJxJui6LdwmCfMr51Xk8gBZNOfiV50TbD4aKH9VG4B65APB61qzksR3QKrC4/mmIV44+rkV7og== X-Received: by 2002:a05:6402:142:: with SMTP id s2mr3307510edu.2.1616590567384; Wed, 24 Mar 2021 05:56:07 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:07 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 07/10] platform/x86: toshiba_acpi: use device-managed functions for accelerometer Date: Wed, 24 Mar 2021 14:55:45 +0200 Message-Id: <20210324125548.45983-8-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org This change converts the IIO registration to use devm_iio_device_alloc() and devm_iio_device_register(). With this change we can remove the manual deregistrations an freeing of the IIO data. This also makes the deregistration symmetrical with the registration. One side-effect (that is undesired), is that if devm_iio_device_register() fails, then the IIO object will not be free'd and will stick around until the parent object is free'd. This is because there is no devm_iio_device_free() function anymore in IIO. However, this is a pretty bad corner-case that should not happen under normal operation. Signed-off-by: Alexandru Ardelean Reviewed-by: Jonathan Cameron --- drivers/platform/x86/toshiba_acpi.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index e787c140eec2..12860ef60e4d 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -2992,11 +2992,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) remove_toshiba_proc_entries(dev); - if (dev->accelerometer_supported && dev->indio_dev) { - iio_device_unregister(dev->indio_dev); - iio_device_free(dev->indio_dev); - } - if (dev->sysfs_created) sysfs_remove_group(&dev->acpi_dev->dev.kobj, &toshiba_attr_group); @@ -3149,7 +3144,7 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) toshiba_accelerometer_available(dev); if (dev->accelerometer_supported) { - dev->indio_dev = iio_device_alloc(&acpi_dev->dev, sizeof(*dev)); + dev->indio_dev = devm_iio_device_alloc(parent, sizeof(*dev)); if (!dev->indio_dev) { pr_err("Unable to allocate iio device\n"); goto iio_error; @@ -3164,10 +3159,10 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) dev->indio_dev->num_channels = ARRAY_SIZE(toshiba_iio_accel_channels); - ret = iio_device_register(dev->indio_dev); + ret = devm_iio_device_register(parent, dev->indio_dev); if (ret < 0) { pr_err("Unable to register iio device\n"); - iio_device_free(dev->indio_dev); + dev->indio_dev = NULL; } } iio_error: From patchwork Wed Mar 24 12:55:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161075 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10AA2C433FB for ; Wed, 24 Mar 2021 12:57:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E368461A27 for ; Wed, 24 Mar 2021 12:57:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234604AbhCXM4k (ORCPT ); Wed, 24 Mar 2021 08:56:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234620AbhCXM4K (ORCPT ); Wed, 24 Mar 2021 08:56:10 -0400 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA175C0613DE for ; Wed, 24 Mar 2021 05:56:09 -0700 (PDT) Received: by mail-ed1-x52e.google.com with SMTP id b16so27527959eds.7 for ; Wed, 24 Mar 2021 05:56:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5b4aQ508Io3+0QcWegMSXE+w4jq/XwA5f3VwTDm7+CM=; b=kPAESwGyeqxafo+DnvdLNonf1MxYA0W8rt++k4+tTM0QMkoVWACB1as0tIafLR7YPL V62xqME1LmZj7DnK1VArZ1fIBbN+Zs7KuM2iqdeosqtcHe4WHBmgGsYKZ6KTKmS312Af nSXgDeCOdOR5xeBYbjOlhLgYiTlmP9/Zy2c82nEOofFDlKFFkn6ke8npsr0RmQuFpA3v bL7e0zT3YHEPn/4PHCPJAMOPevARu3dHvBI3VFGzIL1847v1av+P+LlY+czh4F72yx9/ dRK69U3EPe5f6fX9RCi2PYl7eWfAyL/sx105I5bXKAbGyKwLD8p2XVPKuqSBeYI+KbF7 op4g== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=5b4aQ508Io3+0QcWegMSXE+w4jq/XwA5f3VwTDm7+CM=; b=VJS31eHHZbHIaGj9DBrdH8F+FljEsGnxP0p1XOfE3vfTt4+fM9GvNmH7xHAFwFwkEb tnNc/12llg4WaeMmzEcY2pkCQBYvM+K9LqDblfX6lk6RKUuWn9g7tbIdG/m2Kms/5i1i wybwIrWWvLTWdFKlLridLqIE793uAUhN6u0mHWddRuaMbkLuPXc+Luz77jq1LKdDKP28 xMqU77EzKuf4U/RLl6eBJmc0Rj7fz1gT4eWofaP03rIrGGOQVgEgVdn04h0pdht1dWxX oWDae/rGjOlxR1P4+8/3ELxrpRhtrNykQmOmNqYA5gdpgNIgZXabD1shx7d76s0YOQiI 0/RQ== X-Gm-Message-State: AOAM530TmiIqVT4sVH5lp6K/o8M4VotlIWKpQTrcnmX/C6QMqrLLdv0/ U+2LGrupaUanyfIGMtitXtjsCt983GYE6bQ5 X-Google-Smtp-Source: ABdhPJxsSAiGJmL649dJDQw4Ag16alHr4nvmdoimmmdE27PdMGxU9yPAzPpZEvqfxGs5TmtWmDSLZQ== X-Received: by 2002:a50:ec0e:: with SMTP id g14mr3346589edr.264.1616590568409; Wed, 24 Mar 2021 05:56:08 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:08 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 08/10] platform/x86: toshiba_acpi: use device-managed for wwan_rfkill management Date: Wed, 24 Mar 2021 14:55:46 +0200 Message-Id: <20210324125548.45983-9-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org This change converts the wwan_rfkill object to be free'd automatically when the parent refcount goes to zero. There are 2 cleanup operations required: rfkill_unregister() and rfkill_destroy(). Since they don't have any devm_ variants, they are hooked via devm_add_action_or_reset(). The main reason to do this is to enforce ordering on cleanup, when the Toshiba ACPI device is cleaned up. Signed-off-by: Alexandru Ardelean Reviewed-by: Jonathan Cameron --- drivers/platform/x86/toshiba_acpi.c | 40 ++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 12860ef60e4d..a1249f6dde9a 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -2591,7 +2591,22 @@ static const struct rfkill_ops wwan_rfk_ops = { .poll = toshiba_acpi_wwan_poll, }; -static int toshiba_acpi_setup_wwan_rfkill(struct toshiba_acpi_dev *dev) +static void toshiba_acpi_rfkill_destroy(void *data) +{ + struct rfkill *wwan_rfk = data; + + rfkill_destroy(wwan_rfk); +} + +static void toshiba_acpi_rfkill_unreg(void *data) +{ + struct rfkill *wwan_rfk = data; + + rfkill_unregister(wwan_rfk); +} + +static int toshiba_acpi_setup_wwan_rfkill(struct device *parent, + struct toshiba_acpi_dev *dev) { int ret = toshiba_wireless_status(dev); @@ -2608,15 +2623,27 @@ static int toshiba_acpi_setup_wwan_rfkill(struct toshiba_acpi_dev *dev) return -ENOMEM; } + ret = devm_add_action_or_reset(parent, toshiba_acpi_rfkill_destroy, + dev->wwan_rfk); + if (ret) + return ret; + rfkill_set_hw_state(dev->wwan_rfk, !dev->killswitch); ret = rfkill_register(dev->wwan_rfk); if (ret) { pr_err("Unable to register WWAN rfkill device\n"); - rfkill_destroy(dev->wwan_rfk); + return ret; } - return ret; + ret = devm_add_action_or_reset(parent, toshiba_acpi_rfkill_unreg, + dev->wwan_rfk); + if (ret) { + dev->wwan_rfk = NULL; + return ret; + } + + return 0; } /* @@ -2996,11 +3023,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) sysfs_remove_group(&dev->acpi_dev->dev.kobj, &toshiba_attr_group); - if (dev->wwan_rfk) { - rfkill_unregister(dev->wwan_rfk); - rfkill_destroy(dev->wwan_rfk); - } - return 0; } @@ -3189,7 +3211,7 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) toshiba_wwan_available(dev); if (dev->wwan_supported) - toshiba_acpi_setup_wwan_rfkill(dev); + toshiba_acpi_setup_wwan_rfkill(parent, dev); toshiba_cooling_method_available(dev); From patchwork Wed Mar 24 12:55:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161073 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCFA7C433FC for ; Wed, 24 Mar 2021 12:57:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B0E2D61A10 for ; Wed, 24 Mar 2021 12:57:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234620AbhCXM4l (ORCPT ); Wed, 24 Mar 2021 08:56:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57884 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234647AbhCXM4O (ORCPT ); Wed, 24 Mar 2021 08:56:14 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4135C0613E6 for ; Wed, 24 Mar 2021 05:56:10 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id h10so27455475edt.13 for ; Wed, 24 Mar 2021 05:56:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Yr+hqksGhsoym9OCme5jUvwyeFtwCUa6Az4rur4J9Ag=; b=d1Hl+i0+A5Tve+esaspvDfy3ewi9VbVCtugdJQn0K1QWqY+FGWio3cXwpC7Y5TSQmb CAZbREkS4JI5YXjkYuuBEs3n6kd09gpj3KnlxvdNaHRAp2OgrLdRvvUhlbM46RaHyGnU mKANrSt2KGlLDwDn7rEBHMlOwIwN19zUX+/7EvKukLVv5Ku0uh89Er0X9omSScL4/nIe 7j3ILSGNXewnknpaIG6j8xNuBUE/M9KN9/57LVC1rEHh2Cw1QnckIZST8W7Ur4RZ9Vrx vqNBC1+J5k8AlrzMWHjFH4Q5jpfBuj/yNGu01EozxvWJn1TU/dzgaNgUynTiC33iG8id isfg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=Yr+hqksGhsoym9OCme5jUvwyeFtwCUa6Az4rur4J9Ag=; b=JD0U0JFsNYHZagHmai56rL4fSyK6J1FUoyI6vtCbNZtecqAB7WFwTq4JVFJW7/H4dJ IRjlDhIjZL6fhSikd/wbD48b9Uq6g+35YatWK0JGMoQAmBhLDnjXUzHtw1d9j9FeuNyo eiM18xCd4B/YJf290PVUDaeJyQXx5xhWc1MyAbo7kwmCtfDHm3NUEbpQJ+ZBPlDnxQwd Lea2JqNOJhlDrMGjgB4t0B8Nj1RcMgaiYNcoQdfHopnBGAf3122OTOoN75EnPrIz84U/ qWuLke20ndNqIYF4xOy8XmDE8MxfBQNPdXDfYp9RF+A2dmtAAkdPoJGjCMDMvzu5u0hL m1KA== X-Gm-Message-State: AOAM5330EOW7Iso2TxFM2XhkfflqrcZ7CttirnBxaPGAOqtYDqZzJx4V JgQYXPwgms1p3L8U0MSz39sgwjl27gnmyNXl X-Google-Smtp-Source: ABdhPJxIcmTmkmMN9WvwQrOU///P6BOxa5oEnluuOV54BfqppfMs+765Gs7vq6TYuoCyYNuyKS4u5g== X-Received: by 2002:aa7:d416:: with SMTP id z22mr3222861edq.239.1616590569433; Wed, 24 Mar 2021 05:56:09 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:09 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 09/10] platform/x86: toshiba_acpi: use device-managed for sysfs removal Date: Wed, 24 Mar 2021 14:55:47 +0200 Message-Id: <20210324125548.45983-10-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org This change moves the creation of the Toshiba ACPI group to be automatically removed when the parent refcount goes to zero. The main reason to do this, is to also enforce that the order of removal is mirroring the order of initialization. Signed-off-by: Alexandru Ardelean Reviewed-by: Jonathan Cameron --- drivers/platform/x86/toshiba_acpi.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index a1249f6dde9a..8e8917979047 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -200,7 +200,6 @@ struct toshiba_acpi_dev { unsigned int usb_three_supported:1; unsigned int wwan_supported:1; unsigned int cooling_method_supported:1; - unsigned int sysfs_created:1; unsigned int special_functions; bool kbd_event_generated; @@ -3019,10 +3018,6 @@ static int toshiba_acpi_remove(struct acpi_device *acpi_dev) remove_toshiba_proc_entries(dev); - if (dev->sysfs_created) - sysfs_remove_group(&dev->acpi_dev->dev.kobj, - &toshiba_attr_group); - return 0; } @@ -3049,6 +3044,13 @@ static void toshiba_acpi_misc_deregister(void *data) misc_deregister(miscdev); } +static void toshiba_acpi_sysfs_remove(void *data) +{ + struct kobject *kobj = data; + + sysfs_remove_group(kobj, &toshiba_attr_group); +} + static int toshiba_acpi_add(struct acpi_device *acpi_dev) { struct device *parent = &acpi_dev->dev; @@ -3219,21 +3221,20 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) ret = sysfs_create_group(&dev->acpi_dev->dev.kobj, &toshiba_attr_group); - if (ret) { - dev->sysfs_created = 0; - goto error; - } - dev->sysfs_created = !ret; + if (ret) + return ret; + + ret = devm_add_action_or_reset(parent, + toshiba_acpi_sysfs_remove, + &dev->acpi_dev->dev.kobj); + if (ret) + return ret; create_toshiba_proc_entries(dev); toshiba_acpi = dev; return 0; - -error: - toshiba_acpi_remove(acpi_dev); - return ret; } static void toshiba_acpi_notify(struct acpi_device *acpi_dev, u32 event) From patchwork Wed Mar 24 12:55:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru Ardelean X-Patchwork-Id: 12161077 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 713D6C433C1 for ; Wed, 24 Mar 2021 12:57:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 402D261A06 for ; Wed, 24 Mar 2021 12:57:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234394AbhCXM4l (ORCPT ); Wed, 24 Mar 2021 08:56:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234656AbhCXM4O (ORCPT ); Wed, 24 Mar 2021 08:56:14 -0400 Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3C68C061763 for ; Wed, 24 Mar 2021 05:56:11 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id y6so27529437eds.1 for ; Wed, 24 Mar 2021 05:56:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=deviqon.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=B0AOixSVQaYDeSh4VAk4nqi8IzY0YDC7YSX2q7F9wac=; b=p9eNAslDD0sBoEN0CD3Yw/zgILE+kMoGorL0VgdHYiQdT0rhKS7z0mnChro/Q65BKR NkS+yM2dzXDwfu4cOc0CPT0U1y8uvWyr8ByPMvt1oqsuaOOrJQEd4nDolh0XGFqVhBDA yBpb2ID4TQAmaDwla+ifXgdHfEs+VISkqxpvMhqAL/YN2OKehtffFRFiQFU/cigw2xDV dQA+lqyD+8Bj1DjgDe8uHGksSE2VX7/0KNsg6tXjBoj53mvSqZlZtaa1UDfa4hK3/PWF MQwCO5fKiNW1VuopEa9RmH3upnQ0smbXMGoaHlie2wAl4KBM4G9VSNXs7CuUxHxAWc7q /Byg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=B0AOixSVQaYDeSh4VAk4nqi8IzY0YDC7YSX2q7F9wac=; b=kQgSaxKzoQ2MISgIuecIk+vBO42pDQkw+KVAut/D871QA8Bb+gwa6Br4irKiXNcpAA 5Mj8lbzbCAZFRJLWz6Pibwerb90q6ngth9DQkqFMc+z+6RksR/kbumoJce1Eh4It3hHr kqgK4UXItVLOorbaoenxE75oNLWp0KII5gvlq61yuSjvfIiOE+TX40miuCqc4KSNA7fp yx6Qg/dY8WV/SsbzgHaEP7zkTE0ct41hmqAp8Rm4DOifc+pv7NGLpBkrITvycTVirNq7 UMLIYvPwrCxRymNkTXOmHDPytI9PlI4q9+jlp+IrqGK6L0TToiHF6kGFAAfAFypC3GGO mSfw== X-Gm-Message-State: AOAM532QodU/A6mNhT/3+ijEfUCEEogsS+4nVpFIhHrRpg2YlCUUi81p vqVwabW+OaDMhc2XkI6U9PmDVftV6ApR5l8E X-Google-Smtp-Source: ABdhPJzcWnvJEq/xcup+eZznQQjcwhSGHwksnhZO04Sbq0tuTKJTYhTUo/ehIeYEdYC6gE8DgEOhxQ== X-Received: by 2002:aa7:d9c8:: with SMTP id v8mr3212277eds.9.1616590570503; Wed, 24 Mar 2021 05:56:10 -0700 (PDT) Received: from localhost.localdomain ([5.2.193.191]) by smtp.gmail.com with ESMTPSA id fi11sm880282ejb.73.2021.03.24.05.56.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 05:56:10 -0700 (PDT) From: Alexandru Ardelean To: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org Cc: coproscefalo@gmail.com, hdegoede@redhat.com, mgross@linux.intel.com, jic23@kernel.org, linux@deviqon.com, Alexandru Ardelean Subject: [PATCH 10/10] platform/x86: toshiba_acpi: bind proc entries creation to parent Date: Wed, 24 Mar 2021 14:55:48 +0200 Message-Id: <20210324125548.45983-11-aardelean@deviqon.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210324125548.45983-1-aardelean@deviqon.com> References: <20210324125548.45983-1-aardelean@deviqon.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org This change binds the creation of the proc entries to the parent object, via the devm_add_action_or_reset() call. This way when the parent object's refcount goes to zero, the proc entries are removed in the reverse other in which they were created. This is the last bit of the toshiba_acpi_remove() function, so in this change this function is removed. Signed-off-by: Alexandru Ardelean Reviewed-by: Jonathan Cameron --- drivers/platform/x86/toshiba_acpi.c | 45 ++++++++++++++--------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 8e8917979047..56ee5cd1e90c 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c @@ -1671,7 +1671,23 @@ static int __maybe_unused version_proc_show(struct seq_file *m, void *v) #define PROC_TOSHIBA "toshiba" -static void create_toshiba_proc_entries(struct toshiba_acpi_dev *dev) +static void remove_toshiba_proc_entries(void *data) +{ + struct toshiba_acpi_dev *dev = data; + + if (dev->backlight_dev) + remove_proc_entry("lcd", toshiba_proc_dir); + if (dev->video_supported) + remove_proc_entry("video", toshiba_proc_dir); + if (dev->fan_supported) + remove_proc_entry("fan", toshiba_proc_dir); + if (dev->hotkey_dev) + remove_proc_entry("keys", toshiba_proc_dir); + remove_proc_entry("version", toshiba_proc_dir); +} + +static int create_toshiba_proc_entries(struct device *parent, + struct toshiba_acpi_dev *dev) { if (dev->backlight_dev) proc_create_data("lcd", S_IRUGO | S_IWUSR, toshiba_proc_dir, @@ -1687,19 +1703,8 @@ static void create_toshiba_proc_entries(struct toshiba_acpi_dev *dev) &keys_proc_ops, dev); proc_create_single_data("version", S_IRUGO, toshiba_proc_dir, version_proc_show, dev); -} -static void remove_toshiba_proc_entries(struct toshiba_acpi_dev *dev) -{ - if (dev->backlight_dev) - remove_proc_entry("lcd", toshiba_proc_dir); - if (dev->video_supported) - remove_proc_entry("video", toshiba_proc_dir); - if (dev->fan_supported) - remove_proc_entry("fan", toshiba_proc_dir); - if (dev->hotkey_dev) - remove_proc_entry("keys", toshiba_proc_dir); - remove_proc_entry("version", toshiba_proc_dir); + return devm_add_action_or_reset(parent, remove_toshiba_proc_entries, dev); } static const struct backlight_ops toshiba_backlight_data = { @@ -3012,15 +3017,6 @@ static void print_supported_features(struct toshiba_acpi_dev *dev) pr_cont("\n"); } -static int toshiba_acpi_remove(struct acpi_device *acpi_dev) -{ - struct toshiba_acpi_dev *dev = acpi_driver_data(acpi_dev); - - remove_toshiba_proc_entries(dev); - - return 0; -} - static const char *find_hci_method(acpi_handle handle) { if (acpi_has_method(handle, "GHCI")) @@ -3230,7 +3226,9 @@ static int toshiba_acpi_add(struct acpi_device *acpi_dev) if (ret) return ret; - create_toshiba_proc_entries(dev); + ret = create_toshiba_proc_entries(parent, dev); + if (ret) + return ret; toshiba_acpi = dev; @@ -3340,7 +3338,6 @@ static struct acpi_driver toshiba_acpi_driver = { .flags = ACPI_DRIVER_ALL_NOTIFY_EVENTS, .ops = { .add = toshiba_acpi_add, - .remove = toshiba_acpi_remove, .notify = toshiba_acpi_notify, }, .drv.pm = &toshiba_acpi_pm,