Commit d3a8969d authored by Jonathan Cameron's avatar Jonathan Cameron
Browse files

iio: accel: bmc150-accel: Balanced runtime pm + use pm_runtime_resume_and_get()



A call to pm_runtime_put_noidle() doesn't match any call that would
result in a get().  It is safe because runtime pm core protects against
the reference counter going 0, but it makes it harder to understand the
code.

Whilst here use pm_runtime_resume_and_get() to tidy things up.
The Coccinelle script didn't get this one due to more complex code
structure.

Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Reviewed-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Link: https://lore.kernel.org/r/20210509113354.660190-5-jic23@kernel.org
parent 6fbaebae
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -389,7 +389,7 @@ static int bmc150_accel_set_power_state(struct bmc150_accel_data *data, bool on)
	int ret;

	if (on) {
		ret = pm_runtime_get_sync(dev);
		ret = pm_runtime_resume_and_get(dev);
	} else {
		pm_runtime_mark_last_busy(dev);
		ret = pm_runtime_put_autosuspend(dev);
@@ -398,9 +398,6 @@ static int bmc150_accel_set_power_state(struct bmc150_accel_data *data, bool on)
	if (ret < 0) {
		dev_err(dev,
			"Failed: %s for %d\n", __func__, on);
		if (on)
			pm_runtime_put_noidle(dev);

		return ret;
	}

@@ -1836,7 +1833,6 @@ int bmc150_accel_core_remove(struct device *dev)

	pm_runtime_disable(dev);
	pm_runtime_set_suspended(dev);
	pm_runtime_put_noidle(dev);

	bmc150_accel_unregister_triggers(data, BMC150_ACCEL_TRIGGERS - 1);