mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-22 00:40:03 +00:00
iio: adc: rcar-gyroadc: Use pm_runtime_resume_and_get() and check in probe()
1 instance found using coccicheck script under review at: https://lore.kernel.org/lkml/20210427141946.2478411-1-Julia.Lawall@inria.fr/ The other instance changed did not check for failure of the pm_runtime_get_sync() so that is added. Note the remaining pm_runtime_get_sync() call is left alone because it is not obvious what to do on failure to power up in remove() This is a prequel to taking a closer look at the runtime pm in IIO drivers in general. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Cc: Marek Vasut <marek.vasut@gmail.com> Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Link: https://lore.kernel.org/r/20210509113354.660190-29-jic23@kernel.org
This commit is contained in:
parent
66e748ae7f
commit
db9c6c2ec4
1 changed files with 7 additions and 8 deletions
|
@ -162,18 +162,13 @@ static const struct iio_chan_spec rcar_gyroadc_iio_channels_3[] = {
|
|||
static int rcar_gyroadc_set_power(struct rcar_gyroadc *priv, bool on)
|
||||
{
|
||||
struct device *dev = priv->dev;
|
||||
int ret;
|
||||
|
||||
if (on) {
|
||||
ret = pm_runtime_get_sync(dev);
|
||||
if (ret < 0)
|
||||
pm_runtime_put_noidle(dev);
|
||||
return pm_runtime_resume_and_get(dev);
|
||||
} else {
|
||||
pm_runtime_mark_last_busy(dev);
|
||||
ret = pm_runtime_put_autosuspend(dev);
|
||||
return pm_runtime_put_autosuspend(dev);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rcar_gyroadc_read_raw(struct iio_dev *indio_dev,
|
||||
|
@ -535,7 +530,10 @@ static int rcar_gyroadc_probe(struct platform_device *pdev)
|
|||
pm_runtime_use_autosuspend(dev);
|
||||
pm_runtime_enable(dev);
|
||||
|
||||
pm_runtime_get_sync(dev);
|
||||
ret = pm_runtime_resume_and_get(dev);
|
||||
if (ret)
|
||||
goto err_power_up;
|
||||
|
||||
rcar_gyroadc_hw_init(priv);
|
||||
rcar_gyroadc_hw_start(priv);
|
||||
|
||||
|
@ -552,6 +550,7 @@ static int rcar_gyroadc_probe(struct platform_device *pdev)
|
|||
err_iio_device_register:
|
||||
rcar_gyroadc_hw_stop(priv);
|
||||
pm_runtime_put_sync(dev);
|
||||
err_power_up:
|
||||
pm_runtime_disable(dev);
|
||||
pm_runtime_set_suspended(dev);
|
||||
clk_disable_unprepare(priv->clk);
|
||||
|
|
Loading…
Reference in a new issue