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

Commit 9439b371 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'drm-for-v4.10' of git://people.freedesktop.org/~airlied/linux

Pull drm updates from Dave Airlie:
 "This is the main pull request for drm for 4.10 kernel.

  New drivers:
   - ZTE VOU display driver (zxdrm)
   - Amlogic Meson Graphic Controller GXBB/GXL/GXM SoCs (meson)
   - MXSFB support (mxsfb)

  Core:
   - Format handling has been reworked
   - Better atomic state debugging
   - drm_mm leak debugging
   - Atomic explicit fencing support
   - fbdev helper ops
   - Documentation updates
   - MST fbcon fixes

  Bridge:
   - Silicon Image SiI8620 driver

  Panel:
   - Add support for new simple panels

  i915:
   - GVT Device model
   - Better HDMI2.0 support on skylake
   - More watermark fixes
   - GPU idling rework for suspend/resume
   - DP Audio workarounds
   - Scheduler prep-work
   - Opregion CADL handling
   - GPU scheduler and priority boosting

  amdgfx/radeon:
   - Support for virtual devices
   - New VM manager for non-contig VRAM buffers
   - UVD powergating
   - SI register header cleanup
   - Cursor fixes
   - Powermanagement fixes

  nouveau:
   - Powermangement reworks for better voltage/clock changes
   - Atomic modesetting support
   - Displayport Multistream (MST) support.
   - GP102/104 hang and cursor fixes
   - GP106 support

  hisilicon:
   - hibmc support (BMC chip for aarch64 servers)

  armada:
   - add tracing support for overlay change
   - refactor plane support
   - de-midlayer the driver

  omapdrm:
   - Timing code cleanups

  rcar-du:
   - R8A7792/R8A7796 support
   - Misc fixes.

  sunxi:
   - A31 SoC display engine support

  imx-drm:
   - YUV format support
   - Cleanup plane atomic update

  mali-dp:
   - Misc fixes

  dw-hdmi:
   - Add support for HDMI i2c master controller

  tegra:
   - IOMMU support fixes
   - Error handling fixes

  tda998x:
   - Fix connector registration
   - Improved robustness
   - Fix infoframe/audio compliance

  virtio:
   - fix busid issues
   - allocate more vbufs

  qxl:
   - misc fixes and cleanups.

  vc4:
   - Fragment shader threading
   - ETC1 support
   - VEC (tv-out) support

  msm:
   - A5XX GPU support
   - Lots of atomic changes

  tilcdc:
   - Misc fixes and cleanups.

  etnaviv:
   - Fix dma-buf export path
   - DRAW_INSTANCED support
   - fix driver on i.MX6SX

  exynos:
   - HDMI refactoring

  fsl-dcu:
   - fbdev changes"

* tag 'drm-for-v4.10' of git://people.freedesktop.org/~airlied/linux: (1343 commits)
  drm/nouveau/kms/nv50: fix atomic regression on original G80
  drm/nouveau/bl: Do not register interface if Apple GMUX detected
  drm/nouveau/bl: Assign different names to interfaces
  drm/nouveau/bios/dp: fix handling of LevelEntryTableIndex on DP table 4.2
  drm/nouveau/ltc: protect clearing of comptags with mutex
  drm/nouveau/gr/gf100-: handle GPC/TPC/MPC trap
  drm/nouveau/core: recognise GP106 chipset
  drm/nouveau/ttm: wait for bo fence to signal before unmapping vmas
  drm/nouveau/gr/gf100-: FECS intr handling is not relevant on proprietary ucode
  drm/nouveau/gr/gf100-: properly ack all FECS error interrupts
  drm/nouveau/fifo/gf100-: recover from host mmu faults
  drm: Add fake controlD* symlinks for backwards compat
  drm/vc4: Don't use drm_put_dev
  drm/vc4: Document VEC DT binding
  drm/vc4: Add support for the VEC (Video Encoder) IP
  drm: Add TV connector states to drm_connector_state
  drm: Turn DRM_MODE_SUBCONNECTOR_xx definitions into an enum
  drm/vc4: Fix ->clock_select setting for the VEC encoder
  drm/amdgpu/dce6: Set MASTER_UPDATE_MODE to 0 in resume_mc_access as well
  drm/amdgpu: use pin rather than pin_restricted in a few cases
  ...
parents 7079efc9 2cf026ae
Loading
Loading
Loading
Loading
+112 −0
Original line number Diff line number Diff line
Amlogic Meson Display Controller
================================

The Amlogic Meson Display controller is composed of several components
that are going to be documented below:

DMC|---------------VPU (Video Processing Unit)----------------|------HHI------|
   | vd1   _______     _____________    _________________     |               |
D  |-------|      |----|            |   |                |    |   HDMI PLL    |
D  | vd2   | VIU  |    | Video Post |   | Video Encoders |<---|-----VCLK      |
R  |-------|      |----| Processing |   |                |    |               |
   | osd2  |      |    |            |---| Enci ----------|----|-----VDAC------|
R  |-------| CSC  |----| Scalers    |   | Encp ----------|----|----HDMI-TX----|
A  | osd1  |      |    | Blenders   |   | Encl ----------|----|---------------|
M  |-------|______|----|____________|   |________________|    |               |
___|__________________________________________________________|_______________|


VIU: Video Input Unit
---------------------

The Video Input Unit is in charge of the pixel scanout from the DDR memory.
It fetches the frames addresses, stride and parameters from the "Canvas" memory.
This part is also in charge of the CSC (Colorspace Conversion).
It can handle 2 OSD Planes and 2 Video Planes.

VPP: Video Post Processing
--------------------------

The Video Post Processing is in charge of the scaling and blending of the
various planes into a single pixel stream.
There is a special "pre-blending" used by the video planes with a dedicated
scaler and a "post-blending" to merge with the OSD Planes.
The OSD planes also have a dedicated scaler for one of the OSD.

VENC: Video Encoders
--------------------

The VENC is composed of the multiple pixel encoders :
 - ENCI : Interlace Video encoder for CVBS and Interlace HDMI
 - ENCP : Progressive Video Encoder for HDMI
 - ENCL : LCD LVDS Encoder
The VENC Unit gets a Pixel Clocks (VCLK) from a dedicated HDMI PLL and clock
tree and provides the scanout clock to the VPP and VIU.
The ENCI is connected to a single VDAC for Composite Output.
The ENCI and ENCP are connected to an on-chip HDMI Transceiver.

Device Tree Bindings:
---------------------

VPU: Video Processing Unit
--------------------------

Required properties:
- compatible: value should be different for each SoC family as :
	- GXBB (S905) : "amlogic,meson-gxbb-vpu"
	- GXL (S905X, S905D) : "amlogic,meson-gxl-vpu"
	- GXM (S912) : "amlogic,meson-gxm-vpu"
	followed by the common "amlogic,meson-gx-vpu"
- reg: base address and size of he following memory-mapped regions :
	- vpu
	- hhi
	- dmc
- reg-names: should contain the names of the previous memory regions
- interrupts: should contain the VENC Vsync interrupt number

Required nodes:

The connections to the VPU output video ports are modeled using the OF graph
bindings specified in Documentation/devicetree/bindings/graph.txt.

The following table lists for each supported model the port number
corresponding to each VPU output.

		Port 0		Port 1
-----------------------------------------
 S905 (GXBB)	CVBS VDAC	HDMI-TX
 S905X (GXL)	CVBS VDAC	HDMI-TX
 S905D (GXL)	CVBS VDAC	HDMI-TX
 S912 (GXM)	CVBS VDAC	HDMI-TX

Example:

tv-connector {
	compatible = "composite-video-connector";

	port {
		tv_connector_in: endpoint {
			remote-endpoint = <&cvbs_vdac_out>;
		};
	};
};

vpu: vpu@d0100000 {
	compatible = "amlogic,meson-gxbb-vpu";
	reg = <0x0 0xd0100000 0x0 0x100000>,
	      <0x0 0xc883c000 0x0 0x1000>,
	      <0x0 0xc8838000 0x0 0x1000>;
	reg-names = "vpu", "hhi", "dmc";
	interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
	#address-cells = <1>;
	#size-cells = <0>;

	/* CVBS VDAC output port */
	port@0 {
		reg = <0>;

		cvbs_vdac_out: endpoint {
			remote-endpoint = <&tv_connector_in>;
		};
	};
};
+14 −0
Original line number Diff line number Diff line
@@ -43,6 +43,13 @@ Required properties for DPI:
- port:		Port node with a single endpoint connecting to the panel
		  device, as defined in [1]

Required properties for VEC:
- compatible:	Should be "brcm,bcm2835-vec"
- reg:		Physical base address and length of the registers
- clocks:	The core clock the unit runs on
- interrupts:	The interrupt number
		  See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt

Required properties for V3D:
- compatible:	Should be "brcm,bcm2835-v3d"
- reg:		Physical base address and length of the V3D's registers
@@ -92,6 +99,13 @@ dpi: dpi@7e208000 {
	};
};

vec: vec@7e806000 {
	compatible = "brcm,bcm2835-vec";
	reg = <0x7e806000 0x1000>;
	clocks = <&clocks BCM2835_CLOCK_VEC>;
	interrupts = <2 27>;
};

v3d: v3d@7ec00000 {
	compatible = "brcm,bcm2835-v3d";
	reg = <0x7ec00000 0x1000>;
+2 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@ graph bindings specified in Documentation/devicetree/bindings/graph.txt.
- Video port 0 for RGB input
- Video port 1 for VGA output

Optional properties:
- vdd-supply: Power supply for DAC

Example
-------
+3 −1
Original line number Diff line number Diff line
@@ -19,7 +19,9 @@ Required properties:

Optional properties
- reg-io-width: the width of the reg:1,4, default set to 1 if not present
- ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
- ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing,
  if the property is omitted, a functionally reduced I2C bus
  controller on DW HDMI is probed
- clocks, clock-names: phandle to the HDMI CEC clock, name should be "cec"

Example:
+7 −2
Original line number Diff line number Diff line
@@ -6,10 +6,15 @@ Required properties:

Optional properties:
- powerdown-gpios: power-down gpio
- reg: I2C address. If and only if present the device node
       should be placed into the i2c controller node where the
       tfp410 i2c is connected to.

Required nodes:
- Video port 0 for DPI input
- Video port 1 for DVI output
- Video port 0 for DPI input [1].
- Video port 1 for DVI output [1].

[1]: Documentation/devicetree/bindings/media/video-interfaces.txt

Example
-------
Loading