Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bb46462 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branches 'topic/vsp1' and 'topic/adv76xx' of...

Merge branches 'topic/vsp1' and 'topic/adv76xx' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media into next

Pull updates and DT support for media engines from Mauro Carvalho Chehab.

For Analog Devices ADV7604 and the Renesas VSP1 video processing engines.

* 'topic/vsp1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
  [media] v4l: vsp1: Add DT support
  [media] v4l: vsp1: Add DT bindings documentation
  [media] v4l: vsp1: Add BRU support
  [media] v4l: vsp1: Support multi-input entities
  [media] v4l: vsp1: uds: Enable scaling of alpha layer
  [media] v4l: vsp1: Remove unexisting rt clocks

* 'topic/adv76xx' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (21 commits)
  [media] adv7604: Add LLC polarity configuration
  [media] adv7604: Set HPD GPIO direction to output
  [media] adv7604: Add endpoint properties to DT bindings
  [media] adv7604: Add DT support
  [media] adv7604: Specify the default input through platform data
  [media] adv7604: Support hot-plug detect control through a GPIO
  [media] adv7604: Sort headers alphabetically
  [media] adv7604: Replace *_and_or() functions with *_clr_set()
  [media] adv7604: Store I2C addresses and clients in arrays
  [media] adv7604: Inline the to_sd function
  [media] v4l: subdev: Remove deprecated video-level DV timings operations
  [media] adv7604: Remove deprecated video-level DV timings operations
  [media] adv7604: Add pad-level DV timings support
  [media] adv7604: Make output format configurable through pad format operations
  [media] adv7604: Add sink pads
  [media] adv7604: Remove subdev control handlers
  [media] adv7604: Add adv7611 support
  [media] adv7604: Cache register contents when reading multiple bits
  [media] adv7604: Add 16-bit read functions for CP and HDMI
  [media] adv7604: Don't put info string arrays on the stack
  ...
Loading
Loading
Loading
Loading
+70 −0
Original line number Diff line number Diff line
* Analog Devices ADV7604/11 video decoder with HDMI receiver

The ADV7604 and ADV7611 are multiformat video decoders with an integrated HDMI
receiver. The ADV7604 has four multiplexed HDMI inputs and one analog input,
and the ADV7611 has one HDMI input and no analog input.

These device tree bindings support the ADV7611 only at the moment.

Required Properties:

  - compatible: Must contain one of the following
    - "adi,adv7611" for the ADV7611

  - reg: I2C slave address

  - hpd-gpios: References to the GPIOs that control the HDMI hot-plug
    detection pins, one per HDMI input. The active flag indicates the GPIO
    level that enables hot-plug detection.

The device node must contain one 'port' child node per device input and output
port, in accordance with the video interface bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes
are numbered as follows.

  Port			ADV7611
------------------------------------------------------------
  HDMI			0
  Digital output	1

The digital output port node must contain at least one endpoint.

Optional Properties:

  - reset-gpios: Reference to the GPIO connected to the device's reset pin.

Optional Endpoint Properties:

  The following three properties are defined in video-interfaces.txt and are
  valid for source endpoints only.

  - hsync-active: Horizontal synchronization polarity. Defaults to active low.
  - vsync-active: Vertical synchronization polarity. Defaults to active low.
  - pclk-sample: Pixel clock polarity. Defaults to output on the falling edge.

  If none of hsync-active, vsync-active and pclk-sample is specified the
  endpoint will use embedded BT.656 synchronization.


Example:

	hdmi_receiver@4c {
		compatible = "adi,adv7611";
		reg = <0x4c>;

		reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
		hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;

		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			reg = <0>;
		};
		port@1 {
			reg = <1>;
			hdmi_in: endpoint {
				remote-endpoint = <&ccdc_in>;
			};
		};
	};
+43 −0
Original line number Diff line number Diff line
* Renesas VSP1 Video Processing Engine

The VSP1 is a video processing engine that supports up-/down-scaling, alpha
blending, color space conversion and various other image processing features.
It can be found in the Renesas R-Car second generation SoCs.

Required properties:

  - compatible: Must contain "renesas,vsp1"

  - reg: Base address and length of the registers block for the VSP1.
  - interrupts: VSP1 interrupt specifier.
  - clocks: A phandle + clock-specifier pair for the VSP1 functional clock.

  - renesas,#rpf: Number of Read Pixel Formatter (RPF) modules in the VSP1.
  - renesas,#uds: Number of Up Down Scaler (UDS) modules in the VSP1.
  - renesas,#wpf: Number of Write Pixel Formatter (WPF) modules in the VSP1.


Optional properties:

  - renesas,has-lif: Boolean, indicates that the LCD Interface (LIF) module is
    available.
  - renesas,has-lut: Boolean, indicates that the Look Up Table (LUT) module is
    available.
  - renesas,has-sru: Boolean, indicates that the Super Resolution Unit (SRU)
    module is available.


Example: R8A7790 (R-Car H2) VSP1-S node

	vsp1@fe928000 {
		compatible = "renesas,vsp1";
		reg = <0 0xfe928000 0 0x8000>;
		interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&mstp1_clks R8A7790_CLK_VSP1_S>;

		renesas,has-lut;
		renesas,has-sru;
		renesas,#rpf = <5>;
		renesas,#uds = <3>;
		renesas,#wpf = <4>;
	};
+1028 −436

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
vsp1-y					:= vsp1_drv.o vsp1_entity.o vsp1_video.o
vsp1-y					+= vsp1_rpf.o vsp1_rwpf.o vsp1_wpf.o
vsp1-y					+= vsp1_hsit.o vsp1_lif.o vsp1_lut.o
vsp1-y					+= vsp1_sru.o vsp1_uds.o
vsp1-y					+= vsp1_bru.o vsp1_sru.o vsp1_uds.o

obj-$(CONFIG_VIDEO_RENESAS_VSP1)	+= vsp1.o
+2 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ struct clk;
struct device;

struct vsp1_platform_data;
struct vsp1_bru;
struct vsp1_hsit;
struct vsp1_lif;
struct vsp1_lut;
@@ -45,11 +46,11 @@ struct vsp1_device {

	void __iomem *mmio;
	struct clk *clock;
	struct clk *rt_clock;

	struct mutex lock;
	int ref_count;

	struct vsp1_bru *bru;
	struct vsp1_hsit *hsi;
	struct vsp1_hsit *hst;
	struct vsp1_lif *lif;
Loading