From patchwork Wed Jul 13 16:05:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Tissoires X-Patchwork-Id: 9227947 X-Patchwork-Delegate: jikos@jikos.cz Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C2D766075D for ; Wed, 13 Jul 2016 16:18:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B521627F9C for ; Wed, 13 Jul 2016 16:18:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AA0BB27F9E; Wed, 13 Jul 2016 16:18:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4CE1327F94 for ; Wed, 13 Jul 2016 16:18:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753195AbcGMQOV (ORCPT ); Wed, 13 Jul 2016 12:14:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36089 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752100AbcGMQGs (ORCPT ); Wed, 13 Jul 2016 12:06:48 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 95848821C7; Wed, 13 Jul 2016 16:06:32 +0000 (UTC) Received: from plouf.banquise.eu.com (ovpn-116-194.phx2.redhat.com [10.3.116.194]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u6DG6JwB004508; Wed, 13 Jul 2016 12:06:31 -0400 From: Benjamin Tissoires To: Jiri Kosina , Ping Cheng , Jason Gerecke , Aaron Skomra , Peter Hutterer Cc: linux-kernel@vger.kernel.org, linux-input@vger.kernel.org Subject: [PATCH v2 06/30] HID: wacom: switch battery to devres Date: Wed, 13 Jul 2016 18:05:53 +0200 Message-Id: <1468425977-4819-7-git-send-email-benjamin.tissoires@redhat.com> In-Reply-To: <1468425977-4819-1-git-send-email-benjamin.tissoires@redhat.com> References: <1468425977-4819-1-git-send-email-benjamin.tissoires@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Wed, 13 Jul 2016 16:06:32 +0000 (UTC) Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Simplifying the error code paths. We need to keep wacom_destroy_battery() around for now as the wireless module and the remotes are using it to dynamically remove the battery supply on disconnect. Signed-off-by: Benjamin Tissoires --- No changes in v2 --- drivers/hid/wacom_sys.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c index 54f0260..61dcb87e 100644 --- a/drivers/hid/wacom_sys.c +++ b/drivers/hid/wacom_sys.c @@ -1082,11 +1082,16 @@ static int wacom_ac_get_property(struct power_supply *psy, static int wacom_initialize_battery(struct wacom *wacom) { static atomic_t battery_no = ATOMIC_INIT(0); + struct device *dev = &wacom->hdev->dev; struct power_supply_config psy_cfg = { .drv_data = wacom, }; + struct power_supply_desc *bat_desc = &wacom->battery_desc; unsigned long n; + int error; + + if (!devres_open_group(dev, bat_desc, GFP_KERNEL)) + return -ENOMEM; if (wacom->wacom_wac.features.quirks & WACOM_QUIRK_BATTERY) { - struct power_supply_desc *bat_desc = &wacom->battery_desc; struct power_supply_desc *ac_desc = &wacom->ac_desc; n = atomic_inc_return(&battery_no) - 1; @@ -1106,33 +1111,40 @@ static int wacom_initialize_battery(struct wacom *wacom) ac_desc->type = POWER_SUPPLY_TYPE_MAINS; ac_desc->use_for_apm = 0; - wacom->battery = power_supply_register(&wacom->hdev->dev, - &wacom->battery_desc, &psy_cfg); - if (IS_ERR(wacom->battery)) - return PTR_ERR(wacom->battery); + wacom->battery = devm_power_supply_register(dev, + &wacom->battery_desc, + &psy_cfg); + if (IS_ERR(wacom->battery)) { + error = PTR_ERR(wacom->battery); + goto err; + } power_supply_powers(wacom->battery, &wacom->hdev->dev); - wacom->ac = power_supply_register(&wacom->hdev->dev, - &wacom->ac_desc, - &psy_cfg); + wacom->ac = devm_power_supply_register(dev, + &wacom->ac_desc, + &psy_cfg); if (IS_ERR(wacom->ac)) { - power_supply_unregister(wacom->battery); - return PTR_ERR(wacom->ac); + error = PTR_ERR(wacom->ac); + goto err; } power_supply_powers(wacom->ac, &wacom->hdev->dev); } + devres_close_group(dev, bat_desc); return 0; + +err: + devres_release_group(dev, bat_desc); + return error; } static void wacom_destroy_battery(struct wacom *wacom) { if (wacom->battery) { - power_supply_unregister(wacom->battery); + devres_release_group(&wacom->hdev->dev, &wacom->battery_desc); wacom->battery = NULL; - power_supply_unregister(wacom->ac); wacom->ac = NULL; } } @@ -1731,7 +1743,6 @@ fail_remote: fail_leds: wacom_clean_inputs(wacom); fail_register_inputs: - wacom_destroy_battery(wacom); fail_battery: wacom_remove_shared_data(wacom); fail_shared_data: @@ -1920,7 +1931,6 @@ static void wacom_remove(struct hid_device *hdev) wacom_clean_inputs(wacom); if (hdev->bus == BUS_BLUETOOTH) device_remove_file(&hdev->dev, &dev_attr_speed); - wacom_destroy_battery(wacom); wacom_remove_shared_data(wacom); hid_set_drvdata(hdev, NULL);