Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58e43d90 authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

[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: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 7d1311b9
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -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);
	}