GitHub/LineageOS/android_kernel_motorola_exynos9610.git
7 years agomedia: uapi book: Fix a few Sphinx warnings
Mauro Carvalho Chehab [Sun, 27 Aug 2017 00:16:51 +0000 (20:16 -0400)]
media: uapi book: Fix a few Sphinx warnings

Solve the following issues:

Documentation/media/uapi/v4l/dev-sliced-vbi.rst:208: ERROR: Content block expected for the "raw" directive; none found.
Documentation/media/uapi/v4l/dev-sliced-vbi.rst:216: ERROR: Content block expected for the "raw" directive; none found.
Documentation/media/uapi/v4l/pixfmt-packed-rgb.rst:645: ERROR: Content block expected for the "raw" directive; none found.

Fixes: 70b074df4ed1 ("media: fix pdf build with Spinx 1.6")
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: smiapp: check memory allocation failure
Christophe JAILLET [Thu, 24 Aug 2017 05:58:39 +0000 (01:58 -0400)]
media: smiapp: check memory allocation failure

Check memory allocation failure and return -ENOMEM in such a case.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: omap3isp: fix uninitialized variable use
Arnd Bergmann [Wed, 23 Aug 2017 13:30:19 +0000 (09:30 -0400)]
media: omap3isp: fix uninitialized variable use

A debug printk statement was copied incorrectly into the new
csi1 parser code and causes a warning there:

drivers/media/platform/omap3isp/isp.c: In function 'isp_probe':
include/linux/dynamic_debug.h:134:3: error: 'i' may be used uninitialized in this function [-Werror=maybe-uninitialized]

Since there is only one lane, the index is never set. This
changes the debug print to always print a zero instead,
keeping the original format of the message.

Fixes: 9211434bad30 ("media: omap3isp: Parse CSI1 configuration from the device tree")

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: fix pdf build with Spinx 1.6
Mauro Carvalho Chehab [Sat, 26 Aug 2017 09:28:26 +0000 (05:28 -0400)]
media: fix pdf build with Spinx 1.6

Sphinx 1.6 generates some LaTeX code before each table,
starting its own environment before calling tabulary,
apparently to improve table layout.

The problem is that such environment is incompatible with
adjustbox. While, in thesis, it should be possible to override
it or to redefine tabulary, I was unable to produce such patch.

Also, that would likely break on some future Sphinx version.

So, instead, let's just change the font size on bigger tables,
in order for them to fit into the page size. That is not as
good as adjustbox, and require some manual work, but it should
be less sensitive to Sphinx changes.

While here, adjust a few other tables whose text is exceeding
the cell boundaries.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: qcom: don't go past the array
Mauro Carvalho Chehab [Sat, 26 Aug 2017 19:34:37 +0000 (15:34 -0400)]
media: qcom: don't go past the array

As reported by smatch:

drivers/media/platform/qcom/camss-8x16/camss-vfe.c:1136 vfe_release_wm() error: buffer overflow 'vfe->wm_output_map' 7 <= 7

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: qcom: mark long long consts as such
Mauro Carvalho Chehab [Sat, 26 Aug 2017 19:33:25 +0000 (15:33 -0400)]
media: qcom: mark long long consts as such

Fix those warnings when building on i386:

drivers/media/platform/qcom/camss-8x16/camss-csiphy.c:333:22: warning: constant 1000000000000 is so big it is long long
drivers/media/platform/qcom/camss-8x16/camss-csiphy.c:339:32: warning: constant 1000000000000 is so big it is long long

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Add abbreviations explanation
Todor Tomov [Fri, 18 Aug 2017 08:16:34 +0000 (04:16 -0400)]
media: camss: Add abbreviations explanation

Add abbreviations explanation at the top header blocks in source files.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: doc: media/v4l-drivers/qcom_camss: Add abbreviations explanation
Todor Tomov [Fri, 18 Aug 2017 08:16:33 +0000 (04:16 -0400)]
media: doc: media/v4l-drivers/qcom_camss: Add abbreviations explanation

Add explanations for VFE's PIX and RDI interfaces.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: doc: media/v4l-drivers: Qualcomm Camera Subsystem - Media graph
Todor Tomov [Tue, 8 Aug 2017 13:30:18 +0000 (09:30 -0400)]
media: doc: media/v4l-drivers: Qualcomm Camera Subsystem - Media graph

Update the Qualcomm Camera Subsystem driver document with a media
controller pipeline graph diagram.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Use optimal clock frequency rates
Todor Tomov [Tue, 8 Aug 2017 13:30:17 +0000 (09:30 -0400)]
media: camss: Use optimal clock frequency rates

Use standard V4L2 control to get pixel clock rate from a sensor
linked in the media controller pipeline. Then calculate clock
rates on CSIPHY, CSID and VFE to use the lowest possible.

If the currnet pixel clock rate of the sensor cannot be read then
use the highest possible. This case covers also the CSID test
generator usage.

If VFE is already powered on by another pipeline, check that the
current VFE clock rate is high enough for the new pipeline.
If not return busy error code as VFE clock rate cannot be changed
while VFE is running.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: doc: media/v4l-drivers: Qualcomm Camera Subsystem - Scale and crop
Todor Tomov [Tue, 8 Aug 2017 13:30:16 +0000 (09:30 -0400)]
media: doc: media/v4l-drivers: Qualcomm Camera Subsystem - Scale and crop

Update the Qualcomm Camera Subsystem driver document for VFE scale
and crop modules support.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: vfe: Configure crop module in VFE
Todor Tomov [Tue, 8 Aug 2017 13:30:15 +0000 (09:30 -0400)]
media: camss: vfe: Configure crop module in VFE

Add crop module configuration support to be able to apply cropping.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: vfe: Add interface for cropping
Todor Tomov [Tue, 8 Aug 2017 13:30:14 +0000 (09:30 -0400)]
media: camss: vfe: Add interface for cropping

Extend selection ioctls to handle cropping configuration.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: vfe: Configure scaler module in VFE
Todor Tomov [Tue, 8 Aug 2017 13:30:13 +0000 (09:30 -0400)]
media: camss: vfe: Configure scaler module in VFE

Add scaler module configuration support to be able to apply scaling.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: vfe: Add interface for scaling
Todor Tomov [Tue, 8 Aug 2017 13:30:12 +0000 (09:30 -0400)]
media: camss: vfe: Add interface for scaling

Add compose selection ioctls to handle scaling configuration.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: vfe: Support for frame padding
Todor Tomov [Tue, 8 Aug 2017 13:30:11 +0000 (09:30 -0400)]
media: camss: vfe: Support for frame padding

Add support for horizontal and vertical frame padding.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: doc: media/v4l-drivers: Qualcomm Camera Subsystem - PIX Interface
Todor Tomov [Tue, 8 Aug 2017 13:30:10 +0000 (09:30 -0400)]
media: doc: media/v4l-drivers: Qualcomm Camera Subsystem - PIX Interface

Update Qualcomm Camera Subsystem driver document for the PIX interface
and format conversion support.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: vfe: Format conversion support using PIX interface
Todor Tomov [Tue, 8 Aug 2017 13:30:09 +0000 (09:30 -0400)]
media: camss: vfe: Format conversion support using PIX interface

Use VFE PIX input interface and do format conversion in VFE.

Supported input format is UYVY (single plane YUV 4:2:2) and
its different sample order variations.

Supported output formats are:
- NV12/NV21 (two plane YUV 4:2:0)
- NV16/NV61 (two plane YUV 4:2:2)

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Enable building
Todor Tomov [Tue, 8 Aug 2017 13:30:08 +0000 (09:30 -0400)]
media: camss: Enable building

Add Makefile and update platform/Kconfig and platform/Makefile
to enable building of the QCom CAMSS driver.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camms: Add core files
Todor Tomov [Tue, 8 Aug 2017 13:30:07 +0000 (09:30 -0400)]
media: camms: Add core files

These files implement the platform driver code.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Add files which handle the video device nodes
Todor Tomov [Tue, 8 Aug 2017 13:30:06 +0000 (09:30 -0400)]
media: camss: Add files which handle the video device nodes

These files handle the video device nodes of the camss driver.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Add VFE files
Todor Tomov [Tue, 8 Aug 2017 13:30:05 +0000 (09:30 -0400)]
media: camss: Add VFE files

These files control the VFE module. The VFE has different input
interfaces. The PIX input interface feeds the input data to an image
processing pipeline. Three RDI input interfaces bypass the image
processing pipeline. The VFE also contains the AXI bus interface which
writes the output data to memory.

RDI interfaces are supported in this version. PIX interface is not
supported.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Add ISPIF files
Todor Tomov [Tue, 8 Aug 2017 13:30:04 +0000 (09:30 -0400)]
media: camss: Add ISPIF files

These files control the ISPIF module which handles the routing of the data
streams from the CSIDs to the inputs of the VFE.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Add CSID files
Todor Tomov [Tue, 8 Aug 2017 13:30:03 +0000 (09:30 -0400)]
media: camss: Add CSID files

These files control the CSID modules which handle the protocol and
application layer of the CSI2 receivers.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: camss: Add CSIPHY files
Todor Tomov [Tue, 8 Aug 2017 13:30:02 +0000 (09:30 -0400)]
media: camss: Add CSIPHY files

These files control the CSIPHY modules which are responsible for the
physical layer of the CSI2 receivers.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: doc: media/v4l-drivers: Add Qualcomm Camera Subsystem driver document
Todor Tomov [Tue, 8 Aug 2017 13:30:01 +0000 (09:30 -0400)]
media: doc: media/v4l-drivers: Add Qualcomm Camera Subsystem driver document

Add a document to describe Qualcomm Camera Subsystem driver.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: MAINTAINERS: Add Qualcomm Camera subsystem driver
Todor Tomov [Tue, 8 Aug 2017 13:30:00 +0000 (09:30 -0400)]
media: MAINTAINERS: Add Qualcomm Camera subsystem driver

Add an entry for Qualcomm Camera subsystem driver.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: dt-bindings: media: Binding document for Qualcomm Camera subsystem driver
Todor Tomov [Tue, 8 Aug 2017 13:29:59 +0000 (09:29 -0400)]
media: dt-bindings: media: Binding document for Qualcomm Camera subsystem driver

Add DT binding document for Qualcomm Camera subsystem driver.

CC: Rob Herring <robh+dt@kernel.org>
CC: devicetree@vger.kernel.org
Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: v4l: Add packed Bayer raw12 pixel formats
Sakari Ailus [Tue, 8 Aug 2017 13:29:58 +0000 (09:29 -0400)]
media: v4l: Add packed Bayer raw12 pixel formats

These formats are compressed 12-bit raw bayer formats with four different
pixel orders. They are similar to 10-bit variants. The formats added by
this patch are

V4L2_PIX_FMT_SBGGR12P
V4L2_PIX_FMT_SGBRG12P
V4L2_PIX_FMT_SGRBG12P
V4L2_PIX_FMT_SRGGB12P

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: venus: fix copy/paste error in return_buf_error
Gustavo A. R. Silva [Fri, 18 Aug 2017 16:07:19 +0000 (12:07 -0400)]
media: venus: fix copy/paste error in return_buf_error

Call function v4l2_m2m_dst_buf_remove_by_buf() instead of
v4l2_m2m_src_buf_remove_by_buf()

Addresses-Coverity-ID: 1415317

Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Cc: <stable@vger.kernel.org> # for v4.13
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: em28xx: calculate left volume level correctly
Colin Ian King [Tue, 22 Aug 2017 14:21:20 +0000 (10:21 -0400)]
media: em28xx: calculate left volume level correctly

The calculation of the left volume looks suspect, the value of
0x1f - ((val << 8) & 0x1f) is always 0x1f. The debug prior to the
assignment of value[1] prints the left volume setting using the
calculation 0x1f - (val >> 8) & 0x1f which looks correct to me.
Fix the left volume by using the correct expression as used in
the debug.

Detected by CoverityScan, CID#146140 ("Wrong operator used")

Fixes: 850d24a5a861 ("[media] em28xx-alsa: add mixer support for AC97 volume controls")

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: platform: constify videobuf_queue_ops structures
Arvind Yadav [Tue, 22 Aug 2017 12:56:35 +0000 (08:56 -0400)]
media: platform: constify videobuf_queue_ops structures

videobuf_queue_ops are not supposed to change at runtime. All functions
working with videobuf_queue_ops provided by <media/videobuf-core.h> work
with const videobuf_queue_ops. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: pci: constify videobuf_queue_ops structures
Arvind Yadav [Tue, 22 Aug 2017 12:56:34 +0000 (08:56 -0400)]
media: pci: constify videobuf_queue_ops structures

videobuf_queue_ops are not supposed to change at runtime. All functions
working with videobuf_queue_ops provided by <media/videobuf-core.h> work
with const videobuf_queue_ops. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: saa7146: constify videobuf_queue_ops structures
Arvind Yadav [Tue, 22 Aug 2017 12:56:33 +0000 (08:56 -0400)]
media: saa7146: constify videobuf_queue_ops structures

videobuf_queue_ops are not supposed to change at runtime. All functions
working with videobuf_queue_ops provided by <media/videobuf-core.h> work
with const videobuf_queue_ops. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: cx18: Make i2c_algo_bit_data const
Bhumika Goyal [Mon, 21 Aug 2017 13:35:50 +0000 (09:35 -0400)]
media: cx18: Make i2c_algo_bit_data const

Make this const as it is only used in a copy operation.

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: bt8xx: Make i2c_algo_bit_data const
Bhumika Goyal [Mon, 21 Aug 2017 13:33:32 +0000 (09:33 -0400)]
media: bt8xx: Make i2c_algo_bit_data const

Make this const as it is only used in a copy operation.

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: venus: venc: set correct resolution on compressed stream
Stanimir Varbanov [Fri, 18 Aug 2017 14:16:01 +0000 (10:16 -0400)]
media: venus: venc: set correct resolution on compressed stream

This change the alignment restriction for output type of buffers
only, also set corect input resolution and fill bidirectional
vb2 queue flag in order to map output type buffers read/write.
The last is needed by encoder firmware to add padding at the
bottom of output (input buffers).

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: vb2: add bidirectional flag in vb2_queue
Stanimir Varbanov [Mon, 21 Aug 2017 11:34:10 +0000 (07:34 -0400)]
media: vb2: add bidirectional flag in vb2_queue

This change is intended to give to the v4l2 drivers a choice to
change the default behavior of the v4l2-core DMA mapping direction
from DMA_TO/FROM_DEVICE (depending on the buffer type CAPTURE or
OUTPUT) to DMA_BIDIRECTIONAL during queue_init time.

Initially the issue with DMA mapping direction has been found in
Venus encoder driver where the hardware (firmware side) adds few
lines padding on bottom of the image buffer, and the consequence
is triggering of IOMMU protection faults.

This will help supporting venus encoder (and probably other drivers
in the future) which wants to map output type of buffers as
read/write.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Acked-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: stm32-dcmi: g_/s_selection crop support
Hugues Fruchet [Tue, 22 Aug 2017 14:41:11 +0000 (10:41 -0400)]
media: stm32-dcmi: g_/s_selection crop support

Implements g_/s_selection crop support by using DCMI crop
hardware feature.
User can first get the maximum supported resolution of the sensor
by calling g_selection(V4L2_SEL_TGT_CROP_BOUNDS).
Then user call to s_selection(V4L2_SEL_TGT_CROP) will reset sensor
to its maximum resolution and crop request is saved for later usage
in s_fmt().
Next call to s_fmt() will check if sensor can do frame size request
with crop request. If sensor supports only discrete frame sizes,
the frame size which is larger than user request is selected in
order to be able to match the crop request. Then s_fmt() resolution
user request is adjusted to match crop request resolution.

Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: stm32-dcmi: cleanup variable/fields namings
Hugues Fruchet [Tue, 22 Aug 2017 14:41:10 +0000 (10:41 -0400)]
media: stm32-dcmi: cleanup variable/fields namings

Uniformize "pixfmt" variables to "pix".
Change "current_fmt" & "dcmi_fmt" variables to variables
with "sd_" prefix to explicitly refer to subdev format.

Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: stm32-dcmi: revisit control register handling
Hugues Fruchet [Tue, 22 Aug 2017 14:41:09 +0000 (10:41 -0400)]
media: stm32-dcmi: revisit control register handling

Simplify bits handling of DCMI_CR register.

Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: stm32-dcmi: catch dma submission error
Hugues Fruchet [Tue, 22 Aug 2017 14:41:08 +0000 (10:41 -0400)]
media: stm32-dcmi: catch dma submission error

Test cookie return by dmaengine_submit() and return error if any.

Signed-off-by: Hugues Fruchet <hugues.fruchet@st.com>
Signed-off-by: Hans Verkuil <hansverk@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: v4l: fwnode: Use a less clash-prone name for MAX_DATA_LANES macro
Sakari Ailus [Mon, 14 Aug 2017 10:43:07 +0000 (06:43 -0400)]
media: v4l: fwnode: Use a less clash-prone name for MAX_DATA_LANES macro

Avoid using a generic name such as MAX_DATA_LANES in a header file widely
included in drivers. Instead, call it V4L2_FWNODE_CSI2_MAX_DATA_LANES.

Fixes: 4ee236219f6d ("media: v4l2-fwnode: suppress a warning at OF parsing logic")

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: v4l: fwnode: The clock lane is the first lane in lane_polarities
Sakari Ailus [Mon, 14 Aug 2017 10:22:14 +0000 (06:22 -0400)]
media: v4l: fwnode: The clock lane is the first lane in lane_polarities

The clock lane is the first lane in the lane_polarities array. Reflect this
consistently by putting the number of data lanes after the number of clock
lanes.

Fixes: 4ee236219f6d ("media: v4l2-fwnode: suppress a warning at OF parsing logic")

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: v4l: fwnode: Fix lane-polarities property parsing
Sakari Ailus [Mon, 14 Aug 2017 10:15:21 +0000 (06:15 -0400)]
media: v4l: fwnode: Fix lane-polarities property parsing

fwnode_property_read_u32_array() only returns the number of array elements
if the array argument is NULL. The assumption that it always did so lead to
lane-polarities properties never being read.

Fixes: 4ee236219f6d ("media: v4l2-fwnode: suppress a warning at OF parsing logic")

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: dw9714: Remove ACPI match tables, convert to use probe_new
Sakari Ailus [Tue, 15 Aug 2017 09:08:52 +0000 (05:08 -0400)]
media: dw9714: Remove ACPI match tables, convert to use probe_new

The ACPI match table is empty. Remove it.

Also convert the drive to use probe_new callback in struct i2c_driver.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: dw9714: Add Devicetree support
Sakari Ailus [Tue, 15 Aug 2017 09:06:59 +0000 (05:06 -0400)]
media: dw9714: Add Devicetree support

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: dt-bindings: Add bindings for Dongwoon DW9714 voice coil
Sakari Ailus [Tue, 15 Aug 2017 09:03:39 +0000 (05:03 -0400)]
media: dt-bindings: Add bindings for Dongwoon DW9714 voice coil

Dongwoon DW9714 is a voice coil lens driver.

Also add a vendor prefix for Dongwoon for one did not exist previously.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: venus: venc: drop VP9 codec support
Stanimir Varbanov [Fri, 18 Aug 2017 14:16:06 +0000 (10:16 -0400)]
media: venus: venc: drop VP9 codec support

No one of the supported Venus version has implemented VP9 codec
for enconding, so drop it from the list of codecs.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: venus: use helper function to check supported codecs
Stanimir Varbanov [Fri, 18 Aug 2017 14:16:05 +0000 (10:16 -0400)]
media: venus: use helper function to check supported codecs

Use the helper function in decoder and encoder find_format
to runtime check supported codecs.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: venus: add helper to check supported codecs
Stanimir Varbanov [Fri, 18 Aug 2017 14:16:04 +0000 (10:16 -0400)]
media: venus: add helper to check supported codecs

Adds a helper function to runtime check supported encoder and
decoder codecs depending on venus version and platform.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: venus: fill missing video_device name
Stanimir Varbanov [Fri, 18 Aug 2017 14:16:03 +0000 (10:16 -0400)]
media: venus: fill missing video_device name

This fills missing (forgotten) video device name with
appropriate string so that udev can distinguishes between
decoder and encoder devices.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: venus: mark venc and vdec PM functions as __maybe_unused
Stanimir Varbanov [Fri, 18 Aug 2017 14:16:02 +0000 (10:16 -0400)]
media: venus: mark venc and vdec PM functions as __maybe_unused

Without PM support gcc could warns about unused functions, thus
mark runtime_suspend/resume as __maybe_unused.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: ths8200: constify i2c_device_id
Arvind Yadav [Sat, 19 Aug 2017 19:20:47 +0000 (15:20 -0400)]
media: ths8200: constify i2c_device_id

i2c_device_id are not supposed to change at runtime. All functions
working with i2c_device_id provided by <linux/i2c.h> work with
const i2c_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: tc358743: constify i2c_device_id
Arvind Yadav [Sat, 19 Aug 2017 19:20:46 +0000 (15:20 -0400)]
media: tc358743: constify i2c_device_id

i2c_device_id are not supposed to change at runtime. All functions
working with i2c_device_id provided by <linux/i2c.h> work with
const i2c_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: saa7127: constify i2c_device_id
Arvind Yadav [Sat, 19 Aug 2017 19:20:45 +0000 (15:20 -0400)]
media: saa7127: constify i2c_device_id

i2c_device_id are not supposed to change at runtime. All functions
working with i2c_device_id provided by <linux/i2c.h> work with
const i2c_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: adv7842: constify i2c_device_id
Arvind Yadav [Sat, 19 Aug 2017 19:20:44 +0000 (15:20 -0400)]
media: adv7842: constify i2c_device_id

i2c_device_id are not supposed to change at runtime. All functions
working with i2c_device_id provided by <linux/i2c.h> work with
const i2c_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: adv7511: constify i2c_device_id
Arvind Yadav [Sat, 19 Aug 2017 19:20:43 +0000 (15:20 -0400)]
media: adv7511: constify i2c_device_id

i2c_device_id are not supposed to change at runtime. All functions
working with i2c_device_id provided by <linux/i2c.h> work with
const i2c_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: ad9389b: constify i2c_device_id
Arvind Yadav [Sat, 19 Aug 2017 19:20:42 +0000 (15:20 -0400)]
media: ad9389b: constify i2c_device_id

i2c_device_id are not supposed to change at runtime. All functions
working with i2c_device_id provided by <linux/i2c.h> work with
const i2c_device_id. So mark the non-const structs as const.

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: usb: make i2c_adapter const
Bhumika Goyal [Sat, 19 Aug 2017 10:34:15 +0000 (06:34 -0400)]
media: usb: make i2c_adapter const

Make these const as they are only used in a copy operation.
Done using Coccinelle

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Acked-by: Mike Isely <isely@pobox.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: radio-usb-si4713: make i2c_adapter const
Bhumika Goyal [Sat, 19 Aug 2017 10:34:14 +0000 (06:34 -0400)]
media: radio-usb-si4713: make i2c_adapter const

Make this const as it is only used in a copy operation.
Done using Coccinelle

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: pci: make i2c_adapter const
Bhumika Goyal [Sat, 19 Aug 2017 10:34:13 +0000 (06:34 -0400)]
media: pci: make i2c_adapter const

Make these const as they are only used in a copy operation.
Done using Coccinelle

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: i2c: make device_type const
Bhumika Goyal [Sat, 19 Aug 2017 08:22:14 +0000 (04:22 -0400)]
media: i2c: make device_type const

Make this const as it is only stored in the type field of a device
structure, which is const.
Done using Coccinelle.

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: usb: make i2c_algorithm const
Bhumika Goyal [Fri, 18 Aug 2017 16:06:58 +0000 (12:06 -0400)]
media: usb: make i2c_algorithm const

Make these const as they are only used in a copy operation or
are stored in the algo field of i2c_adapter structure, which is const.

Signed-off-by: Bhumika Goyal <bhumirks@gmail.com>
Acked-by: Mike Isely <isely@pobox.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: stm32-cec: use CEC_CAP_DEFAULTS
Hans Verkuil [Fri, 4 Aug 2017 10:41:55 +0000 (06:41 -0400)]
media: stm32-cec: use CEC_CAP_DEFAULTS

Use the new CEC_CAP_DEFAULTS define in this driver.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: stih-cec: use CEC_CAP_DEFAULTS
Hans Verkuil [Fri, 4 Aug 2017 10:41:54 +0000 (06:41 -0400)]
media: stih-cec: use CEC_CAP_DEFAULTS

Use the new CEC_CAP_DEFAULTS define in this driver.
This also adds the CEC_CAP_RC capability which was missing here
(and this is also the reason for this new define, to avoid missing
such capabilities).

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: vivid: fix incorrect HDMI input/output CEC logging
Hans Verkuil [Sun, 20 Aug 2017 11:39:42 +0000 (07:39 -0400)]
media: vivid: fix incorrect HDMI input/output CEC logging

Only the first HDMI input has a CEC adapter, so just report 'HDMI 0' as
the HDMI input name.

For the HDMI outputs use bus_cnt instead of i as the output number.
The HDMI name now corresponds to what 'v4l2-ctl --list-outputs' reports.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: vivid: add CEC pin monitoring emulation
Hans Verkuil [Sun, 20 Aug 2017 11:15:25 +0000 (07:15 -0400)]
media: vivid: add CEC pin monitoring emulation

Add support to emulate CEC pin monitoring. There are few hardware devices
that support this, so being able to emulate it here helps developing
software for this.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: cec: replace pin->cur_value by adap->cec_pin_is_high
Hans Verkuil [Sun, 20 Aug 2017 10:53:10 +0000 (06:53 -0400)]
media: cec: replace pin->cur_value by adap->cec_pin_is_high

The current CEC pin value (0 or 1) was part of the cec_pin struct,
but that assumes that CEC pin monitoring can only be used with
a driver that uses the low-level CEC pin framework.

But hardware that has both a high-level API and can monitor the
CEC pin at low-level at the same time does not need to depend on
the cec pin framework.

To support such devices remove the cur_value field from struct cec_pin
and add a cec_pin_is_high field to cec_adapter. This also makes it
possible to drop the '#ifdef CONFIG_CEC_PIN' in cec-api.c.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: cec: ensure that adap_enable(false) is called from cec_delete_adapter()
Hans Verkuil [Sun, 20 Aug 2017 11:41:41 +0000 (07:41 -0400)]
media: cec: ensure that adap_enable(false) is called from cec_delete_adapter()

When the adapter is removed the cec_delete_adapter() call attempts
to set the physical address to INVALID by calling __cec_s_phys_addr()
and so disabling the adapter.

However, __cec_s_phys_addr checks if the device node was unregistered
and just returns in that case.

This means that the adap_enable callback is never called with 'false'
to disable the CEC adapter. Most drivers don't care, but some need
to do cleanup here.

Change the test so the adapter is correctly disabled, even when the
device node is unregistered.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: ddbridge: fix semicolon.cocci warnings
Fengguang Wu [Sun, 20 Aug 2017 14:17:15 +0000 (10:17 -0400)]
media: ddbridge: fix semicolon.cocci warnings

drivers/media/pci/ddbridge/ddbridge-maxs8.c:145:2-3: Unneeded semicolon
drivers/media/pci/ddbridge/ddbridge-maxs8.c:173:2-3: Unneeded semicolon

 Remove unneeded semicolon.

Generated by: scripts/coccinelle/misc/semicolon.cocci

Fixes: a43dbe430fb4 ("media: ddbridge: support MaxLinear MXL5xx based cards (MaxS4/8)")

CC: Daniel Scheller <d.scheller@gmx.net>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: isl6421: add checks for current overflow
Jemma Denson [Sat, 19 Aug 2017 11:38:26 +0000 (07:38 -0400)]
media: isl6421: add checks for current overflow

This Kaffeine's BZ:
https://bugs.kde.org/show_bug.cgi?id=374693

affects SkyStar S2 PCI DVB-S/S2 rev 3.3 device. It could be due to
a Kernel bug.

While checking the Isil 6421, comparing with its manual, available at:

http://www.intersil.com/content/dam/Intersil/documents/isl6/isl6421a.pdf

It was noticed that, if the output load is highly capacitive, a different approach
is recomended when energizing the LNBf.

Also, it is possible to detect if a current overload is happening, by checking an
special flag.

Add support for it.

Tested on Skystar S2. Changes respect override_or option so should still work fine
on cx88 based cards which disable dynamic current limit.

Changes since v1:
v2 - fixed incorrect checking of i2c return values
v3 - fix if logic to check if dcl needs re-enabling
   - respect override_or values which aim to disable dcl
   - only do long sleep on overload if dcl enabled
   - add short sleep before re-enabling dcl
   - only check overload and potentially return EINVAL if device is on
v4 - revert v3 sleep logic changes to remove tuning delays

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Jemma Denson <jdenson@gmail.com>
7 years agomedia: stv6111: return NULL instead of plain integer
Daniel Scheller [Sun, 20 Aug 2017 12:59:12 +0000 (08:59 -0400)]
media: stv6111: return NULL instead of plain integer

Fixes:
  stv6111.c:665:24: warning: Using plain integer as NULL pointer

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: stv0910: declare global list_head stvlist static
Daniel Scheller [Sun, 20 Aug 2017 12:59:11 +0000 (08:59 -0400)]
media: stv0910: declare global list_head stvlist static

Cleans up smatch warning:
symbol 'stvlist' was not declared. Should it be static?

Patch originally submitted by Colin Ian King <colin.king@canonical.com>,
remainder after the merge of all other stv0910 fixes.

Cc: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_*
Sean Young [Mon, 7 Aug 2017 20:20:58 +0000 (16:20 -0400)]
media: rc: rename RC_TYPE_* to RC_PROTO_* and RC_BIT_* to RC_PROTO_BIT_*

RC_TYPE is confusing and it's just the protocol. So rename it.

Suggested-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Sean Young <sean@mess.org>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: cec: fix remote control passthrough
Hans Verkuil [Mon, 7 Aug 2017 13:31:24 +0000 (09:31 -0400)]
media: cec: fix remote control passthrough

The 'Press and Hold' operation was not correctly implemented, in
particular the requirement that the repeat doesn't start until
the second identical keypress arrives. The REP_DELAY value also
had to be adjusted (see the comment in the code) to achieve the
desired behavior.

The 'enabled_protocols' field was also never set, fix that too. Since
CEC is a fixed protocol the driver has to set this field.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: per-protocol repeat period
Sean Young [Wed, 9 Aug 2017 17:19:16 +0000 (13:19 -0400)]
media: rc: per-protocol repeat period

CEC needs a keypress timeout of 550ms, which is too high for the IR
protocols. Also fill in known repeat times, with 50ms error margin.

Also, combine all protocol data into one structure.

Signed-off-by: Sean Young <sean@mess.org>
Suggested-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: saa7134: raw decoder can support any protocol
Sean Young [Mon, 7 Aug 2017 19:54:51 +0000 (15:54 -0400)]
media: rc: saa7134: raw decoder can support any protocol

Any protocol for which we have a software decoder, can be enabled. Without
this only the loaded protocol decoders can be selected.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: ensure we do not read out of bounds
Sean Young [Mon, 7 Aug 2017 13:21:29 +0000 (09:21 -0400)]
media: rc: ensure we do not read out of bounds

If rc_validate_filter() is called for CEC or XMP, then we would read
beyond the end of the array.

Suggested-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: simplify ir_raw_event_store_edge()
Sean Young [Mon, 7 Aug 2017 12:38:10 +0000 (08:38 -0400)]
media: rc: simplify ir_raw_event_store_edge()

Since commit 12749b198fa4 ("[media] rc: saa7134: add trailing space for
timely decoding"), the workaround of inserting reset events is no
longer needed.

Note that the initial reset is not needed either; other rc-core drivers
that don't use ir_raw_event_store_edge() never call this at all.

Verified on a HVR-1150 and Raspberry Pi.

Fixes: 3f5c4c73322e ("[media] rc: fix ghost keypresses with certain hw")

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: saa7134: add trailing space for timely decoding
Sean Young [Mon, 7 Aug 2017 12:30:18 +0000 (08:30 -0400)]
media: rc: saa7134: add trailing space for timely decoding

The gpio-ir-recv driver adds timeouts which the saa7134 lacks; this
causes keypress not to arrive, and to only arrive once more IR is
received. This is what the commit below calls "ghost keypresses",
and that commit does not solve the issue completely.

This makes the IR on the HVR-1150 much more reliable and responsive.

Fixes: 3f5c4c73322e ("[media] rc: fix ghost keypresses with certain hw")

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc-core: improve ir_raw_store_edge() handling
Sean Young [Sun, 6 Aug 2017 19:25:52 +0000 (15:25 -0400)]
media: rc-core: improve ir_raw_store_edge() handling

The gpio-ir-recv driver does many wakeups (once per edge); the saa7134
driver has special handling to only wakeup 15ms after the first edge.
Make this part of rc-core so gpio-ir-recv also benefits from
this (so a rc-5 keypress now causes 3 wakeups rather than 24).

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: winbond-cir: buffer overrun during transmit
Sean Young [Fri, 4 Aug 2017 10:33:41 +0000 (06:33 -0400)]
media: winbond-cir: buffer overrun during transmit

We're reading beyond the buffer before checking its length.

BUG: KASAN: slab-out-of-bounds in wbcir_irq_tx

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: mceusb: do not read data parameters unless required
Sean Young [Fri, 4 Aug 2017 09:30:20 +0000 (05:30 -0400)]
media: mceusb: do not read data parameters unless required

This causes out-of-bounds read on device probe.

BUG: KASAN: slab-out-of-bounds in mceusb_dev_printdata+0xdc/0x830 [mceusb]

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: lirc_zilog: driver only sends LIRCCODE
Sean Young [Thu, 3 Aug 2017 21:42:28 +0000 (17:42 -0400)]
media: lirc_zilog: driver only sends LIRCCODE

This driver cannot send pulse, it only accepts driver-dependent codes.

Cc: <stable@vger.kernel.org> # v3.2
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: add zx-irdec remote control driver
Shawn Guo [Sun, 30 Jul 2017 13:23:13 +0000 (09:23 -0400)]
media: rc: add zx-irdec remote control driver

It adds the remote control driver and corresponding keymap file for
IRDEC block found on ZTE ZX family SoCs.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: dt-bindings: add bindings document for zx-irdec
Shawn Guo [Sun, 30 Jul 2017 13:23:12 +0000 (09:23 -0400)]
media: dt-bindings: add bindings document for zx-irdec

It adds the dt-bindings document for ZTE ZX IRDEC remote control
block.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: ir-nec-decoder: move scancode composing code into a shared function
Shawn Guo [Sun, 30 Jul 2017 13:23:11 +0000 (09:23 -0400)]
media: rc: ir-nec-decoder: move scancode composing code into a shared function

The NEC scancode composing and protocol type detection in
ir_nec_decode() is generic enough to be a shared function.  Let's create
an inline function in rc-core.h, so that other remote control drivers
can reuse this function to save some code.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: sunxi-cir: explicitly request exclusive reset control
Philipp Zabel [Wed, 19 Jul 2017 15:25:41 +0000 (11:25 -0400)]
media: rc: sunxi-cir: explicitly request exclusive reset control

Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting
reset lines") started to transition the reset control request API calls
to explicitly state whether the driver needs exclusive or shared reset
control behavior. Convert all drivers requesting exclusive resets to the
explicit API call so the temporary transition helpers can be removed.

No functional changes.

Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: st-rc: explicitly request exclusive reset control
Philipp Zabel [Wed, 19 Jul 2017 15:25:39 +0000 (11:25 -0400)]
media: st-rc: explicitly request exclusive reset control

Commit a53e35db70d1 ("reset: Ensure drivers are explicit when requesting
reset lines") started to transition the reset control request API calls
to explicitly state whether the driver needs exclusive or shared reset
control behavior. Convert all drivers requesting exclusive resets to the
explicit API call so the temporary transition helpers can be removed.

No functional changes.

Cc: Patrice Chotard <patrice.chotard@st.com>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: nuvoton: remove rudimentary transmit functionality
Heiner Kallweit [Sat, 15 Jul 2017 21:13:14 +0000 (17:13 -0400)]
media: rc: nuvoton: remove rudimentary transmit functionality

Transmit support in this driver was never tested and based on the code
it can't work. Just one example:
The buffer provided to nvt_tx_ir holds unsigned int values in
micro seconds: First value is for a pulse, second for a pause, etc.
Bytes in this buffer are copied as-is to the chip FIFO what can't work
as the chip-internal format is totally different. See also conversion
done in nvt_process_rx_ir_data.

Even if we would try to fix this we have the issue that we can't test
it. There seems to be no device on the market using IR transmit with
one of the chips supported by this driver.

To facilitate maintenance of the driver I'd propose to remove the
rudimentary transmit support.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: lirc_zilog: Clean up lirc zilog error codes
Yves Lemée [Wed, 12 Jul 2017 19:17:37 +0000 (15:17 -0400)]
media: lirc_zilog: Clean up lirc zilog error codes

According the coding style guidelines, the ENOSYS error code must be
returned in case of a non existent system call. This code has been
replaced with the ENOTTY error code indicating a missing functionality.

Signed-off-by: Yves Lemée <yves.lemee.kernel@gmail.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: dt-bindings: gpio-ir-tx: add support for GPIO IR Transmitter
Sean Young [Tue, 11 Jul 2017 11:52:41 +0000 (07:52 -0400)]
media: dt-bindings: gpio-ir-tx: add support for GPIO IR Transmitter

Document the device tree bindings for the GPIO IR Bit Banging
Transmitter.

Signed-off-by: Sean Young <sean@mess.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: dt-bindings: pwm-ir-tx: Add support for PWM IR Transmitter
Sean Young [Fri, 7 Jul 2017 09:52:04 +0000 (05:52 -0400)]
media: dt-bindings: pwm-ir-tx: Add support for PWM IR Transmitter

Document the device tree bindings for the PWM IR Transmitter.

Signed-off-by: Sean Young <sean@mess.org>
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: pwm-ir-tx: add new driver
Sean Young [Fri, 7 Jul 2017 09:52:02 +0000 (05:52 -0400)]
media: rc: pwm-ir-tx: add new driver

This is new driver which uses pwm, so it is more power-efficient
than the bit banging gpio-ir-tx driver.

Signed-off-by: Sean Young <sean@mess.org>
Reviewed-by: Pavel Machek <pavel@ucw.cz>
Tested-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: gpio-ir-tx: add new driver
Sean Young [Fri, 7 Jul 2017 09:51:59 +0000 (05:51 -0400)]
media: rc: gpio-ir-tx: add new driver

This is a simple bit-banging GPIO IR TX driver.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Matthias Reichl <hias@horus.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: mce kbd decoder not needed for IR TX drivers
Sean Young [Sat, 1 Jul 2017 19:11:56 +0000 (15:11 -0400)]
media: rc: mce kbd decoder not needed for IR TX drivers

Without this patch, an input device is created which is not necessary.

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc-core: rename input_name to device_name
Sean Young [Sat, 1 Jul 2017 16:13:19 +0000 (12:13 -0400)]
media: rc-core: rename input_name to device_name

When an ir-spi is registered, you get this message.

rc rc0: Unspecified device as /devices/platform/soc/3f215080.spi/spi_master/spi32766/spi32766.128/rc/rc0

"Unspecified device" refers to input_name, which makes no sense for IR
TX only devices. So, rename to device_name.

Also make driver_name const char* so that no casts are needed anywhere.

Now ir-spi reports:

rc rc0: IR SPI as /devices/platform/soc/3f215080.spi/spi_master/spi32766/spi32766.128/rc/rc0

Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: rc: constify attribute_group structures
Arvind Yadav [Fri, 7 Jul 2017 08:23:54 +0000 (04:23 -0400)]
media: rc: constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
  11605     880      20   12505    30d9 drivers/media/rc/rc-main.o

File size After adding 'const':
   text    data     bss     dec     hex filename
  11797     720      20   12537    30f9 drivers/media/rc/rc-main.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
7 years agomedia: imon: constify attribute_group structures
Arvind Yadav [Fri, 7 Jul 2017 08:15:12 +0000 (04:15 -0400)]
media: imon: constify attribute_group structures

attribute_groups are not supposed to change at runtime. All functions
working with attribute_groups provided by <linux/sysfs.h> work with const
attribute_group. So mark the non-const structs as const.

File size before:
   text    data     bss     dec     hex filename
  18551    2256      77   20884    5194 drivers/media/rc/imon.o

File size After adding 'const':
   text    data     bss     dec     hex filename
  18679    2160      77   20916    51b4 drivers/media/rc/imon.o

Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>