summaryrefslogtreecommitdiffstats
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
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}"
7KBRANCH ?= "" 7KBRANCH ?= ""
8SRCBRANCHARG = "${@['nobranch=1', 'branch=${KBRANCH}'][d.getVar('KBRANCH', True) != '']}" 8SRCBRANCHARG = "${@['nobranch=1', 'branch=${KBRANCH}'][d.getVar('KBRANCH', True) != '']}"
9 9
10FILESEXTRAPATHS_prepend := "${THISDIR}/linux-xlnx:" 10FILESOVERRIDES_append = ":${LINUX_VERSION}"
11SRC_URI = " \ 11SRC_URI = " \
12 git://github.com/Xilinx/linux-xlnx.git;protocol=https;${SRCBRANCHARG} \ 12 git://github.com/Xilinx/linux-xlnx.git;protocol=https;${SRCBRANCHARG} \
13 file://xilinx-base;type=kmeta;destsuffix=xilinx-base \ 13 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 @@
1From 3d1820b308dcc9344d8e7df4a8a712632fb77b97 Mon Sep 17 00:00:00 2001 1From 9f144ae13de8a48eda11af4d5738338894ad92c6 Mon Sep 17 00:00:00 2001
2Message-Id: <3d1820b308dcc9344d8e7df4a8a712632fb77b97.1460291687.git.jason.wu.misc@gmail.com>
3From: Jason Wu <jason.wu.misc@gmail.com> 2From: Jason Wu <jason.wu.misc@gmail.com>
4Date: Sun, 10 Apr 2016 13:14:13 +1000 3Date: Sun, 10 Apr 2016 13:14:13 +1000
5Subject: [LINUX] [PATCH] drm: xilinx: Add encoder for Digilent boards 4Subject: [PATCH 1/3] drm: xilinx: Add encoder for Digilent boards
6 5
7Add the dglnt_encoder driver that enables DRM support for the VGA and 6Add the dglnt_encoder driver that enables DRM support for the VGA and
8HDMI output ports found on many Digilent boards. 7HDMI output ports found on many Digilent boards.
@@ -12,11 +11,17 @@ Upstream-Status: Pending
12Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com> 11Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
13Signed-off-by: Jason Wu <jason.wu.misc@gmail.com> 12Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
14--- 13---
15github.com () linux-xlnx.git xlnx/master 14 .../bindings/drm/xilinx/dglnt_encoder.txt | 23 +++
15 drivers/gpu/drm/xilinx/Kconfig | 6 +
16 drivers/gpu/drm/xilinx/Makefile | 1 +
17 drivers/gpu/drm/xilinx/dglnt_encoder.c | 217 +++++++++++++++++++++
18 4 files changed, 247 insertions(+)
19 create mode 100644 Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
20 create mode 100644 drivers/gpu/drm/xilinx/dglnt_encoder.c
16 21
17diff --git a/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt 22diff --git a/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
18new file mode 100644 23new file mode 100644
19index 0000000..242b24e 24index 0000000000..242b24e482
20--- /dev/null 25--- /dev/null
21+++ b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt 26+++ b/Documentation/devicetree/bindings/drm/xilinx/dglnt_encoder.txt
22@@ -0,0 +1,23 @@ 27@@ -0,0 +1,23 @@
@@ -44,7 +49,7 @@ index 0000000..242b24e
44+ dglnt,edid-i2c = <&i2c1>; 49+ dglnt,edid-i2c = <&i2c1>;
45+ }; 50+ };
46diff --git a/drivers/gpu/drm/xilinx/Kconfig b/drivers/gpu/drm/xilinx/Kconfig 51diff --git a/drivers/gpu/drm/xilinx/Kconfig b/drivers/gpu/drm/xilinx/Kconfig
47index a713b17..c32a4a6 100644 52index a713b17673..c32a4a679e 100644
48--- a/drivers/gpu/drm/xilinx/Kconfig 53--- a/drivers/gpu/drm/xilinx/Kconfig
49+++ b/drivers/gpu/drm/xilinx/Kconfig 54+++ b/drivers/gpu/drm/xilinx/Kconfig
50@@ -21,3 +21,9 @@ config DRM_XILINX_DP_SUB 55@@ -21,3 +21,9 @@ config DRM_XILINX_DP_SUB
@@ -58,7 +63,7 @@ index a713b17..c32a4a6 100644
58+ help 63+ help
59+ DRM slave encoder for Video-out on Digilent boards. 64+ DRM slave encoder for Video-out on Digilent boards.
60diff --git a/drivers/gpu/drm/xilinx/Makefile b/drivers/gpu/drm/xilinx/Makefile 65diff --git a/drivers/gpu/drm/xilinx/Makefile b/drivers/gpu/drm/xilinx/Makefile
61index 705472c..a571bd9 100644 66index 705472c338..a571bd96cf 100644
62--- a/drivers/gpu/drm/xilinx/Makefile 67--- a/drivers/gpu/drm/xilinx/Makefile
63+++ b/drivers/gpu/drm/xilinx/Makefile 68+++ b/drivers/gpu/drm/xilinx/Makefile
64@@ -10,3 +10,4 @@ xilinx_drm-y += xilinx_cresample.o xilinx_osd.o xilinx_rgb2yuv.o xilinx_vtc.o 69@@ -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
68+obj-$(CONFIG_DRM_DIGILENT_ENCODER) += dglnt_encoder.o 73+obj-$(CONFIG_DRM_DIGILENT_ENCODER) += dglnt_encoder.o
69diff --git a/drivers/gpu/drm/xilinx/dglnt_encoder.c b/drivers/gpu/drm/xilinx/dglnt_encoder.c 74diff --git a/drivers/gpu/drm/xilinx/dglnt_encoder.c b/drivers/gpu/drm/xilinx/dglnt_encoder.c
70new file mode 100644 75new file mode 100644
71index 0000000..26a2398 76index 0000000000..26a23986f9
72--- /dev/null 77--- /dev/null
73+++ b/drivers/gpu/drm/xilinx/dglnt_encoder.c 78+++ b/drivers/gpu/drm/xilinx/dglnt_encoder.c
74@@ -0,0 +1,217 @@ 79@@ -0,0 +1,217 @@
@@ -290,5 +295,5 @@ index 0000000..26a2398
290+MODULE_DESCRIPTION("DRM slave encoder for Video-out on Digilent boards"); 295+MODULE_DESCRIPTION("DRM slave encoder for Video-out on Digilent boards");
291+MODULE_LICENSE("GPL v2"); 296+MODULE_LICENSE("GPL v2");
292-- 297--
2931.9.1 2982.10.2
294 299
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 @@
1From e3b9c3186bbdf9cd5d084c62ecd232b57a316d3f Mon Sep 17 00:00:00 2001 1From b1c1dbc241385fcf1f85c5be9a6fb30fd70c784d Mon Sep 17 00:00:00 2001
2From: Jason Wu <jason.wu.misc@gmail.com> 2From: Jason Wu <jason.wu.misc@gmail.com>
3Date: Sun, 10 Apr 2016 13:16:06 +1000 3Date: Sun, 10 Apr 2016 13:16:06 +1000
4Subject: [PATCH] clk: Add driver for axi_dynclk IP Core 4Subject: [PATCH 2/3] clk: Add driver for axi_dynclk IP Core
5 5
6Add support for the axi_dynclk IP Core available from Digilent. This IP 6Add support for the axi_dynclk IP Core available from Digilent. This IP
7core dynamically configures the clock resources inside a Xilinx FPGA to 7core dynamically configures the clock resources inside a Xilinx FPGA to
@@ -11,12 +11,18 @@ Upstream-Status: Pending
11 11
12Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com> 12Signed-off-by: Sam Bobrowicz <sbobrowicz@digilentinc.com>
13Signed-off-by: Jason Wu <jason.wu.misc@gmail.com> 13Signed-off-by: Jason Wu <jason.wu.misc@gmail.com>
14---
15 drivers/clk/Kconfig | 8 +
16 drivers/clk/Makefile | 1 +
17 drivers/clk/clk-dglnt-dynclk.c | 547 +++++++++++++++++++++++++++++++++++++++++
18 3 files changed, 556 insertions(+)
19 create mode 100644 drivers/clk/clk-dglnt-dynclk.c
14 20
15diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig 21diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
16index c3e3a02..29dfd15 100644 22index d42af55820..e276d9a27e 100644
17--- a/drivers/clk/Kconfig 23--- a/drivers/clk/Kconfig
18+++ b/drivers/clk/Kconfig 24+++ b/drivers/clk/Kconfig
19@@ -147,6 +147,14 @@ config CLK_QORIQ 25@@ -158,6 +158,14 @@ config CLK_QORIQ
20 This adds the clock driver support for Freescale QorIQ platforms 26 This adds the clock driver support for Freescale QorIQ platforms
21 using common clock framework. 27 using common clock framework.
22 28
@@ -32,12 +38,12 @@ index c3e3a02..29dfd15 100644
32 bool "Clock driver for APM XGene SoC" 38 bool "Clock driver for APM XGene SoC"
33 default y 39 default y
34diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile 40diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
35index 820714c..9043f45 100644 41index e861470ef1..6c0a5a8d6b 100644
36--- a/drivers/clk/Makefile 42--- a/drivers/clk/Makefile
37+++ b/drivers/clk/Makefile 43+++ b/drivers/clk/Makefile
38@@ -22,6 +22,7 @@ obj-$(CONFIG_COMMON_CLK_AXI_CLKGEN) += clk-axi-clkgen.o 44@@ -23,6 +23,7 @@ obj-$(CONFIG_ARCH_AXXIA) += clk-axm5516.o
39 obj-$(CONFIG_ARCH_AXXIA) += clk-axm5516.o
40 obj-$(CONFIG_COMMON_CLK_CDCE706) += clk-cdce706.o 45 obj-$(CONFIG_COMMON_CLK_CDCE706) += clk-cdce706.o
46 obj-$(CONFIG_COMMON_CLK_CS2000_CP) += clk-cs2000-cp.o
41 obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o 47 obj-$(CONFIG_ARCH_CLPS711X) += clk-clps711x.o
42+obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o 48+obj-$(CONFIG_COMMON_CLK_DGLNT_DYNCLK) += clk-dglnt-dynclk.o
43 obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o 49 obj-$(CONFIG_ARCH_EFM32) += clk-efm32gg.o
@@ -45,7 +51,7 @@ index 820714c..9043f45 100644
45 obj-$(CONFIG_MACH_LOONGSON32) += clk-ls1x.o 51 obj-$(CONFIG_MACH_LOONGSON32) += clk-ls1x.o
46diff --git a/drivers/clk/clk-dglnt-dynclk.c b/drivers/clk/clk-dglnt-dynclk.c 52diff --git a/drivers/clk/clk-dglnt-dynclk.c b/drivers/clk/clk-dglnt-dynclk.c
47new file mode 100644 53new file mode 100644
48index 0000000..496ad5f 54index 0000000000..496ad5fc90
49--- /dev/null 55--- /dev/null
50+++ b/drivers/clk/clk-dglnt-dynclk.c 56+++ b/drivers/clk/clk-dglnt-dynclk.c
51@@ -0,0 +1,547 @@ 57@@ -0,0 +1,547 @@
@@ -597,5 +603,5 @@ index 0000000..496ad5f
597+MODULE_AUTHOR("Sam Bobrowicz <sbobrowicz@digilentinc.com>"); 603+MODULE_AUTHOR("Sam Bobrowicz <sbobrowicz@digilentinc.com>");
598+MODULE_DESCRIPTION("CCF Driver for Digilent axi_dynclk IP Core"); 604+MODULE_DESCRIPTION("CCF Driver for Digilent axi_dynclk IP Core");
599-- 605--
6001.9.1 6062.10.2
601 607
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 @@
1From aec919daafd960b5bfcb8eb2352bc7f2857df56f Mon Sep 17 00:00:00 2001
2From: Nathan Rossi <nathan@nathanrossi.com>
3Date: Mon, 2 May 2016 23:46:42 +1000
4Subject: [PATCH 3/3] drm: xilinx: Fix DPMS transition to on
5
6Fix the issues where the VTC is reset (losing its timing config).
7
8Also fix the issue where the plane destroys its DMA descriptors and
9marks the DMA channels as inactive but never recreates the descriptors
10and never updates the active state when turning DPMS back on.
11
12Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
13Upstream-Status: Pending [This is a workaround]
14---
15 drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | 1 -
16 drivers/gpu/drm/xilinx/xilinx_drm_plane.c | 7 +++----
17 2 files changed, 3 insertions(+), 5 deletions(-)
18
19diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
20index 33a7931c2e..0f346c53de 100644
21--- a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
22+++ b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
23@@ -78,7 +78,6 @@ static void xilinx_drm_crtc_dpms(struct drm_crtc *base_crtc, int dpms)
24 default:
25 if (crtc->vtc) {
26 xilinx_vtc_disable(crtc->vtc);
27- xilinx_vtc_reset(crtc->vtc);
28 }
29 if (crtc->cresample) {
30 xilinx_cresample_disable(crtc->cresample);
31diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
32index 7fc110a8a5..83fcfd6db5 100644
33--- a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
34+++ b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
35@@ -151,9 +151,7 @@ void xilinx_drm_plane_dpms(struct drm_plane *base_plane, int dpms)
36 }
37
38 /* start dma engine */
39- for (i = 0; i < MAX_NUM_SUB_PLANES; i++)
40- if (plane->dma[i].chan && plane->dma[i].is_active)
41- dma_async_issue_pending(plane->dma[i].chan);
42+ xilinx_drm_plane_commit(base_plane);
43
44 if (plane->rgb2yuv)
45 xilinx_rgb2yuv_enable(plane->rgb2yuv);
46@@ -228,7 +226,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
47 for (i = 0; i < MAX_NUM_SUB_PLANES; i++) {
48 struct xilinx_drm_plane_dma *dma = &plane->dma[i];
49
50- if (dma->chan && dma->is_active) {
51+ if (dma->chan) {
52 flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
53 desc = dmaengine_prep_interleaved_dma(dma->chan,
54 &dma->xt,
55@@ -241,6 +239,7 @@ void xilinx_drm_plane_commit(struct drm_plane *base_plane)
56 dmaengine_submit(desc);
57
58 dma_async_issue_pending(dma->chan);
59+ dma->is_active = true;
60 }
61 }
62 }
63--
642.10.2
65
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 @@
1From e4264e80116684297e353f6da4156c4ad6f8a03a Mon Sep 17 00:00:00 2001
2From: Nathan Rossi <nathan@nathanrossi.com>
3Date: Mon, 2 May 2016 23:46:42 +1000
4Subject: [PATCH] drm: xilinx: Fix DPMS transition to on
5
6Fix the issues where the VTC is reset (losing its timing config) as well
7as fixing the issue where the plane destroys its DMA descriptor but
8never recreates it when turning back on.
9
10Signed-off-by: Nathan Rossi <nathan@nathanrossi.com>
11Upstream-Status: Pending [This is a workaround]
12---
13 drivers/gpu/drm/xilinx/xilinx_drm_crtc.c | 2 +-
14 drivers/gpu/drm/xilinx/xilinx_drm_plane.c | 3 ++-
15 2 files changed, 3 insertions(+), 2 deletions(-)
16
17diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
18index 5925d11..ddb75fc 100644
19--- a/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
20+++ b/drivers/gpu/drm/xilinx/xilinx_drm_crtc.c
21@@ -78,7 +78,7 @@ static void xilinx_drm_crtc_dpms(struct drm_crtc *base_crtc, int dpms)
22 default:
23 if (crtc->vtc) {
24 xilinx_vtc_disable(crtc->vtc);
25- xilinx_vtc_reset(crtc->vtc);
26+ /*xilinx_vtc_reset(crtc->vtc);*/
27 }
28 if (crtc->cresample) {
29 xilinx_cresample_disable(crtc->cresample);
30diff --git a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
31index 8a86735..6de8eb7 100644
32--- a/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
33+++ b/drivers/gpu/drm/xilinx/xilinx_drm_plane.c
34@@ -146,7 +146,8 @@ void xilinx_drm_plane_dpms(struct drm_plane *base_plane, int dpms)
35 }
36
37 /* start dma engine */
38- dma_async_issue_pending(plane->dma.chan);
39+ /*dma_async_issue_pending(plane->dma.chan);*/
40+ xilinx_drm_plane_commit(base_plane);
41
42 if (plane->rgb2yuv)
43 xilinx_rgb2yuv_enable(plane->rgb2yuv);
44--
452.8.1
46
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"
3SRCREV ?="0e4e4071493171bbac37bf60709022f49171c813" 3SRCREV ?="0e4e4071493171bbac37bf60709022f49171c813"
4 4
5include linux-xlnx.inc 5include linux-xlnx.inc
6
7SRC_URI_append_zybo-linux-bd-zynq7 = " \
8 file://0001-drm-xilinx-Add-encoder-for-Digilent-boards.patch \
9 file://0002-clk-Add-driver-for-axi_dynclk-IP-Core.patch \
10 file://0003-drm-xilinx-Fix-DPMS-transition-to-on.patch \
11 "
12