mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
iio: imu: inv_icm42670: fix dead lock when resume
Signed-off-by: Yu Zheng <yu.zheng@rock-chips.com> Change-Id: I1aae323d4ee49abcff374d80e3611da2f5c7c023
This commit is contained in:
@@ -1342,17 +1342,8 @@ static int __maybe_unused sleep_icm42670_resume(struct device *dev)
|
||||
struct icm42670_data *st = iio_priv(dev_get_drvdata(dev));
|
||||
struct iio_dev *indio_dev = dev_get_drvdata(dev);
|
||||
|
||||
mutex_lock(&st->lock);
|
||||
|
||||
if (!pm_runtime_suspended(dev))
|
||||
goto out_unlock;
|
||||
|
||||
usleep_range(3000, 4000);
|
||||
|
||||
pm_runtime_disable(dev);
|
||||
pm_runtime_set_active(dev);
|
||||
pm_runtime_enable(dev);
|
||||
|
||||
icm42670_set_odr(st, ICM42670_GYRO, st->gyro_frequency_buff);
|
||||
icm42670_set_odr(st, ICM42670_ACCEL, st->accel_frequency_buff);
|
||||
icm42670_set_lpf_bw(st, ICM42670_ACCEL, st->accel_lpf_bw_buff);
|
||||
@@ -1360,8 +1351,6 @@ static int __maybe_unused sleep_icm42670_resume(struct device *dev)
|
||||
|
||||
ret = icm42670_set_enable(indio_dev, 1);
|
||||
|
||||
out_unlock:
|
||||
mutex_unlock(&st->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1375,11 +1364,6 @@ static int __maybe_unused sleep_icm42670_suspend(struct device *dev)
|
||||
struct iio_dev *indio_dev = dev_get_drvdata(dev);
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&st->lock);
|
||||
|
||||
if (pm_runtime_suspended(dev))
|
||||
goto out_unlock;
|
||||
|
||||
st->gyro_frequency_buff = st->gyro_frequency;
|
||||
st->accel_frequency_buff = st->accel_frequency;
|
||||
st->accel_lpf_bw_buff = st->accel_lpf_bw;
|
||||
@@ -1387,8 +1371,6 @@ static int __maybe_unused sleep_icm42670_suspend(struct device *dev)
|
||||
|
||||
ret = icm42670_set_enable(indio_dev, 0);
|
||||
|
||||
out_unlock:
|
||||
mutex_unlock(&st->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user