From: Jonathan Cameron <jic23@kernel.org>
To: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: linux-iio@vger.kernel.org, Hartmut Knaack <knaack.h@gmx.de>,
Lars-Peter Clausen <lars@metafoo.de>,
Peter Meerwald-Stadler <pmeerw@pmeerw.net>,
Chris Healy <cphealy@gmail.com>,
linux-kernel@vger.kernel.org,
Haibo Chen <haibo.chen@freescale.com>
Subject: Re: [PATCH 6/6] iio: imx7d_adc: Drop imx7d_adc_remove()
Date: Sun, 7 Apr 2019 12:16:36 +0100 [thread overview]
Message-ID: <20190407121636.7a6abe25@archlinux> (raw)
In-Reply-To: <20190403070325.1077-7-andrew.smirnov@gmail.com>
On Wed, 3 Apr 2019 00:03:25 -0700
Andrey Smirnov <andrew.smirnov@gmail.com> wrote:
> Since imx7d_adc_remove() does exactly the same thing as
> imx7d_adc_suspend() we can use the latter together with
> devm_add_action_or_reset() to get rid of the former.
>
> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Hartmut Knaack <knaack.h@gmx.de>
> Cc: Lars-Peter Clausen <lars@metafoo.de>
> Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
> Cc: Chris Healy <cphealy@gmail.com>
> Cc: linux-iio@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
Ah. OK, so you end up with one of the options I listed when rejecting
the earlier change for iio_device_register.
Please merge this patch with that one so we have a single change and don't
end up with a race condition prone state in between. Separate patches
are fine as well, but work your way down through probe rather than jumping
around like now. Hence we'll have something valid at all stages.
Thanks,
Jonathan
> ---
> drivers/iio/adc/imx7d_adc.c | 55 ++++++++++++++++---------------------
> 1 file changed, 23 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/iio/adc/imx7d_adc.c b/drivers/iio/adc/imx7d_adc.c
> index c2fa0ab923ee..ed95909eada2 100644
> --- a/drivers/iio/adc/imx7d_adc.c
> +++ b/drivers/iio/adc/imx7d_adc.c
> @@ -461,6 +461,24 @@ static int imx7d_adc_resume(struct device *dev)
> return 0;
> }
>
> +static int imx7d_adc_suspend(struct device *dev)
> +{
> + struct iio_dev *indio_dev = dev_get_drvdata(dev);
> + struct imx7d_adc *info = iio_priv(indio_dev);
> +
> + imx7d_adc_power_down(info);
> +
> + clk_disable_unprepare(info->clk);
> + regulator_disable(info->vref);
> +
> + return 0;
> +}
> +
> +static void __imx7d_adc_suspend(void *data)
> +{
> + imx7d_adc_suspend(data);
> +}
> +
> static int imx7d_adc_probe(struct platform_device *pdev)
> {
> struct imx7d_adc *info;
> @@ -506,8 +524,6 @@ static int imx7d_adc_probe(struct platform_device *pdev)
> return ret;
> }
>
> - platform_set_drvdata(pdev, indio_dev);
> -
> init_completion(&info->completion);
>
> indio_dev->name = dev_name(dev);
> @@ -531,11 +547,13 @@ static int imx7d_adc_probe(struct platform_device *pdev)
> if (ret)
> return ret;
>
> + ret = devm_add_action_or_reset(dev, __imx7d_adc_suspend,
> + &indio_dev->dev);
> + if (ret)
> + return ret;
> +
> ret = devm_iio_device_register(dev, indio_dev);
> if (ret) {
> - imx7d_adc_power_down(info);
> - clk_disable_unprepare(info->clk);
> - regulator_disable(info->vref);
> dev_err(&pdev->dev, "Couldn't register the device.\n");
> return ret;
> }
> @@ -543,37 +561,10 @@ static int imx7d_adc_probe(struct platform_device *pdev)
> return 0;
> }
>
> -static int imx7d_adc_remove(struct platform_device *pdev)
> -{
> - struct iio_dev *indio_dev = platform_get_drvdata(pdev);
> - struct imx7d_adc *info = iio_priv(indio_dev);
> -
> - imx7d_adc_power_down(info);
> -
> - clk_disable_unprepare(info->clk);
> - regulator_disable(info->vref);
> -
> - return 0;
> -}
> -
> -static int __maybe_unused imx7d_adc_suspend(struct device *dev)
> -{
> - struct iio_dev *indio_dev = dev_get_drvdata(dev);
> - struct imx7d_adc *info = iio_priv(indio_dev);
> -
> - imx7d_adc_power_down(info);
> -
> - clk_disable_unprepare(info->clk);
> - regulator_disable(info->vref);
> -
> - return 0;
> -}
> -
> static SIMPLE_DEV_PM_OPS(imx7d_adc_pm_ops, imx7d_adc_suspend, imx7d_adc_resume);
>
> static struct platform_driver imx7d_adc_driver = {
> .probe = imx7d_adc_probe,
> - .remove = imx7d_adc_remove,
> .driver = {
> .name = "imx7d_adc",
> .of_match_table = imx7d_adc_match,
prev parent reply other threads:[~2019-04-07 11:16 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-03 7:03 [PATCH 0/6] i.MX7D ADC improvements Andrey Smirnov
2019-04-03 7:03 ` [PATCH 1/6] iio: imx7d_adc: Add local struct device pointer in imx7d_adc_probe() Andrey Smirnov
2019-04-07 11:02 ` Jonathan Cameron
2019-04-03 7:03 ` [PATCH 2/6] iio: imx7d_adc: Replace pr_err with dev_err Andrey Smirnov
2019-04-07 11:03 ` Jonathan Cameron
2019-04-03 7:03 ` [PATCH 3/6] iio: imx7d_adc: Use devm_iio_device_register() Andrey Smirnov
2019-04-07 11:07 ` Jonathan Cameron
2019-04-14 1:04 ` Andrey Smirnov
2019-04-03 7:03 ` [PATCH 4/6] iio: imx7d_adc: Use devm_platform_ioremap_resource() Andrey Smirnov
2019-04-07 11:09 ` Jonathan Cameron
2019-04-03 7:03 ` [PATCH 5/6] iio: imx7d_adc: Use imx7d_adc_resume() in imx7d_adc_probe() Andrey Smirnov
2019-04-07 11:15 ` Jonathan Cameron
2019-04-14 1:05 ` Andrey Smirnov
2019-04-03 7:03 ` [PATCH 6/6] iio: imx7d_adc: Drop imx7d_adc_remove() Andrey Smirnov
2019-04-07 11:16 ` Jonathan Cameron [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190407121636.7a6abe25@archlinux \
--to=jic23@kernel.org \
--cc=andrew.smirnov@gmail.com \
--cc=cphealy@gmail.com \
--cc=haibo.chen@freescale.com \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pmeerw@pmeerw.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).