[media] smiapp: Fix power count handling
The sensor may be powered by either one of its sub-devices being accessed from the user space (an open file handle) or by its s_power() op being called with non-zero on argument. The driver counts the users and if any reason to keep the device powered exists it will be powered. However, a faulty condition was used in recognising the need to power off the sensor, leading it to be powered off every time any of its uses went away. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This commit is contained in:
parent
7d1311b93e
commit
58e43d90b9
|
@ -1282,19 +1282,12 @@ static int smiapp_set_power(struct v4l2_subdev *subdev, int on)
|
||||||
|
|
||||||
mutex_lock(&sensor->power_mutex);
|
mutex_lock(&sensor->power_mutex);
|
||||||
|
|
||||||
/*
|
if (on && !sensor->power_count) {
|
||||||
* If the power count is modified from 0 to != 0 or from != 0
|
|
||||||
* to 0, update the power state.
|
|
||||||
*/
|
|
||||||
if (!sensor->power_count == !on)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (on) {
|
|
||||||
/* Power on and perform initialisation. */
|
/* Power on and perform initialisation. */
|
||||||
ret = smiapp_power_on(sensor);
|
ret = smiapp_power_on(sensor);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
} else {
|
} else if (!on && sensor->power_count == 1) {
|
||||||
smiapp_power_off(sensor);
|
smiapp_power_off(sensor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue