linux/drivers/media
Petr Cvek e3b4d10cc0 [media] pxa_camera: fix module remove codepath for v4l2 clock
The conversion from soc_camera omitted a correct handling of the clock
gating for a sensor. When the pxa_camera driver module was removed it
tried to unregister clk, but this caused a similar warning:

  WARNING: CPU: 0 PID: 6740 at drivers/media/v4l2-core/v4l2-clk.c:278
  v4l2_clk_unregister(): Refusing to unregister ref-counted 0-0030 clock!

The clock was at time still refcounted by the sensor driver. Before
the removing of the pxa_camera the clock must be dropped by the sensor
driver. This should be triggered by v4l2_async_notifier_unregister() call
which removes sensor driver module too, calls unbind() function and then
tries to probe sensor driver again. Inside unbind() we can safely
unregister the v4l2 clock as the sensor driver got removed. The original
v4l2_clk_unregister() should be put inside test as the clock can be
already unregistered from unbind(). If there was not any bound sensor
the clock is still present.

The codepath is practically a copy from the old soc_camera. The bug was
tested with a pxa_camera+ov9640 combination during the conversion
of the ov9640 from the soc_camera.

Signed-off-by: Petr Cvek <petr.cvek@tul.cz>
Tested-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2017-05-18 07:29:57 -03:00
..
cec [media] cec: improve MEDIA_CEC_RC dependencies 2017-05-18 07:29:09 -03:00
common [media] b2c2: constify nxt200x_config structure 2017-04-17 12:18:18 -03:00
dvb-core [media] media/dvb-core: Race condition when writing to CAM 2017-04-17 17:20:23 -03:00
dvb-frontends treewide: spelling: correct diffrent[iate] and banlance typos 2017-05-08 17:15:13 -07:00
firewire [media] firewire: don't break long lines 2016-10-21 10:06:00 -02:00
i2c [media] ov2640: print error if devm_*_optional*() fails 2017-04-25 07:08:21 -03:00
mmc
pci Annotation of module parameters that specify device settings 2017-05-10 19:13:03 -07:00
platform [media] pxa_camera: fix module remove codepath for v4l2 clock 2017-05-18 07:29:57 -03:00
radio [media] wl128x: use setup_timer 2017-04-10 14:56:37 -03:00
rc [media] ir-lirc-codec: let lirc_dev handle the lirc_buffer 2017-05-18 06:19:29 -03:00
spi [media] gs1662: drop kfree for memory allocated with devm_kzalloc 2016-10-24 17:59:08 -02:00
tuners [media] xc5000: fix spelling mistake: "calibration" 2017-04-19 08:29:21 -03:00
usb [media] rainshadow-cec: avoid -Wmaybe-uninitialized warning 2017-05-18 07:28:38 -03:00
v4l2-core media updates for v4.12-rc1 2017-05-05 17:34:57 -07:00
Kconfig [media] cec: Kconfig cleanup 2017-04-19 06:50:52 -03:00
Makefile [media] cec: Kconfig cleanup 2017-04-19 06:50:52 -03:00
media-device.c [media] media: Rename graph and pipeline structs and functions 2017-01-27 16:13:24 -02:00
media-devnode.c media: utilize new cdev_device_add helper function 2017-03-21 06:44:33 +01:00
media-entity.c [media] media-entity: only call dev_dbg_obj if mdev is not NULL 2017-04-19 08:15:51 -03:00