Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3624256pxb; Sat, 13 Feb 2021 04:05:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJzvF6CZmLNNuUWb2iq04iEkyyJMT5k7J3CeqAwY7cqufcF4dKmNfy5nU/CCoSjHPJmmYLna X-Received: by 2002:a05:6402:3070:: with SMTP id bs16mr7420963edb.22.1613217935940; Sat, 13 Feb 2021 04:05:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613217935; cv=none; d=google.com; s=arc-20160816; b=HhDkuC9CQyIfoGh4TcHMJIkiWzv1jO4B1uqVNTS9dymUgZDs9I1xlq7CEv2yjGybIf TsOa375+ihbOdxLOvPaEFSxRO/DXJT0eaR3l1zRo9TmfZEaOC5Pt6h3uXM+EzpvkAfC+ d9VL0Tmp+L9gjU5lGdm2d64z+k1U7xhkUiEy83k3gLRqr+QU0KbcFF5YpiTA/MKkrx7x oxfSdUMK749WBubctBL6a/vAbfojBFyOpjhjNW71UKaZERmRx/zhqbjjz+IeNL1G9H7C 0LwG6mPJEjwmDuTJvhvop1Xi1Fh4Roz2e+J8xr4qmkvNOvFlGGdSqWAoRGxOjzUFWCC+ SPQQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=WY1NnsH30Be8VVli1iUXQg5r7coQiLhOd+l5J1iwT2s=; b=vsPdI3nKXmzghJKhgeaVqN1dMP9h2h5v92EomHBsIq6NJR6iiAm2zwwezLt1XWERbm O0pTCYJBQN1S14vzP6wMQNFOmlQyfu8dxbe23A8K03ONXqHMOCixpC9yCUnUOBSC7n6T 4vGUE4ne0FlhQiyVkWSdygQpM7YnUV5vMNARHdV/Iju4fG45/+wpFnyoKwLb1LSv9zY/ j98cgCss8gfLgOPdZZaRifKVBBazVWPTG5pFhTkm+p3xjzpZ584jXWVUtHowjCDvjwu/ 4QB0UU2KBhpgDfrDqxt93Bo9yCXn8XNLVIto0WJa48IayeWURXFv2EIdZZt8h4p+timC 3fUA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a89si8676823ede.326.2021.02.13.04.05.12; Sat, 13 Feb 2021 04:05:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229584AbhBMMEB (ORCPT + 99 others); Sat, 13 Feb 2021 07:04:01 -0500 Received: from mail-lj1-f176.google.com ([209.85.208.176]:34902 "EHLO mail-lj1-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229517AbhBMMEA (ORCPT ); Sat, 13 Feb 2021 07:04:00 -0500 Received: by mail-lj1-f176.google.com with SMTP id a17so2203533ljq.2; Sat, 13 Feb 2021 04:03:42 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=WY1NnsH30Be8VVli1iUXQg5r7coQiLhOd+l5J1iwT2s=; b=OZX9jKsC+nbrJggk+7jJhVeFYgylAInj0RpmVWEyPpXLi+Ev1V+TeGtOyI+1FTV0Vb rtbZIsJqDOKDSBfzPzVQxm9nHH315pJoBb/TUExcIWpeITFwPwAZogvRxWIFiuYpgFhl 8obQkzgISAjshN5U8ucLKOxkEltU+q2NXHcHF5ZB3BS6j65N56tW5NSiOMnVNpJAT+2M ldfQAiU054miXipBffhJGwp9+HifvE8WNq/DyxhSrN7pwL2UnFvgA0Ml3GzM2omyWb4l CGPNmK0VG3TFOZx8vShu7ppGKQNToOF2xWwhYTTNlFae8wFMZlelztpWTGjyHJHaIDEe HBcQ== X-Gm-Message-State: AOAM532ByVzifZEFvmZ+sBGNvm6GCVRapAegS86c3noponKAxBqYd0nP 9m26UVg+uCN856DKlmGNi/g= X-Received: by 2002:a2e:3207:: with SMTP id y7mr4170152ljy.190.1613217796566; Sat, 13 Feb 2021 04:03:16 -0800 (PST) Received: from localhost.localdomain (dc7vkhyyyyyyyyyyyyycy-3.rev.dnainternet.fi. [2001:14ba:16e2:8300::4]) by smtp.gmail.com with ESMTPSA id y5sm1834900lfg.138.2021.02.13.04.03.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Feb 2021 04:03:16 -0800 (PST) Date: Sat, 13 Feb 2021 14:03:09 +0200 From: Matti Vaittinen To: mazziesaccount@gmail.com, matti.vaittinen@fi.rohmeurope.com Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" , MyungJoo Ham , Chanwoo Choi , Andy Gross , Bjorn Andersson , Jean Delvare , Hans de Goede , Mark Gross , Chen-Yu Tsai , Heikki Krogerus , Andy Shevchenko , linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Subject: [RFC PATCH 2/7] extconn: Clean-up few drivers by using managed work init Message-ID: <2268e68a236bee165b5af245754249fa93ce4669.1613216412.git.matti.vaittinen@fi.rohmeurope.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Few drivers implement remove call-back only for ensuring a delayed work gets cancelled prior driver removal. Clean-up these by switching to use devm_delayed_work_autocancel() instead. This change is compile-tested only. All testing is appreciated. Signed-off-by: Matti Vaittinen --- drivers/extcon/extcon-gpio.c | 14 +++----------- drivers/extcon/extcon-intel-int3496.c | 15 +++------------ drivers/extcon/extcon-palmas.c | 16 +++++----------- drivers/extcon/extcon-qcom-spmi-misc.c | 16 +++++----------- 4 files changed, 16 insertions(+), 45 deletions(-) diff --git a/drivers/extcon/extcon-gpio.c b/drivers/extcon/extcon-gpio.c index c211222f5d0c..7a45610e6c59 100644 --- a/drivers/extcon/extcon-gpio.c +++ b/drivers/extcon/extcon-gpio.c @@ -112,7 +112,9 @@ static int gpio_extcon_probe(struct platform_device *pdev) if (ret < 0) return ret; - INIT_DELAYED_WORK(&data->work, gpio_extcon_work); + ret = devm_delayed_work_autocancel(dev, &data->work, gpio_extcon_work); + if (ret) + return ret; /* * Request the interrupt of gpio to detect whether external connector @@ -131,15 +133,6 @@ static int gpio_extcon_probe(struct platform_device *pdev) return 0; } -static int gpio_extcon_remove(struct platform_device *pdev) -{ - struct gpio_extcon_data *data = platform_get_drvdata(pdev); - - cancel_delayed_work_sync(&data->work); - - return 0; -} - #ifdef CONFIG_PM_SLEEP static int gpio_extcon_resume(struct device *dev) { @@ -158,7 +151,6 @@ static SIMPLE_DEV_PM_OPS(gpio_extcon_pm_ops, NULL, gpio_extcon_resume); static struct platform_driver gpio_extcon_driver = { .probe = gpio_extcon_probe, - .remove = gpio_extcon_remove, .driver = { .name = "extcon-gpio", .pm = &gpio_extcon_pm_ops, diff --git a/drivers/extcon/extcon-intel-int3496.c b/drivers/extcon/extcon-intel-int3496.c index 80c9abcc3f97..508a63dae3b4 100644 --- a/drivers/extcon/extcon-intel-int3496.c +++ b/drivers/extcon/extcon-intel-int3496.c @@ -101,7 +101,9 @@ static int int3496_probe(struct platform_device *pdev) return -ENOMEM; data->dev = dev; - INIT_DELAYED_WORK(&data->work, int3496_do_usb_id); + ret = devm_delayed_work_autocancel(dev, &data->work, int3496_do_usb_id); + if (ret) + return ret; data->gpio_usb_id = devm_gpiod_get(dev, "id", GPIOD_IN); if (IS_ERR(data->gpio_usb_id)) { @@ -155,16 +157,6 @@ static int int3496_probe(struct platform_device *pdev) return 0; } -static int int3496_remove(struct platform_device *pdev) -{ - struct int3496_data *data = platform_get_drvdata(pdev); - - devm_free_irq(&pdev->dev, data->usb_id_irq, data); - cancel_delayed_work_sync(&data->work); - - return 0; -} - static const struct acpi_device_id int3496_acpi_match[] = { { "INT3496" }, { } @@ -177,7 +169,6 @@ static struct platform_driver int3496_driver = { .acpi_match_table = int3496_acpi_match, }, .probe = int3496_probe, - .remove = int3496_remove, }; module_platform_driver(int3496_driver); diff --git a/drivers/extcon/extcon-palmas.c b/drivers/extcon/extcon-palmas.c index a2852bcc5f0d..1c48094bcf68 100644 --- a/drivers/extcon/extcon-palmas.c +++ b/drivers/extcon/extcon-palmas.c @@ -237,7 +237,11 @@ static int palmas_usb_probe(struct platform_device *pdev) palmas_usb->sw_debounce_jiffies = msecs_to_jiffies(debounce); } - INIT_DELAYED_WORK(&palmas_usb->wq_detectid, palmas_gpio_id_detect); + status = devm_delayed_work_autocancel(&pdev->dev, + &palmas_usb->wq_detectid, + palmas_gpio_id_detect); + if (status) + return status; palmas->usb = palmas_usb; palmas_usb->palmas = palmas; @@ -359,15 +363,6 @@ static int palmas_usb_probe(struct platform_device *pdev) return 0; } -static int palmas_usb_remove(struct platform_device *pdev) -{ - struct palmas_usb *palmas_usb = platform_get_drvdata(pdev); - - cancel_delayed_work_sync(&palmas_usb->wq_detectid); - - return 0; -} - #ifdef CONFIG_PM_SLEEP static int palmas_usb_suspend(struct device *dev) { @@ -422,7 +417,6 @@ static const struct of_device_id of_palmas_match_tbl[] = { static struct platform_driver palmas_usb_driver = { .probe = palmas_usb_probe, - .remove = palmas_usb_remove, .driver = { .name = "palmas-usb", .of_match_table = of_palmas_match_tbl, diff --git a/drivers/extcon/extcon-qcom-spmi-misc.c b/drivers/extcon/extcon-qcom-spmi-misc.c index 6b836ae62176..82a7498951d2 100644 --- a/drivers/extcon/extcon-qcom-spmi-misc.c +++ b/drivers/extcon/extcon-qcom-spmi-misc.c @@ -80,7 +80,11 @@ static int qcom_usb_extcon_probe(struct platform_device *pdev) } info->debounce_jiffies = msecs_to_jiffies(USB_ID_DEBOUNCE_MS); - INIT_DELAYED_WORK(&info->wq_detcable, qcom_usb_extcon_detect_cable); + + ret = devm_delayed_work_autocancel(dev, &info->wq_detcable, + qcom_usb_extcon_detect_cable); + if (ret) + return ret; info->irq = platform_get_irq_byname(pdev, "usb_id"); if (info->irq < 0) @@ -105,15 +109,6 @@ static int qcom_usb_extcon_probe(struct platform_device *pdev) return 0; } -static int qcom_usb_extcon_remove(struct platform_device *pdev) -{ - struct qcom_usb_extcon_info *info = platform_get_drvdata(pdev); - - cancel_delayed_work_sync(&info->wq_detcable); - - return 0; -} - #ifdef CONFIG_PM_SLEEP static int qcom_usb_extcon_suspend(struct device *dev) { @@ -149,7 +144,6 @@ MODULE_DEVICE_TABLE(of, qcom_usb_extcon_dt_match); static struct platform_driver qcom_usb_extcon_driver = { .probe = qcom_usb_extcon_probe, - .remove = qcom_usb_extcon_remove, .driver = { .name = "extcon-pm8941-misc", .pm = &qcom_usb_extcon_pm_ops, -- 2.25.4 -- Matti Vaittinen, Linux device drivers ROHM Semiconductors, Finland SWDC Kiviharjunlenkki 1E 90220 OULU FINLAND ~~~ "I don't think so," said Rene Descartes. Just then he vanished ~~~ Simon says - in Latin please. ~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~ Thanks to Simon Glass for the translation =]