20 Jun, 2017

40 commits

  • As reported by gcc:

    drivers/media/i2c/ov13858.c:953:20: warning: duplicate const
    drivers/media/i2c/ov13858.c:953:14: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]
    static const const s64 link_freq_menu_items[OV13858_NUM_OF_LINK_FREQS] = {
    ^~~~~

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • There is no need to split long string literals.
    Join them back.

    No functional change intended.

    Signed-off-by: Andy Shevchenko
    Signed-off-by: Sakari Ailus
    Signed-off-by: Mauro Carvalho Chehab

    Andy Shevchenko
     
  • DW9714 is a 10 bit DAC, designed for linear
    control of voice coil motor.

    This driver creates a V4L2 subdevice and
    provides control to set the desired focus.

    [Sakari Ailus: Add MAINTAINERS entry.]

    Signed-off-by: Rajmohan Mani
    Signed-off-by: Sakari Ailus
    Signed-off-by: Mauro Carvalho Chehab

    Rajmohan Mani
     
  • This patch adds driver for Omnivision's ov13858
    sensor, the driver supports following features:

    - manual exposure/gain(analog and digital) control support
    - two link frequencies
    - VBLANK/HBLANK support
    - test pattern support
    - media controller support
    - runtime pm support
    - supported resolutions
    + 4224x3136 at 30FPS
    + 2112x1568 at 30FPS(default) and 60FPS
    + 2112x1188 at 30FPS(default) and 60FPS
    + 1056x784 at 30FPS(default) and 60FPS

    [Sakari Ailus: use V4L2_CID_DIGITAL_GAIN instead, add MAINTAINERS entry.]

    Signed-off-by: Hyungwoo Yang
    Signed-off-by: Sakari Ailus
    Signed-off-by: Mauro Carvalho Chehab

    Hyungwoo Yang
     
  • Elaborate the differences between V4L2_CID_GAIN and gain-type specific
    V4L2_CID_DIGITAL_GAIN and V4L2_CID_ANALOGUE_GAIN.

    Signed-off-by: Sakari Ailus
    Acked-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Sakari Ailus
     
  • Add V4L2_CID_DIGITAL_GAIN to control explicitly digital gain.

    We already have analogue gain control which the digital gain control
    complements. Typically higher quality images are obtained using analogue
    gain only as the digital gain does not add information to the image
    (rather it may remove it).

    Signed-off-by: Sakari Ailus
    Acked-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Sakari Ailus
     
  • Add maintainer entry for the imx-media driver.

    Signed-off-by: Steve Longerbeam
    Acked-by: Philipp Zabel
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Calling S_STREAM OFF multiple times on a video device is valid, although
    dubious, practice. Instead of warning about it and setting stream count
    lower than zero, just ignore the subsequent S_STREAM calls and correct
    the stream count to zero.

    Signed-off-by: Marek Vasut
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Marek Vasut
     
  • This patch adds a call to imx_media_fill_default_mbus_fields() in the
    *_try_fmt() functions at the sink pads, to set empty field order and
    colorimetry parameters.

    If the field order is set to ANY, choose the currently set field order
    at the sink pad. If the colorspace is set to DEFAULT, choose the
    current colorspace at the sink pad. If any of xfer_func, ycbcr_enc
    or quantization are set to DEFAULT, either choose the current sink pad
    setting, or the default setting for the new colorspace, if non-DEFAULT
    colorspace was given.

    If a format is destined to be routed through the Image Converter,
    fixed quantization and Y`CbCr encoding must be set.

    Colorimetry is also propagated from sink to source pads anywhere
    this has not already been done.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Philipp Zabel
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add support for enumerating frame sizes and frame intervals from the
    first subdev via the V4L2 interfaces.

    Signed-off-by: Russell King
    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Russell King
     
  • Add frame size and frame interval enumeration to CSI.

    CSI can downscale the image independently horizontally and vertically by a
    factor of two, which enumerates to four different frame sizes at the
    output pads. The input pad supports a range of frame sizes.

    CSI can also drop frames, resulting in frame rate reduction, so
    enumerate the resulting possible output frame rates.

    Signed-off-by: Russell King
    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Russell King
     
  • Move the crop rectangle to the sink pad and add a sink compose rectangle
    to configure scaling. Also propagate rectangles from sink pad to crop
    rectangle, to compose rectangle, and to the source pads both in ACTIVE
    and TRY variants of set_fmt/selection, and initialize the default crop
    and compose rectangles.

    Signed-off-by: Philipp Zabel
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Philipp Zabel
     
  • The CSI can skip any out of up to 6 input frames, allowing to reduce the
    frame rate at the output pads by small fractions.

    Signed-off-by: Philipp Zabel
    Signed-off-by: Steve Longerbeam
    Signed-off-by: Russell King
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Philipp Zabel
     
  • The IDMAC supports burst sizes of up to 32 pixels for interleaved YUV
    formats and up to 64 pixels for planar YUV formats.

    Signed-off-by: Philipp Zabel
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Philipp Zabel
     
  • Bayer formats must be treated as generic data and passthrough mode must
    be used. Add the correct setup for these formats.

    - added check to csi_link_validate() to verify that destination is
    IDMAC output pad when passthrough conditions exist: bayer formats
    and 16-bit parallel buses.

    Signed-off-by: Russell King
    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Russell King
     
  • Adds MIPI CSI-2 Receiver subdev driver. This subdev is required
    for sensors with a MIPI CSI2 interface.

    - Switch from the v4l2_of_ APIs to the v4l2_fwnode_ APIs.
    - Add the function csi2ipu_gasket_init() to initialize the gasket at
    s_power(ON). The gasket needs to be programmed with the correct color
    component ordering to handle UYVY vs. YUYV ordered mbus formats from
    sensors. Note that the description of the CSI2IPU_GASKET register in
    the i.MX6 reference manual is wrong w.r.t bit 2 (the manual refers to
    this register as CSI2_SW_RST): setting bit 2 selects YUYV order, not UYVY.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Philipp Zabel
    Suggested-by: Marek Vasut
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • This is a set of three media entity subdevice drivers for the i.MX
    Image Converter:

    - Pre-process Router: Takes input frames from CSI0, CSI1, or VDIC.
    Two output pads enable either or both of the preprocess tasks
    below. If the input is from one of the CSIs, both proprocess task
    links can be enabled to process frames from that CSI simultaneously.
    If the input is the VDIC, only the Pre-processing Viewfinder task
    link can be enabled.

    - Pre-processing Encode task: video frames are routed directly from
    the CSI and can be scaled, color-space converted, and rotated.
    Scaled output is limited to 1024x1024 resolution. Output frames
    are routed to the prpenc capture device.

    - Pre-processing Viewfinder task: this task can perform the same
    conversions as the pre-process encode task, but in addition can
    be used for hardware motion compensated deinterlacing. Frames can
    come either directly from the CSI or from the VDIC. Scaled output
    is limited to 1024x1024 resolution. Output frames are routed to
    the prpvf capture device.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • This is a media entity subdevice driver for the i.MX Video De-Interlacing
    or Combining Block. So far this entity does not implement the Combining
    function but only motion compensated deinterlacing. Video frames are
    received from the CSI and are routed to the IC PRPVF entity.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • This is a media entity subdevice for the i.MX Camera
    Sensor Interface module.

    - Added support for negotiation of frame intervals.
    - Fixed cropping rectangle negotiation at input and output pads.
    - Added support for /2 downscaling, if the output pad dimension(s)
    are 1/2 the crop dimension(s) at csi_setup() time.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Russell King
    Signed-off-by: Philipp Zabel
    [hans.verkuil@cisco.com: add linux/pinctrl/consumer.h include]
    Signed-off-by: Hans Verkuil

    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • This is the capture device interface driver that provides the v4l2
    user interface. Frames can be received from various sources:

    - directly from CSI for capturing unconverted images directly from
    camera sensors.

    - from the IC pre-process encode task.

    - from the IC pre-process viewfinder task.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add a TODO file.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add the core media driver for i.MX SOC.

    Switch from the v4l2_of_ APIs to the v4l2_fwnode_ APIs.
    Add the bayer formats to imx-media's list of supported pixel and bus
    formats.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Philipp Zabel
    Signed-off-by: Russell King
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • This adds a header file for use by userspace programs wanting to interact
    with the i.MX media driver. It defines custom events and v4l2 controls for
    the i.MX v4l2 subdevices.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add bindings documentation for the i.MX media driver.

    Signed-off-by: Steve Longerbeam
    Acked-by: Rob Herring
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add maintainer entry for the OV5640 V4L2 sensor driver.

    Signed-off-by: Steve Longerbeam
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • This driver is based on ov5640_mipi.c from Freescale imx_3.10.17_1.0.0_beta
    branch, modified heavily to bring forward to latest interfaces and code
    cleanup.

    Signed-off-by: Steve Longerbeam
    Acked-by: Sakari Ailus
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add device tree binding documentation for the OV5640 camera sensor.

    Signed-off-by: Steve Longerbeam
    Acked-by: Rob Herring
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Steve Longerbeam
     
  • Add maintainer entry for the video multiplexer v4l2 subdevice driver that
    will control video bus multiplexers via the multiplexer framework.

    Signed-off-by: Philip Zabel
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Philipp Zabel
     
  • This driver can handle SoC internal and external video bus multiplexers,
    controlled by mux controllers provided by the mux controller framework,
    such as MMIO register bitfields or GPIOs. The subdevice passes through
    the mbus configuration of the active input to the output side.

    Since the mux framework is not yet merged, this driver contains
    temporary mmio-mux support to work without the framework. The driver
    should be converted to use the multiplexer API once the "mux: minimal
    mux subsystem" and "mux: mmio-based syscon mux controller" patches are
    merged.

    Signed-off-by: Sascha Hauer
    Signed-off-by: Philipp Zabel
    Signed-off-by: Steve Longerbeam
    Acked-by: Sakari Ailus
    Acked-by: Pavel Machek
    [hans.verkuil@cisco.com: add 'select REGMAP' to Kconfig]
    Signed-off-by: Hans Verkuil

    Signed-off-by: Mauro Carvalho Chehab

    Philipp Zabel
     
  • Add two new media entity function definitions for video multiplexers
    and video interface bridges.

    - renamed MEDIA_ENT_F_MUX to MEDIA_ENT_F_VID_MUX

    Signed-off-by: Philipp Zabel
    Signed-off-by: Steve Longerbeam
    Acked-by: Sakari Ailus
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Philipp Zabel
     
  • Add bindings documentation for the video multiplexer device.

    Signed-off-by: Sascha Hauer
    Signed-off-by: Philipp Zabel
    Signed-off-by: Steve Longerbeam
    Acked-by: Sakari Ailus
    Reviewed-by: Sebastian Reichel
    Acked-by: Rob Herring
    Acked-by: Pavel Machek
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Philipp Zabel
     
  • load is an unsigned integer. So, it is always bigger or equal
    to zero, as reported by gcc:

    drivers/media/i2c/max2175.c: In function 'max2175_refout_load_to_bits':
    drivers/media/i2c/max2175.c:1272:11: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
    if (load >= 0 && load

    Mauro Carvalho Chehab
     
  • Add maintainter entry for the R-Car DRIF and MAX2175 drivers.

    Signed-off-by: Ramesh Shanmugasundaram
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram
     
  • This patch adds Digital Radio Interface (DRIF) support to R-Car Gen3 SoCs.
    The driver exposes each instance of DRIF as a V4L2 SDR device. A DRIF
    device represents a channel and each channel can have one or two
    sub-channels respectively depending on the target board.

    DRIF supports only Rx functionality. It receives samples from a RF
    frontend tuner chip it is interfaced with. The combination of DRIF and the
    tuner device, which is registered as a sub-device, determines the receive
    sample rate and format.

    In order to be compliant as a V4L2 SDR device, DRIF needs to bind with
    the tuner device, which can be provided by a third party vendor. DRIF acts
    as a slave device and the tuner device acts as a master transmitting the
    samples. The driver allows asynchronous binding of a tuner device that
    is registered as a v4l2 sub-device. The driver can learn about the tuner
    it is interfaced with based on port endpoint properties of the device in
    device tree. The V4L2 SDR device inherits the controls exposed by the
    tuner device.

    The device can also be configured to use either one or both of the data
    pins at runtime based on the master (tuner) configuration.

    Signed-off-by: Ramesh Shanmugasundaram
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram
     
  • Add binding documentation for Renesas R-Car Digital Radio Interface
    (DRIF) controller.

    Signed-off-by: Ramesh Shanmugasundaram
    Acked-by: Rob Herring
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram
     
  • This patch adds documentation for the three new SDR formats

    V4L2_SDR_FMT_PCU16BE
    V4L2_SDR_FMT_PCU18BE
    V4L2_SDR_FMT_PCU20BE

    Signed-off-by: Ramesh Shanmugasundaram
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram
     
  • This patch adds support for the three new SDR formats. These formats
    were prefixed with "planar" indicating I & Q data are not interleaved
    as in other formats. Here, I & Q data constitutes the top half and bottom
    half of the received buffer respectively.

    V4L2_SDR_FMT_PCU16BE - 14-bit complex (I & Q) unsigned big-endian sample
    inside 16-bit. V4L2 FourCC: PC16

    V4L2_SDR_FMT_PCU18BE - 16-bit complex (I & Q) unsigned big-endian sample
    inside 18-bit. V4L2 FourCC: PC18

    V4L2_SDR_FMT_PCU20BE - 18-bit complex (I & Q) unsigned big-endian sample
    inside 20-bit. V4L2 FourCC: PC20

    Signed-off-by: Ramesh Shanmugasundaram
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram
     
  • This patch adds driver support for the MAX2175 chip. This is Maxim
    Integrated's RF to Bits tuner front end chip designed for software-defined
    radio solutions. This driver exposes the tuner as a sub-device instance
    with standard and custom controls to configure the device.

    Signed-off-by: Ramesh Shanmugasundaram
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram
     
  • Add device tree binding documentation for MAX2175 RF to bits tuner
    device.

    Signed-off-by: Ramesh Shanmugasundaram
    Acked-by: Rob Herring
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram
     
  • Reserve controls for MAX217X RF to Bits tuner family. These hybrid
    radio receiver chips are highly programmable and hence reserving 32
    controls.

    Signed-off-by: Ramesh Shanmugasundaram
    Acked-by: Laurent Pinchart
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Ramesh Shanmugasundaram