linux/drivers/media
Akinobu Mita 94ae1d6ba6 media: pxa_camera: avoid duplicate s_power calls
The open() operation for the pxa_camera driver always calls s_power()
operation to put its subdevice sensor in normal operation mode, and the
release() operation always call s_power() operation to put the subdevice
in power saving mode.

This requires the subdevice sensor driver to keep track of its power
state in order to avoid putting the subdevice in power saving mode while
the device is still opened by some users.

Many subdevice drivers handle it by the boilerplate code that increments
and decrements an internal counter in s_power() like below:

	/*
	 * If the power count is modified from 0 to != 0 or from != 0 to 0,
	 * update the power state.
	 */
	if (sensor->power_count == !on) {
		ret = ov5640_set_power(sensor, !!on);
		if (ret)
			goto out;
	}

	/* Update the power count. */
	sensor->power_count += on ? 1 : -1;

However, some subdevice drivers don't handle it and may cause a problem
with the pxa_camera driver if the video device is opened by more than
two users at the same time.

Instead of propagating the boilerplate code for each subdevice driver
that implement s_power, this introduces an trick that many V4L2 drivers
are using with v4l2_fh_is_singular_file().

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
2018-05-28 16:24:30 -04:00
..
cec media: cec-pin-error-inj: avoid a false-positive Spectre detection 2018-05-28 16:11:17 -04:00
common media: Remove depends on HAS_DMA in case of platform dependency 2018-05-28 16:17:08 -04:00
dvb-core media: dvb_ca_en50221: prevent using slot_info for Spectre attacs 2018-05-16 10:17:22 -04:00
dvb-frontends media: lgdt330x.h: fix compiler warning 2018-05-11 11:40:09 -04:00
firewire vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
i2c media: ov772x: correct setting of banding filter 2018-05-28 13:58:34 -04:00
mmc media: siano: use GFP_DMA only for smssdio 2018-05-15 08:04:42 -04:00
pci media: tw686x: Fix incorrect vb2_mem_ops GFP flags 2018-05-28 16:21:41 -04:00
platform media: pxa_camera: avoid duplicate s_power calls 2018-05-28 16:24:30 -04:00
radio Linux 4.17-rc4 2018-05-10 07:19:23 -04:00
rc media: rc: ite-cir: lower timeout and extend allowed timeout range 2018-05-14 07:17:28 -04:00
spi media: cxd2880-spi: Modified how to declare structure 2018-05-05 10:37:12 -04:00
tuners Linux 4.17-rc4 2018-05-10 07:19:23 -04:00
usb media: stk1160: Add missing calls to mutex_destroy 2018-05-28 16:20:01 -04:00
v4l2-core media: Remove depends on HAS_DMA in case of platform dependency 2018-05-28 16:17:08 -04:00
Kconfig media: cec: Kconfig coding style issue 2018-05-09 16:26:50 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
media-device.c media: media-device: fix ioctl function types 2018-05-09 16:33:46 -04:00
media-devnode.c MAINTAINERS & files: Canonize the e-mails I use at files 2018-05-04 06:21:06 -04:00
media-entity.c media: media.h: reorganize header to make it easier to understand 2018-02-26 10:14:46 -05:00