The proper way to handle IRQs that need to be able to sleep in their IRQ handler
is to use a threaded IRQ.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
The device driver core already prints out a very similar message when a driver
fails to probe. No need to print one in the driver itself.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
The device can't possibly be registered at this point, so no need to to call
v4l2_device_unregister_subdev().
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Make sure to free the control handler when the device is removed.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
The mutex is used in the subdev callbacks, so unregister the subdev before the
mutex is destroyed.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This patch adds the driver for the LM3646, dual LED Flash driver.
The LM3646 has two 1.5A sync. boost converter with dual white current source.
It is controlled via an I2C compatible interface.
Each flash brightness, torch brightness and enable/disable can be controlled.
Under voltage, input voltage monitor and thermal threshhold Faults are added.
Please refer the datasheet http://www.ti.com/lit/ds/snvs962/snvs962.pdf
Signed-off-by: Daniel Jeong <gshark.jeong@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
If we have no pdata defined and driver fails to register we leak memory.
Converting to devm_kzalloc prevents this to happen.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Let's keep the style for all comments in the code, namely using small letters
whenever it's possible.
There is no functional change.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
There is no need to keep the FSF address inside each file. Moreover, it might
change in future which will make this one obsolete.
There is no functional change.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Empty port nodes are allowed but currently unsupported as the
v4l2_of_get_next_endpoint() function assumes that all port nodes have at
least an endpoint. Fix this.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
This code is correct but the indenting is wrong and triggers a static
checker warning "add curly braces?".
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
interruptible_sleep_on is racy and going away. In the arv driver that
race has probably never caused problems since it would require a whole
video frame to be captured before the read function has a chance to
go to sleep, but using wait_event_interruptible lets us kill off the
old interface. In order to do this, we have to slightly adapt the
meaning of the ar->start_capture field to distinguish between not having
started a frame and having completed it.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
If NO_DMA=y:
warning: (VIDEO_DM6446_CCDC && VIDEO_DM355_CCDC && VIDEO_DM365_ISIF && VIDEO_OMAP2_VOUT && VIDEO_SH_VOU && VIDEO_VIU && VIDEO_TIMBERDALE && VIDEO_MX1 && VIDEO_OMAP1) selects VIDEOBUF_DMA_CONTIG which has unmet direct dependencies (MEDIA_SUPPORT && HAS_DMA)
drivers/built-in.o: In function `videobuf_vm_close':
videobuf-dma-contig.c:(.text+0x407aa0): undefined reference to `videobuf_queue_cancel'
drivers/built-in.o: In function `__videobuf_dc_alloc':
videobuf-dma-contig.c:(.text+0x407ba2): undefined reference to `dma_alloc_coherent'
drivers/built-in.o: In function `__videobuf_mmap_mapper':
videobuf-dma-contig.c:(.text+0x407d44): undefined reference to `dma_free_coherent'
drivers/built-in.o: In function `free_buffer':
sh_vou.c:(.text+0x41f73a): undefined reference to `videobuf_waiton'
drivers/built-in.o: In function `sh_vou_poll':
sh_vou.c:(.text+0x41f884): undefined reference to `videobuf_poll_stream'
drivers/built-in.o: In function `sh_vou_buf_prepare':
sh_vou.c:(.text+0x41fdf6): undefined reference to `videobuf_iolock'
drivers/built-in.o: In function `sh_vou_reqbufs':
sh_vou.c:(.text+0x4203b0): undefined reference to `videobuf_reqbufs'
drivers/built-in.o: In function `sh_vou_querybuf':
sh_vou.c:(.text+0x42040a): undefined reference to `videobuf_querybuf'
drivers/built-in.o: In function `sh_vou_qbuf':
sh_vou.c:(.text+0x42045e): undefined reference to `videobuf_qbuf'
drivers/built-in.o: In function `sh_vou_dqbuf':
sh_vou.c:(.text+0x4204c2): undefined reference to `videobuf_dqbuf'
drivers/built-in.o: In function `sh_vou_streamon':
sh_vou.c:(.text+0x420572): undefined reference to `videobuf_streamon'
drivers/built-in.o: In function `sh_vou_streamoff':
sh_vou.c:(.text+0x4205d2): undefined reference to `videobuf_streamoff'
drivers/built-in.o: In function `sh_vou_mmap':
sh_vou.c:(.text+0x420c46): undefined reference to `videobuf_mmap_mapper'
VIDEO_SH_VOU selects VIDEOBUF_DMA_CONTIG, which bypasses its dependency on
HAS_DMA. Make VIDEO_SH_VOU depend on HAS_DMA to fix this.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
tree: git://linuxtv.org/media_tree.git master
head: a3550ea665
commit: a3550ea665 [499/499] [media] usbtv: split core and video implementation
reproduce: make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
>> drivers/media/usb/usbtv/usbtv-core.c:119:22: sparse: symbol 'usbtv_id_table' was not declared. Should it be static?
>> drivers/media/usb/usbtv/usbtv-core.c:129:19: sparse: symbol 'usbtv_usb_driver' was not declared. Should it be static?
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
There are two troubles there:
1) the bit error measure were not accumulating;
2) it was missing the bit count.
Fix them.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/dvb-frontends/drx39xyj/drxj.c: In function 'ctrl_get_qam_sig_quality':
drivers/media/dvb-frontends/drx39xyj/drxj.c:9468:6: warning: variable 'ber_cnt' set but not used [-Wunused-but-set-variable]
u32 ber_cnt = 0; /* BER count */
^
By reading the comment, it is said that BER should be calculated as:
qam_pre_rs_ber = frac_times1e6( ber_cnt, rs_bit_cnt );
Also, it makes sense to take the mantissa into account, so fix the
code to do what's commented.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Now that everything is set, let's enable DVBv5 stats, for
applications that support it.
DVBv3 apps will still work.
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>