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

Commit a7d7a143 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux

Pull DRM updates from Dave Airlie:
 "Like all good pull reqs this ends with a revert, so it must mean we
  tested it,

[ Ed. That's _one_ way of looking at it ]

  This pull is missing nouveau, Ben has been stuck trying to track down
  a very longstanding bug that revealed itself due to some other
  changes.  I've asked him to send you a direct pull request for nouveau
  once he cleans things up.  I'm away until Monday so don't want to
  delay things, you can make a decision on that when he sends it, I have
  my phone so I can ack things just not really merge much.

  It has one trivial conflict with your tree in armada_drv.c, and also
  the pull request contains some component changes that are already in
  your tree, the base tree from Russell went via Greg's tree already,
  but some stuff still shows up in here that doesn't when I merge my
  tree into yours.

  Otherwise all pretty standard graphics fare, one new driver and
  changes all over the place.

  New drivers:
   - sti kms driver for STMicroelectronics chipsets stih416 and stih407.

  core:
   - lots of cleanups to the drm core
   - DP MST helper code merged
   - universal cursor planes.
   - render nodes enabled by default

  panel:
   - better panel interfaces
   - new panel support
   - non-continuous cock advertising ability

  ttm:
   - shrinker fixes

  i915:
   - hopefully ditched UMS support
   - runtime pm fixes
   - psr tracking and locking - now enabled by default
   - userptr fixes
   - backlight brightness fixes
   - MST support merged
   - runtime PM for dpms
   - primary planes locking fixes
   - gen8 hw semaphore support
   - fbc fixes
   - runtime PM on SOix sleep state hw.
   - mmio base page flipping
   - lots of vlv/chv fixes.
   - universal cursor planes

  radeon:
   - Hawaii fixes
   - display scalar support for non-fixed mode displays
   - new firmware format support
   - dpm on more asics by default
   - GPUVM improvements
   - uncached and wc GTT buffers
   - BOs > visible VRAM

  exynos:
   - i80 interface support
   - module auto-loading
   - ipp driver consolidated.

  armada:
   - irq handling in crtc layer only
   - crtc renumbering
   - add component support
   - DT interaction changes.

  tegra:
   - load as module fixes
   - eDP bpp and sync polarity fixed
   - DSI non-continuous clock mode support
   - better support for importing buffers from nouveau

  msm:
   - mdp5/adq8084 v1.3 hw enablement
   - devicetree clk changse
   - ifc6410 board working

  tda998x:
   - component support
   - DT documentation update

  vmwgfx:
   - fix compat shader namespace"

* 'drm-next' of git://people.freedesktop.org/~airlied/linux: (551 commits)
  Revert "drm: drop redundant drm_file->is_master"
  drm/panel: simple: Use devm_gpiod_get_optional()
  drm/dsi: Replace upcasting macro by function
  drm/panel: ld9040: Replace upcasting macro by function
  drm/exynos: dp: Modify driver to support drm_panel
  drm/exynos: Move DP setup into commit()
  drm/panel: simple: Add AUO B133HTN01 panel support
  drm/panel: simple: Support delays in panel functions
  drm/panel: simple: Add proper definition for prepare and unprepare
  drm/panel: s6e8aa0: Add proper definition for prepare and unprepare
  drm/panel: ld9040: Add proper definition for prepare and unprepare
  drm/tegra: Add support for panel prepare and unprepare routines
  drm/exynos: dsi: Add support for panel prepare and unprepare routines
  drm/exynos: dpi: Add support for panel prepare and unprepare routines
  drm/panel: simple: Add dummy prepare and unprepare routines
  drm/panel: s6e8aa0: Add dummy prepare and unprepare routines
  drm/panel: ld9040: Add dummy prepare and unprepare routines
  drm/panel: Provide convenience wrapper for .get_modes()
  drm/panel: add .prepare() and .unprepare() functions
  drm/panel: simple: Remove simple-panel compatible
  ...
parents 43c40df2 7963e9db
Loading
Loading
Loading
Loading
+34 −55
Original line number Original line Diff line number Diff line
@@ -1610,7 +1610,7 @@ int max_width, max_height;</synopsis>
          The connector is then registered with a call to
          The connector is then registered with a call to
          <function>drm_connector_init</function> with a pointer to the connector
          <function>drm_connector_init</function> with a pointer to the connector
          functions and a connector type, and exposed through sysfs with a call to
          functions and a connector type, and exposed through sysfs with a call to
          <function>drm_sysfs_connector_add</function>.
          <function>drm_connector_register</function>.
        </para>
        </para>
        <para>
        <para>
          Supported connector types are
          Supported connector types are
@@ -1768,7 +1768,7 @@ int max_width, max_height;</synopsis>
	(<function>drm_encoder_cleanup</function>) and connectors
	(<function>drm_encoder_cleanup</function>) and connectors
	(<function>drm_connector_cleanup</function>). Furthermore, connectors
	(<function>drm_connector_cleanup</function>). Furthermore, connectors
	that have been added to sysfs must be removed by a call to
	that have been added to sysfs must be removed by a call to
	<function>drm_sysfs_connector_remove</function> before calling
	<function>drm_connector_unregister</function> before calling
	<function>drm_connector_cleanup</function>.
	<function>drm_connector_cleanup</function>.
      </para>
      </para>
      <para>
      <para>
@@ -1813,7 +1813,7 @@ void intel_crt_init(struct drm_device *dev)
	drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs);
	drm_encoder_helper_add(&intel_output->enc, &intel_crt_helper_funcs);
	drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);
	drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs);


	drm_sysfs_connector_add(connector);
	drm_connector_register(connector);
}]]></programlisting>
}]]></programlisting>
      <para>
      <para>
        In the example above (taken from the i915 driver), a CRTC, connector and
        In the example above (taken from the i915 driver), a CRTC, connector and
@@ -2336,6 +2336,12 @@ void intel_crt_init(struct drm_device *dev)
!Pdrivers/gpu/drm/drm_dp_helper.c dp helpers
!Pdrivers/gpu/drm/drm_dp_helper.c dp helpers
!Iinclude/drm/drm_dp_helper.h
!Iinclude/drm/drm_dp_helper.h
!Edrivers/gpu/drm/drm_dp_helper.c
!Edrivers/gpu/drm/drm_dp_helper.c
    </sect2>
    <sect2>
      <title>Display Port MST Helper Functions Reference</title>
!Pdrivers/gpu/drm/drm_dp_mst_topology.c dp mst helper
!Iinclude/drm/drm_dp_mst_helper.h
!Edrivers/gpu/drm/drm_dp_mst_topology.c
    </sect2>
    </sect2>
    <sect2>
    <sect2>
      <title>EDID Helper Functions Reference</title>
      <title>EDID Helper Functions Reference</title>
@@ -2502,7 +2508,7 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >Description/Restrictions</td>
	<td valign="top" >Description/Restrictions</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="20" valign="top" >DRM</td>
	<td rowspan="21" valign="top" >DRM</td>
	<td rowspan="2" valign="top" >Generic</td>
	<td rowspan="2" valign="top" >Generic</td>
	<td valign="top" >“EDID”</td>
	<td valign="top" >“EDID”</td>
	<td valign="top" >BLOB | IMMUTABLE</td>
	<td valign="top" >BLOB | IMMUTABLE</td>
@@ -2633,7 +2639,7 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="2" valign="top" >Optional</td>
	<td rowspan="3" valign="top" >Optional</td>
	<td valign="top" >“scaling mode”</td>
	<td valign="top" >“scaling mode”</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >{ "None", "Full", "Center", "Full aspect" }</td>
	<td valign="top" >{ "None", "Full", "Center", "Full aspect" }</td>
@@ -2641,6 +2647,15 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td valign="top" >"aspect ratio"</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >{ "None", "4:3", "16:9" }</td>
	<td valign="top" >Connector</td>
	<td valign="top" >DRM property to set aspect ratio from user space app.
		This enum is made generic to allow addition of custom aspect
		ratios.</td>
	</tr>
	<tr>
	<td valign="top" >“dirty”</td>
	<td valign="top" >“dirty”</td>
	<td valign="top" >ENUM | IMMUTABLE</td>
	<td valign="top" >ENUM | IMMUTABLE</td>
	<td valign="top" >{ "Off", "On", "Annotate" }</td>
	<td valign="top" >{ "Off", "On", "Annotate" }</td>
@@ -2649,7 +2664,7 @@ void intel_crt_init(struct drm_device *dev)
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="21" valign="top" >i915</td>
	<td rowspan="21" valign="top" >i915</td>
	<td rowspan="3" valign="top" >Generic</td>
	<td rowspan="2" valign="top" >Generic</td>
	<td valign="top" >"Broadcast RGB"</td>
	<td valign="top" >"Broadcast RGB"</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >{ "Automatic", "Full", "Limited 16:235" }</td>
	<td valign="top" >{ "Automatic", "Full", "Limited 16:235" }</td>
@@ -2664,10 +2679,11 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td valign="top" >Standard name as in DRM</td>
	<td rowspan="1" valign="top" >Plane</td>
	<td valign="top" >Standard type as in DRM</td>
	<td valign="top" >“rotation”</td>
	<td valign="top" >Standard value as in DRM</td>
	<td valign="top" >BITMASK</td>
	<td valign="top" >Standard Object as in DRM</td>
	<td valign="top" >{ 0, "rotate-0" }, { 2, "rotate-180" }</td>
	<td valign="top" >Plane</td>
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
@@ -2799,8 +2815,8 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="3" valign="top" >CDV gma-500</td>
	<td rowspan="2" valign="top" >CDV gma-500</td>
	<td rowspan="3" valign="top" >Generic</td>
	<td rowspan="2" valign="top" >Generic</td>
	<td valign="top" >"Broadcast RGB"</td>
	<td valign="top" >"Broadcast RGB"</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >{ “Full”, “Limited 16:235” }</td>
	<td valign="top" >{ “Full”, “Limited 16:235” }</td>
@@ -2815,15 +2831,8 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td valign="top" >Standard name as in DRM</td>
	<td rowspan="19" valign="top" >Poulsbo</td>
	<td valign="top" >Standard type as in DRM</td>
	<td rowspan="1" valign="top" >Generic</td>
	<td valign="top" >Standard value as in DRM</td>
	<td valign="top" >Standard Object as in DRM</td>
	<td valign="top" >TBD</td>
	</tr>
	<tr>
	<td rowspan="20" valign="top" >Poulsbo</td>
	<td rowspan="2" valign="top" >Generic</td>
	<td valign="top" >“backlight”</td>
	<td valign="top" >“backlight”</td>
	<td valign="top" >RANGE</td>
	<td valign="top" >RANGE</td>
	<td valign="top" >Min=0, Max=100</td>
	<td valign="top" >Min=0, Max=100</td>
@@ -2831,13 +2840,6 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td valign="top" >Standard name as in DRM</td>
	<td valign="top" >Standard type as in DRM</td>
	<td valign="top" >Standard value as in DRM</td>
	<td valign="top" >Standard Object as in DRM</td>
	<td valign="top" >TBD</td>
	</tr>
	<tr>
	<td rowspan="17" valign="top" >SDVO-TV</td>
	<td rowspan="17" valign="top" >SDVO-TV</td>
	<td valign="top" >“mode”</td>
	<td valign="top" >“mode”</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >ENUM</td>
@@ -3064,7 +3066,7 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="3" valign="top" >i2c/ch7006_drv</td>
	<td rowspan="2" valign="top" >i2c/ch7006_drv</td>
	<td valign="top" >Generic</td>
	<td valign="top" >Generic</td>
	<td valign="top" >“scale”</td>
	<td valign="top" >“scale”</td>
	<td valign="top" >RANGE</td>
	<td valign="top" >RANGE</td>
@@ -3073,14 +3075,7 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="2" valign="top" >TV</td>
	<td rowspan="1" valign="top" >TV</td>
	<td valign="top" >Standard names as in DRM</td>
	<td valign="top" >Standard types as in DRM</td>
	<td valign="top" >Standard Values as in DRM</td>
	<td valign="top" >Standard object as in DRM</td>
	<td valign="top" >TBD</td>
	</tr>
	<tr>
	<td valign="top" >“mode”</td>
	<td valign="top" >“mode”</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >ENUM</td>
	<td valign="top" >{ "PAL", "PAL-M","PAL-N"}, ”PAL-Nc"
	<td valign="top" >{ "PAL", "PAL-M","PAL-N"}, ”PAL-Nc"
@@ -3089,7 +3084,7 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="16" valign="top" >nouveau</td>
	<td rowspan="15" valign="top" >nouveau</td>
	<td rowspan="6" valign="top" >NV10 Overlay</td>
	<td rowspan="6" valign="top" >NV10 Overlay</td>
	<td valign="top" >"colorkey"</td>
	<td valign="top" >"colorkey"</td>
	<td valign="top" >RANGE</td>
	<td valign="top" >RANGE</td>
@@ -3198,14 +3193,6 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td valign="top" >Generic</td>
	<td valign="top" >Standard name as in DRM</td>
	<td valign="top" >Standard type as in DRM</td>
	<td valign="top" >Standard value as in DRM</td>
	<td valign="top" >Standard Object as in DRM</td>
	<td valign="top" >TBD</td>
	</tr>
	<tr>
	<td rowspan="2" valign="top" >omap</td>
	<td rowspan="2" valign="top" >omap</td>
	<td rowspan="2" valign="top" >Generic</td>
	<td rowspan="2" valign="top" >Generic</td>
	<td valign="top" >“rotation”</td>
	<td valign="top" >“rotation”</td>
@@ -3236,7 +3223,7 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td rowspan="10" valign="top" >radeon</td>
	<td rowspan="9" valign="top" >radeon</td>
	<td valign="top" >DVI-I</td>
	<td valign="top" >DVI-I</td>
	<td valign="top" >“coherent”</td>
	<td valign="top" >“coherent”</td>
	<td valign="top" >RANGE</td>
	<td valign="top" >RANGE</td>
@@ -3308,14 +3295,6 @@ void intel_crt_init(struct drm_device *dev)
	<td valign="top" >TBD</td>
	<td valign="top" >TBD</td>
	</tr>
	</tr>
	<tr>
	<tr>
	<td valign="top" >Generic</td>
	<td valign="top" >Standard name as in DRM</td>
	<td valign="top" >Standard type as in DRM</td>
	<td valign="top" >Standard value as in DRM</td>
	<td valign="top" >Standard Object as in DRM</td>
	<td valign="top" >TBD</td>
	</tr>
	<tr>
	<td rowspan="3" valign="top" >rcar-du</td>
	<td rowspan="3" valign="top" >rcar-du</td>
	<td rowspan="3" valign="top" >Generic</td>
	<td rowspan="3" valign="top" >Generic</td>
	<td valign="top" >"alpha"</td>
	<td valign="top" >"alpha"</td>
+30 −0
Original line number Original line Diff line number Diff line
Device Tree bindings for Armada DRM CRTC driver

Required properties:
 - compatible: value should be "marvell,dove-lcd".
 - reg: base address and size of the LCD controller
 - interrupts: single interrupt number for the LCD controller
 - port: video output port with endpoints, as described by graph.txt

Optional properties:

 - clocks: as described by clock-bindings.txt
 - clock-names: as described by clock-bindings.txt
	"axiclk" - axi bus clock for pixel clock
	"plldivider" - pll divider clock for pixel clock
	"ext_ref_clk0" - external clock 0 for pixel clock
	"ext_ref_clk1" - external clock 1 for pixel clock

Note: all clocks are optional but at least one must be specified.
Further clocks may be added in the future according to requirements of
different SoCs.

Example:

	lcd0: lcd-controller@820000 {
		compatible = "marvell,dove-lcd";
		reg = <0x820000 0x1000>;
		interrupts = <47>;
		clocks = <&si5351 0>;
		clock-names = "ext_ref_clk_1";
	};
+2 −0
Original line number Original line Diff line number Diff line
@@ -3,6 +3,8 @@ Device-Tree bindings for the NXP TDA998x HDMI transmitter
Required properties;
Required properties;
  - compatible: must be "nxp,tda998x"
  - compatible: must be "nxp,tda998x"


  - reg: I2C address

Optional properties:
Optional properties:
  - interrupts: interrupt number and trigger type
  - interrupts: interrupt number and trigger type
	default: polling
	default: polling
+52 −0
Original line number Original line Diff line number Diff line
Qualcomm adreno/snapdragon GPU

Required properties:
- compatible: "qcom,adreno-3xx"
- reg: Physical base address and length of the controller's registers.
- interrupts: The interrupt signal from the gpu.
- clocks: device clocks
  See ../clocks/clock-bindings.txt for details.
- clock-names: the following clocks are required:
  * "core_clk"
  * "iface_clk"
  * "mem_iface_clk"
- qcom,chipid: gpu chip-id.  Note this may become optional for future
  devices if we can reliably read the chipid from hw
- qcom,gpu-pwrlevels: list of operating points
  - compatible: "qcom,gpu-pwrlevels"
  - for each qcom,gpu-pwrlevel:
    - qcom,gpu-freq: requested gpu clock speed
    - NOTE: downstream android driver defines additional parameters to
      configure memory bandwidth scaling per OPP.

Example:

/ {
	...

	gpu: qcom,kgsl-3d0@4300000 {
		compatible = "qcom,adreno-3xx";
		reg = <0x04300000 0x20000>;
		reg-names = "kgsl_3d0_reg_memory";
		interrupts = <GIC_SPI 80 0>;
		interrupt-names = "kgsl_3d0_irq";
		clock-names =
		    "core_clk",
		    "iface_clk",
		    "mem_iface_clk";
		clocks =
		    <&mmcc GFX3D_CLK>,
		    <&mmcc GFX3D_AHB_CLK>,
		    <&mmcc MMSS_IMEM_AHB_CLK>;
		qcom,chipid = <0x03020100>;
		qcom,gpu-pwrlevels {
			compatible = "qcom,gpu-pwrlevels";
			qcom,gpu-pwrlevel@0 {
				qcom,gpu-freq = <450000000>;
			};
			qcom,gpu-pwrlevel@1 {
				qcom,gpu-freq = <27000000>;
			};
		};
	};
};
+46 −0
Original line number Original line Diff line number Diff line
Qualcomm adreno/snapdragon hdmi output

Required properties:
- compatible: one of the following
   * "qcom,hdmi-tx-8660"
   * "qcom,hdmi-tx-8960"
- reg: Physical base address and length of the controller's registers
- reg-names: "core_physical"
- interrupts: The interrupt signal from the hdmi block.
- clocks: device clocks
  See ../clocks/clock-bindings.txt for details.
- qcom,hdmi-tx-ddc-clk-gpio: ddc clk pin
- qcom,hdmi-tx-ddc-data-gpio: ddc data pin
- qcom,hdmi-tx-hpd-gpio: hpd pin
- core-vdda-supply: phandle to supply regulator
- hdmi-mux-supply: phandle to mux regulator

Optional properties:
- qcom,hdmi-tx-mux-en-gpio: hdmi mux enable pin
- qcom,hdmi-tx-mux-sel-gpio: hdmi mux select pin

Example:

/ {
	...

	hdmi: qcom,hdmi-tx-8960@4a00000 {
		compatible = "qcom,hdmi-tx-8960";
		reg-names = "core_physical";
		reg = <0x04a00000 0x1000>;
		interrupts = <GIC_SPI 79 0>;
		clock-names =
		    "core_clk",
		    "master_iface_clk",
		    "slave_iface_clk";
		clocks =
		    <&mmcc HDMI_APP_CLK>,
		    <&mmcc HDMI_M_AHB_CLK>,
		    <&mmcc HDMI_S_AHB_CLK>;
		qcom,hdmi-tx-ddc-clk = <&msmgpio 70 GPIO_ACTIVE_HIGH>;
		qcom,hdmi-tx-ddc-data = <&msmgpio 71 GPIO_ACTIVE_HIGH>;
		qcom,hdmi-tx-hpd = <&msmgpio 72 GPIO_ACTIVE_HIGH>;
		core-vdda-supply = <&pm8921_hdmi_mvs>;
		hdmi-mux-supply = <&ext_3p3v>;
	};
};
Loading