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

Commit 2ec360bb authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge branch 'drm/next/du' of git://linuxtv.org/pinchartl/media into drm-next

- Convert LVDS support to a drm_bridge driver
- Add DT bindings for the R8A77995 SoC
- Add DT bindings and driver support for the R8A77970 SoC

Note that the LVDS conversion depends on a patch series from Frank Rowand that
will make it upstream through Rob Herring's tree. Frank has provided a stable
branch based on v4.16-rc1 with the patches, and both Rob and I have merged it
into our trees. This should thus generate no conflict when reaching -next.

* 'drm/next/du' of git://linuxtv.org/pinchartl/media:
  dt-bindings: display: renesas: lvds: Document r8a77995 bindings
  dt-bindings: display: renesas: du: Document r8a77995 bindings
  drm: rcar-du: lvds: Add R8A77970 support
  drm: rcar-du: Add R8A77970 support
  dt-bindings: display: renesas: lvds: Document R8A77970 bindings
  dt-bindings: display: renesas: du: Document R8A77970 bindings
  drm: rcar-du: Convert LVDS encoder code to bridge driver
  drm: rcar-du: Fix legacy DT to create LVDS encoder nodes
  dt-bindings: display: renesas: Deprecate LVDS support in the DU bindings
  dt-bindings: display: renesas: Add R-Car LVDS encoder DT bindings
  of: improve reporting invalid overlay target path
  of: convert unittest overlay devicetree source to sugar syntax
  of: Documentation: of_overlay_apply() replaced by of_overlay_fdt_apply()
  of: change overlay apply input data from unflattened to FDT
  x86: devicetree: fix config option around x86_flattree_get_config()
parents f073d78e 77f59f89
Loading
Loading
Loading
Loading
+58 −0
Original line number Diff line number Diff line
Renesas R-Car LVDS Encoder
==========================

These DT bindings describe the LVDS encoder embedded in the Renesas R-Car
Gen2, R-Car Gen3 and RZ/G SoCs.

Required properties:

- compatible : Shall contain one of
  - "renesas,r8a7743-lvds" for R8A7743 (RZ/G1M) compatible LVDS encoders
  - "renesas,r8a7790-lvds" for R8A7790 (R-Car H2) compatible LVDS encoders
  - "renesas,r8a7791-lvds" for R8A7791 (R-Car M2-W) compatible LVDS encoders
  - "renesas,r8a7793-lvds" for R8A7793 (R-Car M2-N) compatible LVDS encoders
  - "renesas,r8a7795-lvds" for R8A7795 (R-Car H3) compatible LVDS encoders
  - "renesas,r8a7796-lvds" for R8A7796 (R-Car M3-W) compatible LVDS encoders
  - "renesas,r8a77970-lvds" for R8A77970 (R-Car V3M) compatible LVDS encoders
  - "renesas,r8a77995-lvds" for R8A77995 (R-Car D3) compatible LVDS encoders

- reg: Base address and length for the memory-mapped registers
- clocks: A phandle + clock-specifier pair for the functional clock
- resets: A phandle + reset specifier for the module reset

Required nodes:

The LVDS encoder has two video ports. Their connections are modelled using the
OF graph bindings specified in Documentation/devicetree/bindings/graph.txt.

- Video port 0 corresponds to the parallel RGB input
- Video port 1 corresponds to the LVDS output

Each port shall have a single endpoint.


Example:

	lvds0: lvds@feb90000 {
		compatible = "renesas,r8a7790-lvds";
		reg = <0 0xfeb90000 0 0x1c>;
		clocks = <&cpg CPG_MOD 726>;
		resets = <&cpg 726>;

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

			port@0 {
				reg = <0>;
				lvds0_in: endpoint {
					remote-endpoint = <&du_out_lvds0>;
				};
			};
			port@1 {
				reg = <1>;
				lvds0_out: endpoint {
				};
			};
		};
	};
+15 −20
Original line number Diff line number Diff line
@@ -13,13 +13,10 @@ Required Properties:
    - "renesas,du-r8a7794" for R8A7794 (R-Car E2) compatible DU
    - "renesas,du-r8a7795" for R8A7795 (R-Car H3) compatible DU
    - "renesas,du-r8a7796" for R8A7796 (R-Car M3-W) compatible DU
    - "renesas,du-r8a77970" for R8A77970 (R-Car V3M) compatible DU
    - "renesas,du-r8a77995" for R8A77995 (R-Car D3) compatible DU

  - reg: A list of base address and length of each memory resource, one for
    each entry in the reg-names property.
  - reg-names: Name of the memory resources. The DU requires one memory
    resource for the DU core (named "du") and one memory resource for each
    LVDS encoder (named "lvds.x" with "x" being the LVDS controller numerical
    index).
  - reg: the memory-mapped I/O registers base address and length

  - interrupt-parent: phandle of the parent interrupt controller.
  - interrupts: Interrupt specifiers for the DU interrupts.
@@ -29,14 +26,13 @@ Required Properties:
  - clock-names: Name of the clocks. This property is model-dependent.
    - R8A7779 uses a single functional clock. The clock doesn't need to be
      named.
    - All other DU instances use one functional clock per channel and one
      clock per LVDS encoder (if available). The functional clocks must be
      named "du.x" with "x" being the channel numerical index. The LVDS clocks
      must be named "lvds.x" with "x" being the LVDS encoder numerical index.
    - In addition to the functional and encoder clocks, all DU versions also
      support externally supplied pixel clocks. Those clocks are optional.
      When supplied they must be named "dclkin.x" with "x" being the input
      clock numerical index.
    - All other DU instances use one functional clock per channel The
      functional clocks must be named "du.x" with "x" being the channel
      numerical index.
    - In addition to the functional clocks, all DU versions also support
      externally supplied pixel clocks. Those clocks are optional. When
      supplied they must be named "dclkin.x" with "x" being the input clock
      numerical index.

  - vsps: A list of phandle and channel index tuples to the VSPs that handle
    the memory interfaces for the DU channels. The phandle identifies the VSP
@@ -63,15 +59,15 @@ corresponding to each DU output.
 R8A7794 (R-Car E2)   DPAD 0         DPAD 1         -              -
 R8A7795 (R-Car H3)   DPAD 0         HDMI 0         HDMI 1         LVDS 0
 R8A7796 (R-Car M3-W) DPAD 0         HDMI 0         LVDS 0         -
 R8A77970 (R-Car V3M) DPAD 0         LVDS 0         -              -
 R8A77995 (R-Car D3)  DPAD 0         LVDS 0         LVDS 1         -


Example: R8A7795 (R-Car H3) ES2.0 DU

	du: display@feb00000 {
		compatible = "renesas,du-r8a7795";
		reg = <0 0xfeb00000 0 0x80000>,
		      <0 0xfeb90000 0 0x14>;
		reg-names = "du", "lvds.0";
		reg = <0 0xfeb00000 0 0x80000>;
		interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>,
@@ -79,9 +75,8 @@ Example: R8A7795 (R-Car H3) ES2.0 DU
		clocks = <&cpg CPG_MOD 724>,
			 <&cpg CPG_MOD 723>,
			 <&cpg CPG_MOD 722>,
			 <&cpg CPG_MOD 721>,
			 <&cpg CPG_MOD 727>;
		clock-names = "du.0", "du.1", "du.2", "du.3", "lvds.0";
			 <&cpg CPG_MOD 721>;
		clock-names = "du.0", "du.1", "du.2", "du.3";
		vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>, <&vspd0 1>;

		ports {
+2 −2
Original line number Diff line number Diff line
@@ -87,8 +87,8 @@ Overlay in-kernel API

The API is quite easy to use.

1. Call of_overlay_apply() to create and apply an overlay changeset. The return
value is an error or a cookie identifying this overlay.
1. Call of_overlay_fdt_apply() to create and apply an overlay changeset. The
return value is an error or a cookie identifying this overlay.

2. Call of_overlay_remove() to remove and cleanup the overlay changeset
previously created via the call to of_overlay_apply(). Removal of an overlay
+1 −0
Original line number Diff line number Diff line
@@ -4744,6 +4744,7 @@ F: drivers/gpu/drm/rcar-du/
F:	drivers/gpu/drm/shmobile/
F:	include/linux/platform_data/shmob_drm.h
F:	Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt
F:	Documentation/devicetree/bindings/display/bridge/renesas,lvds.txt
F:	Documentation/devicetree/bindings/display/renesas,du.txt

DRM DRIVERS FOR ROCKCHIP
+1 −1
Original line number Diff line number Diff line
@@ -259,7 +259,7 @@ static void __init dtb_apic_setup(void)
	dtb_ioapic_setup();
}

#ifdef CONFIG_OF_FLATTREE
#ifdef CONFIG_OF_EARLY_FLATTREE
static void __init x86_flattree_get_config(void)
{
	u32 size, map_len;
Loading