forked from swarren/WSL2-Linux-Kernel
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux
Pull drm updates from Dave Airlie: "This is a combo of -next and some -fixes that came in in the intervening time. Highlights: New drivers: ARM Armada driver for Marvell Armada 510 SOCs Intel: Broadwell initial support under a default off switch, Stereo/3D HDMI mode support Valleyview improvements Displayport improvements Haswell fixes initial mipi dsi panel support CRC support for debugging build with CONFIG_FB=n Radeon: enable DPM on a number of GPUs by default secondary GPU powerdown support enable HDMI audio by default Hawaii support Nouveau: dynamic pm code infrastructure reworked, does nothing major yet GK208 modesetting support MSI fixes, on by default again PMPEG improvements pageflipping fixes GMA500: minnowboard SDVO support VMware: misc fixes MSM: prime, plane and rendernodes support Tegra: rearchitected to put the drm driver into the drm subsystem. HDMI and gr2d support for tegra 114 SoC QXL: oops fix, and multi-head fixes DRM core: sysfs lifetime fixes client capability ioctl further cleanups to device midlayer more vblank timestamp fixes" * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (789 commits) drm/nouveau: do not map evicted vram buffers in nouveau_bo_vma_add drm/nvc0-/gr: shift wrapping bug in nvc0_grctx_generate_r406800 drm/nouveau/pwr: fix missing mutex unlock in a failure path drm/nv40/therm: fix slowing down fan when pstate undefined drm/nv11-: synchronise flips to vblank, unless async flip requested drm/nvc0-: remove nasty fifo swmthd hack for flip completion method drm/nv10-: we no longer need to create nvsw object on user channels drm/nouveau: always queue flips relative to kernel channel activity drm/nouveau: there is no need to reserve/fence the new fb when flipping drm/nouveau: when bailing out of a pushbuf ioctl, do not remove previous fence drm/nouveau: allow nouveau_fence_ref() to be a noop drm/nvc8/mc: msi rearm is via the nvc0 method drm/ttm: Fix vma page_prot bit manipulation drm/vmwgfx: Fix a couple of compile / sparse warnings and errors drm/vmwgfx: Resource evict fixes drm/edid: compare actual vrefresh for all modes for quirks drm: shmob_drm: Convert to clk_prepare/unprepare drm/nouveau: fix 32-bit build drm/i915/opregion: fix build error on CONFIG_ACPI=n Revert "drm/radeon/audio: don't set speaker allocation on DCE4+" ...
- Loading branch information
Showing
557 changed files
with
44,648 additions
and
14,957 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
config DRM_ARMADA | ||
tristate "DRM support for Marvell Armada SoCs" | ||
depends on DRM && HAVE_CLK && ARM | ||
select FB_CFB_FILLRECT | ||
select FB_CFB_COPYAREA | ||
select FB_CFB_IMAGEBLIT | ||
select DRM_KMS_HELPER | ||
help | ||
Support the "LCD" controllers found on the Marvell Armada 510 | ||
devices. There are two controllers on the device, each controller | ||
supports graphics and video overlays. | ||
|
||
This driver provides no built-in acceleration; acceleration is | ||
performed by other IP found on the SoC. This driver provides | ||
kernel mode setting and buffer management to userspace. | ||
|
||
config DRM_ARMADA_TDA1998X | ||
bool "Support TDA1998X HDMI output" | ||
depends on DRM_ARMADA != n | ||
depends on I2C && DRM_I2C_NXP_TDA998X = y | ||
default y | ||
help | ||
Support the TDA1998x HDMI output device found on the Solid-Run | ||
CuBox. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
armada-y := armada_crtc.o armada_drv.o armada_fb.o armada_fbdev.o \ | ||
armada_gem.o armada_output.o armada_overlay.o \ | ||
armada_slave.o | ||
armada-y += armada_510.o | ||
armada-$(CONFIG_DEBUG_FS) += armada_debugfs.o | ||
|
||
obj-$(CONFIG_DRM_ARMADA) := armada.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
/* | ||
* Copyright (C) 2012 Russell King | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
* | ||
* Armada 510 (aka Dove) variant support | ||
*/ | ||
#include <linux/clk.h> | ||
#include <linux/io.h> | ||
#include <drm/drmP.h> | ||
#include <drm/drm_crtc_helper.h> | ||
#include "armada_crtc.h" | ||
#include "armada_drm.h" | ||
#include "armada_hw.h" | ||
|
||
static int armada510_init(struct armada_private *priv, struct device *dev) | ||
{ | ||
priv->extclk[0] = devm_clk_get(dev, "ext_ref_clk_1"); | ||
|
||
if (IS_ERR(priv->extclk[0]) && PTR_ERR(priv->extclk[0]) == -ENOENT) | ||
priv->extclk[0] = ERR_PTR(-EPROBE_DEFER); | ||
|
||
return PTR_RET(priv->extclk[0]); | ||
} | ||
|
||
static int armada510_crtc_init(struct armada_crtc *dcrtc) | ||
{ | ||
/* Lower the watermark so to eliminate jitter at higher bandwidths */ | ||
armada_updatel(0x20, (1 << 11) | 0xff, dcrtc->base + LCD_CFG_RDREG4F); | ||
return 0; | ||
} | ||
|
||
/* | ||
* Armada510 specific SCLK register selection. | ||
* This gets called with sclk = NULL to test whether the mode is | ||
* supportable, and again with sclk != NULL to set the clocks up for | ||
* that. The former can return an error, but the latter is expected | ||
* not to. | ||
* | ||
* We currently are pretty rudimentary here, always selecting | ||
* EXT_REF_CLK_1 for LCD0 and erroring LCD1. This needs improvement! | ||
*/ | ||
static int armada510_crtc_compute_clock(struct armada_crtc *dcrtc, | ||
const struct drm_display_mode *mode, uint32_t *sclk) | ||
{ | ||
struct armada_private *priv = dcrtc->crtc.dev->dev_private; | ||
struct clk *clk = priv->extclk[0]; | ||
int ret; | ||
|
||
if (dcrtc->num == 1) | ||
return -EINVAL; | ||
|
||
if (IS_ERR(clk)) | ||
return PTR_ERR(clk); | ||
|
||
if (dcrtc->clk != clk) { | ||
ret = clk_prepare_enable(clk); | ||
if (ret) | ||
return ret; | ||
dcrtc->clk = clk; | ||
} | ||
|
||
if (sclk) { | ||
uint32_t rate, ref, div; | ||
|
||
rate = mode->clock * 1000; | ||
ref = clk_round_rate(clk, rate); | ||
div = DIV_ROUND_UP(ref, rate); | ||
if (div < 1) | ||
div = 1; | ||
|
||
clk_set_rate(clk, ref); | ||
*sclk = div | SCLK_510_EXTCLK1; | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
const struct armada_variant armada510_ops = { | ||
.has_spu_adv_reg = true, | ||
.spu_adv_reg = ADV_HWC32ENABLE | ADV_HWC32ARGB | ADV_HWC32BLEND, | ||
.init = armada510_init, | ||
.crtc_init = armada510_crtc_init, | ||
.crtc_compute_clock = armada510_crtc_compute_clock, | ||
}; |
Oops, something went wrong.