aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNathan Rossi <nathan@nathanrossi.com>2016-11-11 19:54:21 +1000
committerNathan Rossi <nathan@nathanrossi.com>2016-11-19 21:36:36 +1000
commit53d74fcac046c0b324c5005ceca491c8057f69ab (patch)
tree1cbb9fde60f1496ad3a61635cd912a7772d124c6
parentd1865ce5578ffd57ba3a61dc34e1997836199e99 (diff)
downloadmeta-xilinx-53d74fcac046c0b324c5005ceca491c8057f69ab.tar.gz
meta-xilinx-53d74fcac046c0b324c5005ceca491c8057f69ab.tar.bz2
meta-xilinx-53d74fcac046c0b324c5005ceca491c8057f69ab.zip
linux-xlnx_4.6: Update patches for zybo-linux-bd-zynq7 display support
Update the patches that enable the Digilent DRM encoder and clock cores. Also update the patch that fixes DPMS issues with the Xilinx DRM driver. Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
-rw-r--r--recipes-kernel/linux/linux-xlnx.inc2
-rw-r--r--recipes-kernel/linux/linux-xlnx/4.6/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch (renamed from recipes-kernel/linux/linux-xlnx/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch)23
-rw-r--r--recipes-kernel/linux/linux-xlnx/4.6/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch (renamed from recipes-kernel/linux/linux-xlnx/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch)24
-rw-r--r--recipes-kernel/linux/linux-xlnx/4.6/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch65
-rw-r--r--recipes-kernel/linux/linux-xlnx/drm-xilinx-Fix-DPMS-transition-to-on.patch46
-rw-r--r--recipes-kernel/linux/linux-xlnx_4.6.bb7
6 files changed, 102 insertions, 65 deletions
diff --git a/recipes-kernel/linux/linux-xlnx.inc b/recipes-kernel/linux/linux-xlnx.inc
index 89ce20d7..f3beaf89 100644
--- a/recipes-kernel/linux/linux-xlnx.inc
+++ b/recipes-kernel/linux/linux-xlnx.inc
@@ -7,7 +7,7 @@ PV = "${LINUX_VERSION}${LINUX_VERSION_EXTENSION}+git${SRCPV}"
KBRANCH ?= ""
SRCBRANCHARG = "${@['nobranch=1', 'branch=${KBRANCH}'][d.getVar('KBRANCH', True) != '']}"
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux-xlnx:"
+FILESOVERRIDES_append = ":${LINUX_VERSION}"
SRC_URI = " \
git://github.com/Xilinx/linux-xlnx.git;protocol=https;${SRCBRANCHARG} \
file://xilinx-base;type=kmeta;destsuffix=xilinx-base \
diff --git a/recipes-kernel/linux/linux-xlnx/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch b/recipes-kernel/linux/linux-xlnx/4.6/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch
index 892455af..1b78e9b9 100644
--- a/recipes-kernel/linux/linux-xlnx/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch
+++ b/recipes-kernel/linux/linux-xlnx/4.6/0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch
@@ -1,8 +1,7 @@
-From 3d1820b308dcc9344d8e7df4a8a712632fb77b97 Mon Sep 17 00:00:00 2001
-Message-Id: <3d1820b308dcc9344d8e7df4a8a712632fb77b97.1460291687.git.jason.wu.misc@gmail.com>
+From 9f144ae13de8a48eda11af4d5738338894ad92c6 Mon Sep 17 00:00:00 2001
From: Jason Wu <jason.wu.misc@gmail.com>
Date: Sun, 10 Apr 2016 13:14:13 +1000
-Subject: [LINUX] [PATCH] drm: xilinx: Add encoder for Digilent boards
+Subject: [PATCH 1/3] drm: xilinx: Add encoder for Digilent boards
Add the dglnt_encoder driver that enables DRM support for the VGA and
HDMI output ports found on many Digilent boards.
@@ -12,11 +11,17 @@ Upstream-Status: Pending
Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
---
-github.com () linux-xlnx.git xlnx/master
+ .../bindings/drm/xilinx/dglnt_encoder.txt | 23 +++
+ drivers/gpu/drm/xilinx/Kconfig | 6 +
+ drivers/gpu/drm/xilinx/Makefile | 1 +
+ drivers/gpu/drm/xilinx/dglnt_encoder.c | 217 +++++++++++++++++++++
+ 4 files changed, 247 insertions(+)
+ create mode 100644 Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
+ create mode 100644 drivers/gpu/drm/xilinx/dglnt_encoder.c
diff --git a/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
new file mode 100644
-index 0000000..242b24e
+index 0000000000..242b24e482
--- /dev/null
+++ b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
@@ -0,0 +1,23 @@
@@ -44,7 +49,7 @@ index 0000000..242b24e
+ dglnt,edid-i2c = <&i2c1>;
+ };
diff --git a/drivers/gpu/drm/xilinx/Kconfig b/drivers/gpu/drm/xilinx/Kconfig
-index a713b17..c32a4a6 100644
+index a713b17673..c32a4a679e 100644
--- a/drivers/gpu/drm/xilinx/Kconfig
+++ b/drivers/gpu/drm/xilinx/Kconfig
@@ -21,3 +21,9 @@ config DRM_XILINX_DP_SUB
@@ -58,7 +63,7 @@ index a713b17..c32a4a6 100644
+ help
+ DRM slave encoder for Video-out on Digilent boards.
diff --git a/drivers/gpu/drm/xilinx/Makefile b/drivers/gpu/drm/xilinx/Makefile
-index 705472c..a571bd9 100644
+index 705472c338..a571bd96cf 100644
--- a/drivers/gpu/drm/xilinx/Makefile
+++ b/drivers/gpu/drm/xilinx/Makefile
@@ -10,3 +10,4 @@ xilinx_drm-y += xilinx_cresample.o xilinx_osd.o xilinx_rgb2yuv.o xilinx_vtc.o
@@ -68,7 +73,7 @@ index 705472c..a571bd9 100644
+obj-$(CONFIG_DRM_DIGILENT_ENCODER) += dglnt_encoder.o
diff --git a/drivers/gpu/drm/xilinx/dglnt_encoder.c b/drivers/gpu/drm/xilinx/dglnt_encoder.c
new file mode 100644
-index 0000000..26a2398
+index 0000000000..26a23986f9
--- /dev/null
+++ b/drivers/gpu/drm/xilinx/dglnt_encoder.c
@@ -0,0 +1,217 @@
@@ -290,5 +295,5 @@ index 0000000..26a2398
+MODULE_DESCRIPTION("DRM slave encoder for Video-out on Digilent boards");
+MODULE_LICENSE("GPL v2");
--
-1.9.1
+2.10.2
diff --git a/recipes-kernel/linux/linux-xlnx/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch b/recipes-kernel/linux/linux-xlnx/4.6/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch
index b508fc27..5551b816 100644
--- a/recipes-kernel/linux/linux-xlnx/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch
+++ b/recipes-kernel/linux/linux-xlnx/4.6/0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch
@@ -1,7 +1,7 @@
-From e3b9c3186bbdf9cd5d084c62ecd232b57a316d3f Mon Sep 17 00:00:00 2001
+From b1c1dbc241385fcf1f85c5be9a6fb30fd70c784d Mon Sep 17 00:00:00 2001
From: Jason Wu <jason.wu.misc@gmail.com>
Date: Sun, 10 Apr 2016 13:16:06 +1000
-Subject: [PATCH] clk: Add driver for axi_dynclk IP Core
+Subject: [PATCH 2/3] clk: Add driver for axi_dynclk IP Core
Add support for the axi_dynclk IP Core available from Digilent. This IP
core dynamically configures the clock resources inside a Xilinx FPGA to
@@ -11,12 +11,18 @@ Upstream-Status: Pending
Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
+---
+ drivers/clk/Kconfig | 8 +
+ drivers/clk/Makefile | 1 +
+ drivers/clk/clk-dglnt-dynclk.c | 547 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 556 insertions(+)
+ create mode 100644 drivers/clk/clk-dglnt-dynclk.c
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
-index c3e3a02..29dfd15 100644
+index d42af55820..e276d9a27e 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
-@@ -147,6 +147,14 @@ config CLK_QORIQ
+@@ -158,6 +158,14 @@ config CLK_QORIQ
This adds the clock driver support for Freescale QorIQ platforms
using common clock framework.
@@ -32,12 +38,12 @@ index c3e3a02..29dfd15 100644
bool "Clock driver for APM XGene SoC"
default y
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
-index 820714c..9043f45 100644
+index e861470ef1..6c0a5a8d6b 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
-@@ -22,6 +22,7 @@ obj-$(CONFIG_COMMON_CLK_AXI_CLKGEN) += clk-axi-clkgen.o
- obj-$(CONFIG_ARCH_AXXIA) += clk-axm5516.o
+@@ -23,6 +23,7 @@ obj-$(CONFIG_ARCH_AXXIA) += clk-axm5516.o
obj-$(CONFIG_COMMON_CLK_CDCE706) += clk-cdce706.o
+ obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o
obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o
+obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o
obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o
@@ -45,7 +51,7 @@ index 820714c..9043f45 100644
obj-$(CONFIG_MACH_LOONGSON32) += clk-ls1x.o
diff --git a/drivers/clk/clk-dglnt-dynclk.c b/drivers/clk/clk-dglnt-dynclk.c
new file mode 100644
-index 0000000..496ad5f
+index 0000000000..496ad5fc90
--- /dev/null
+++ b/drivers/clk/clk-dglnt-dynclk.c
@@ -0,0 +1,547 @@
@@ -597,5 +603,5 @@ index 0000000..496ad5f
+MODULE_AUTHOR("Sam Bobrowicz <sbobrowicz@digilentinc.com>");
+MODULE_DESCRIPTION("CCF Driver for Digilent axi_dynclk IP Core");
--
-1.9.1
+2.10.2
diff --git a/recipes-kernel/linux/linux-xlnx/4.6/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch b/recipes-kernel/linux/linux-xlnx/4.6/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch
new file mode 100644
index 00000000..f0f51c3d
--- /dev/null
+++ b/recipes-kernel/linux/linux-xlnx/4.6/0003-drm-xilinx-Fix-DPMS-transition-to-on.patch
@@ -0,0 +1,65 @@
+From aec919daafd960b5bfcb8eb2352bc7f2857df56f Mon Sep 17 00:00:00 2001
+From: Nathan Rossi <nathan@nathanrossi.com>
+Date: Mon, 2 May 2016 23:46:42 +1000
+Subject: [PATCH 3/3] drm: xilinx: Fix DPMS transition to on
+
+Fix the issues where the VTC is reset (losing its timing config).
+
+Also fix the issue where the plane destroys its DMA descriptors and
+marks the DMA channels as inactive but never recreates the descriptors
+and never updates the active state when turning DPMS back on.
+
+Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
+Upstream-Status: Pending [This is a workaround]
+---
+ drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | 1 -
+ drivers/gpu/drm/xilinx/xilinx_drm_plane.c | 7 +++----
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
+index 33a7931c2e..0f346c53de 100644
+--- a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
++++ b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
+@@ -78,7 +78,6 @@ static void xilinx_drm_crtc_dpms(struct drm_crtc *base_crtc, int dpms)
+ default:
+ if (crtc->vtc) {
+ xilinx_vtc_disable(crtc->vtc);
+- xilinx_vtc_reset(crtc->vtc);
+ }
+ if (crtc->cresample) {
+ xilinx_cresample_disable(crtc->cresample);
+diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
+index 7fc110a8a5..83fcfd6db5 100644
+--- a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
++++ b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
+@@ -151,9 +151,7 @@ void xilinx_drm_plane_dpms(struct drm_plane *base_plane, int dpms)
+ }
+
+ /* start dma engine */
+- for (i = 0; i < MAX_NUM_SUB_PLANES; i++)
+- if (plane->dma[i].chan && plane->dma[i].is_active)
+- dma_async_issue_pending(plane->dma[i].chan);
++ xilinx_drm_plane_commit(base_plane);
+
+ if (plane->rgb2yuv)
+ xilinx_rgb2yuv_enable(plane->rgb2yuv);
+@@ -228,7 +226,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
+ for (i = 0; i < MAX_NUM_SUB_PLANES; i++) {
+ struct xilinx_drm_plane_dma *dma = &plane->dma[i];
+
+- if (dma->chan && dma->is_active) {
++ if (dma->chan) {
+ flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
+ desc = dmaengine_prep_interleaved_dma(dma->chan,
+ &dma->xt,
+@@ -241,6 +239,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
+ dmaengine_submit(desc);
+
+ dma_async_issue_pending(dma->chan);
++ dma->is_active = true;
+ }
+ }
+ }
+--
+2.10.2
+
diff --git a/recipes-kernel/linux/linux-xlnx/drm-xilinx-Fix-DPMS-transition-to-on.patch b/recipes-kernel/linux/linux-xlnx/drm-xilinx-Fix-DPMS-transition-to-on.patch
deleted file mode 100644
index d60a7514..00000000
--- a/recipes-kernel/linux/linux-xlnx/drm-xilinx-Fix-DPMS-transition-to-on.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From e4264e80116684297e353f6da4156c4ad6f8a03a Mon Sep 17 00:00:00 2001
-From: Nathan Rossi <nathan@nathanrossi.com>
-Date: Mon, 2 May 2016 23:46:42 +1000
-Subject: [PATCH] drm: xilinx: Fix DPMS transition to on
-
-Fix the issues where the VTC is reset (losing its timing config) as well
-as fixing the issue where the plane destroys its DMA descriptor but
-never recreates it when turning back on.
-
-Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
-Upstream-Status: Pending [This is a workaround]
----
- drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | 2 +-
- drivers/gpu/drm/xilinx/xilinx_drm_plane.c | 3 ++-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
-index 5925d11..ddb75fc 100644
---- a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
-+++ b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
-@@ -78,7 +78,7 @@ static void xilinx_drm_crtc_dpms(struct drm_crtc *base_crtc, int dpms)
- default:
- if (crtc->vtc) {
- xilinx_vtc_disable(crtc->vtc);
-- xilinx_vtc_reset(crtc->vtc);
-+ /*xilinx_vtc_reset(crtc->vtc);*/
- }
- if (crtc->cresample) {
- xilinx_cresample_disable(crtc->cresample);
-diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
-index 8a86735..6de8eb7 100644
---- a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
-+++ b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
-@@ -146,7 +146,8 @@ void xilinx_drm_plane_dpms(struct drm_plane *base_plane, int dpms)
- }
-
- /* start dma engine */
-- dma_async_issue_pending(plane->dma.chan);
-+ /*dma_async_issue_pending(plane->dma.chan);*/
-+ xilinx_drm_plane_commit(base_plane);
-
- if (plane->rgb2yuv)
- xilinx_rgb2yuv_enable(plane->rgb2yuv);
---
-2.8.1
-
diff --git a/recipes-kernel/linux/linux-xlnx_4.6.bb b/recipes-kernel/linux/linux-xlnx_4.6.bb
index b2402ea7..fdf865aa 100644
--- a/recipes-kernel/linux/linux-xlnx_4.6.bb
+++ b/recipes-kernel/linux/linux-xlnx_4.6.bb
@@ -3,3 +3,10 @@ LINUX_VERSION = "4.6"
SRCREV ?="0e4e4071493171bbac37bf60709022f49171c813"
include linux-xlnx.inc
+
+SRC_URI_append_zybo-linux-bd-zynq7 = " \
+ file://0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch \
+ file://0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch \
+ file://0003-drm-xilinx-Fix-DPMS-transition-to-on.patch \
+ "
+