[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);
|
||||
|
||||
/*
|
||||
* 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) {
|
||||
if (on && !sensor->power_count) {
|
||||
/* Power on and perform initialisation. */
|
||||
ret = smiapp_power_on(sensor);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
} else {
|
||||
} else if (!on && sensor->power_count == 1) {
|
||||
smiapp_power_off(sensor);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue