summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManjukumar Matha <manjukumar.harthikote-matha@xilinx.com>2017-05-09 11:35:15 -0700
committerNathan Rossi <nathan@nathanrossi.com>2017-05-15 21:32:36 +1000
commit4a7e3d5195f8b57fa95b2e76fd737d3752165b6f (patch)
tree53fe9ac01297f41fc588ea85993a39db05eaf4a9
parenteb1497ce130e6ac60dd1200a86b23e6bd19e4fc0 (diff)
downloadmeta-xilinx-4a7e3d5195f8b57fa95b2e76fd737d3752165b6f.tar.gz
kernel-module-mali.bb: Update MALI kernel module to r7p0
Update kernel-module-mali to r7p0 version Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com> Reviewed-by: Nathan Rossi <nathan@nathanrossi.com>
-rw-r--r--recipes-graphics/mali/kernel-module-mali.bb22
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch (renamed from recipes-graphics/mali/kernel-module-mali/Makefile.patch)25
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0001-mali-r5p1-01rel0-Remove-unused-trace-macros.patch38
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch52
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch33
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch47
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch29
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch30
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch92
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch34
-rw-r--r--recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch90
11 files changed, 441 insertions, 51 deletions
diff --git a/recipes-graphics/mali/kernel-module-mali.bb b/recipes-graphics/mali/kernel-module-mali.bb
index 4efece39..0ad1a49b 100644
--- a/recipes-graphics/mali/kernel-module-mali.bb
+++ b/recipes-graphics/mali/kernel-module-mali.bb
@@ -3,24 +3,31 @@ SECTION = "kernel/modules"
3 3
4LICENSE = "GPLv2" 4LICENSE = "GPLv2"
5LIC_FILES_CHKSUM = " \ 5LIC_FILES_CHKSUM = " \
6 file://linux/license/gpl/mali_kernel_license.h;md5=68c66513a9dacef77a52c3d6c5e6afd5 \ 6 file://linux/license/gpl/mali_kernel_license.h;md5=1436c0d104589824163a3eb50fbb5050 \
7 " 7 "
8 8
9PV = "r5p1-01rel0" 9PV = "r7p0-00rel0"
10 10
11SRC_URI = " \ 11SRC_URI = " \
12 http://malideveloper.arm.com/downloads/drivers/DX910/${PV}/DX910-SW-99002-${PV}.tgz \ 12 http://malideveloper.arm.com/downloads/drivers/DX910/${PV}/DX910-SW-99002-${PV}.tgz \
13 file://Makefile.patch \ 13 file://0001-Change-Makefile-to-be-compatible-with-Yocto.patch \
14 file://0001-mali-r5p1-01rel0-Remove-unused-trace-macros.patch \ 14 file://0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch \
15 file://0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch \
16 file://0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch \
17 file://0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch \
18 file://0006-staging-mali-r7p0-page_cache_release-to-put_page.patch \
19 file://0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch \
20 file://0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch \
21 file://0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch \
15 " 22 "
16SRC_URI[md5sum] = "9c85c113e4d41ae992e45ba27287d1ab" 23SRC_URI[md5sum] = "db3ef3258eb55700484ecadfdce1fee1"
17SRC_URI[sha256sum] = "86209c99c36a7622402b016b6f764c212b738ccdec9cdc6d6f16758c013957a0" 24SRC_URI[sha256sum] = "496ba80684aa4236806891a8445978849f7dd07299f5e58b14d52cd5e7ba0536"
18 25
19inherit module 26inherit module
20 27
21do_make_scripts[depends] += "virtual/kernel:do_unpack" 28do_make_scripts[depends] += "virtual/kernel:do_unpack"
22 29
23S = "${WORKDIR}/driver/src/devicedrv/mali" 30S = "${WORKDIR}/DX910-SW-99002-${PV}/driver/src/devicedrv/mali"
24 31
25COMPATIBLE_MACHINE = "^$" 32COMPATIBLE_MACHINE = "^$"
26COMPATIBLE_MACHINE_zynqmp = "zynqmp" 33COMPATIBLE_MACHINE_zynqmp = "zynqmp"
@@ -33,4 +40,5 @@ EXTRA_OEMAKE = 'KDIR="${STAGING_KERNEL_DIR}" \
33 MALI_SHARED_INTERRUPTS=1 \ 40 MALI_SHARED_INTERRUPTS=1 \
34 CROSS_COMPILE="${TARGET_PREFIX}" \ 41 CROSS_COMPILE="${TARGET_PREFIX}" \
35 O=${STAGING_KERNEL_BUILDDIR} \ 42 O=${STAGING_KERNEL_BUILDDIR} \
43 MALI_QUIET=1 \
36 ' 44 '
diff --git a/recipes-graphics/mali/kernel-module-mali/Makefile.patch b/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
index 0f056875..0314734e 100644
--- a/recipes-graphics/mali/kernel-module-mali/Makefile.patch
+++ b/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
@@ -1,10 +1,20 @@
1Change Makefile to be compatible with Yocto 1From d9a4441c31faef60b7f39692df6913d58ec69d1b Mon Sep 17 00:00:00 2001
2From: Hyun Kwon <hyun.kwon@xilinx.com>
3Date: Thu, 8 Sep 2016 09:56:40 -0700
4Subject: [PATCH 1/6] Change Makefile to be compatible with Yocto
2 5
3Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com> 6Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
7Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
4Upstream Status: Pending 8Upstream Status: Pending
5--- driver/src/devicedrv/mali/Makefile 2015-03-29 20:38:45.000000000 -0700 9---
6+++ b/Makefile 2016-01-26 20:13:56.053436042 -0800 10 driver/src/devicedrv/mali/Makefile | 13 +++++++++++--
7@@ -85,7 +85,11 @@ 11 1 file changed, 11 insertions(+), 2 deletions(-)
12
13diff --git a/driver/src/devicedrv/mali/Makefile b/driver/src/devicedrv/mali/Makefile
14index f39ae4d..9ef9713 100755
15--- Makefile
16+++ b/Makefile
17@@ -88,7 +88,11 @@ endif
8 # Define host system directory 18 # Define host system directory
9 KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build 19 KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build
10 20
@@ -17,8 +27,8 @@ Upstream Status: Pending
17 27
18 ifeq ($(ARCH), arm) 28 ifeq ($(ARCH), arm)
19 # when compiling for ARM we're cross compiling 29 # when compiling for ARM we're cross compiling
20@@ -170,10 +174,15 @@ 30@@ -193,10 +197,15 @@ ifeq ($(MALI_MEM_SWAP_TRACKING),1)
21 EXTRA_DEFINES += -DPROFILING_SKIP_PP_JOBS=1 -DPROFILING_SKIP_GP_JOBS=1 31 EXTRA_DEFINES += -DMALI_MEM_SWAP_TRACKING=1
22 endif 32 endif
23 33
24+EXTRA_DEFINES += -Wno-error=date-time 34+EXTRA_DEFINES += -Wno-error=date-time
@@ -34,3 +44,6 @@ Upstream Status: Pending
34 clean: 44 clean:
35 $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean 45 $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) clean
36 46
47--
482.7.4
49
diff --git a/recipes-graphics/mali/kernel-module-mali/0001-mali-r5p1-01rel0-Remove-unused-trace-macros.patch b/recipes-graphics/mali/kernel-module-mali/0001-mali-r5p1-01rel0-Remove-unused-trace-macros.patch
deleted file mode 100644
index b7758bed..00000000
--- a/recipes-graphics/mali/kernel-module-mali/0001-mali-r5p1-01rel0-Remove-unused-trace-macros.patch
+++ /dev/null
@@ -1,38 +0,0 @@
1From 79e49b32d8d52ac765e6ee30ff7d25b8660bd704 Mon Sep 17 00:00:00 2001
2From: Yasir-Khan <yasir_khan@mentor.com>
3Date: Fri, 4 Nov 2016 18:43:43 +0500
4Subject: [PATCH] mali: r5p1-01rel0: Remove unused trace macros
5
6TRACE_SYSTEM_STRING is not needed in each trace file anymore.
7
8Based on:
9https://patchwork.kernel.org/patch/6150651/
10https://github.com/Xilinx/linux-xlnx/commit/dadb5e41f28f9619debc9aae4ae543aa1dcd5be8
11
12Upstream-status: Pending
13
14Signed-off-by: Yasir-Khan <yasir_khan@mentor.com>
15---
16 src/devicedrv/mali/linux/mali_linux_trace.h | 2 --
17 1 file changed, 2 deletions(-)
18
19diff --git a/driver/src/devicedrv/mali/linux/mali_linux_trace.h b/driver/src/devicedrv/mali/linux/mali_linux_trace.h
20index c6cd2bf..195e3cf 100644
21--- a/linux/mali_linux_trace.h
22+++ b/linux/mali_linux_trace.h
23@@ -13,12 +13,10 @@
24
25 #include <linux/types.h>
26
27-#include <linux/stringify.h>
28 #include <linux/tracepoint.h>
29
30 #undef TRACE_SYSTEM
31 #define TRACE_SYSTEM mali
32-#define TRACE_SYSTEM_STRING __stringfy(TRACE_SYSTEM)
33
34 #define TRACE_INCLUDE_PATH .
35 #define TRACE_INCLUDE_FILE mali_linux_trace
36--
372.8.1
38
diff --git a/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch b/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
new file mode 100644
index 00000000..363153ee
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
@@ -0,0 +1,52 @@
1From 65a8f9eb32322538396607805dcbc28aa0aadcb7 Mon Sep 17 00:00:00 2001
2From: Hyun Kwon <hyun.kwon@xilinx.com>
3Date: Thu, 25 Jun 2015 17:14:42 -0700
4Subject: [PATCH 2/6] staging: mali: r7p0-00rel0: Add the ZYNQ/ZYNQMP platform
5
6Add the number of PP cores that is required for Zynq/ZynqMP configuration.
7
8Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
9Signed-off-by: Michal Simek <michal.simek@xilinx.com>
10Upstream Status: Pending
11---
12 driver/src/devicedrv/mali/platform/arm/arm.c | 10 ++++++++++
13 1 file changed, 10 insertions(+)
14
15diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c b/driver/src/devicedrv/mali/platform/arm/arm.c
16index a7ff1b2..0682842 100755
17--- platform/arm/arm.c
18+++ b/platform/arm/arm.c
19@@ -261,6 +261,10 @@ static struct mali_gpu_device_data mali_gpu_data = {
20 .dedicated_mem_start = 0x80000000, /* Physical start address (use 0xD0000000 for old indirect setup) */
21 .dedicated_mem_size = 0x10000000, /* 256MB */
22 #endif
23+#if defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
24+ .fb_start = 0x00000000,
25+ .fb_size = 0xfffff000,
26+#else
27 #if defined(CONFIG_ARM64)
28 /* Some framebuffer drivers get the framebuffer dynamically, such as through GEM,
29 * in which the memory resource can't be predicted in advance.
30@@ -271,6 +275,7 @@ static struct mali_gpu_device_data mali_gpu_data = {
31 .fb_start = 0xe0000000,
32 .fb_size = 0x01000000,
33 #endif
34+#endif /* !defined(CONFIG_ARCH_ZYNQ) && !defined(CONFIG_ARCH_ZYNQMP) */
35 .control_interval = 1000, /* 1000ms */
36 .utilization_callback = mali_gpu_utilization_callback,
37 .get_clock_info = NULL,
38@@ -505,6 +510,11 @@ int mali_platform_device_init(struct platform_device *device)
39 mali_write_phys(0xC0010020, 0xA); /* Enable direct memory mapping for FPGA */
40 }
41 }
42+#elif defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
43+
44+ MALI_DEBUG_PRINT(4, ("Registering Zynq/ZynqMP Mali-400 device\n"));
45+ num_pp_cores = 2;
46+
47 #endif
48
49 /* After kernel 3.15 device tree will default set dev
50--
512.7.4
52
diff --git a/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch b/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
new file mode 100644
index 00000000..fc0dc6e6
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
@@ -0,0 +1,33 @@
1From c86d22f1133647518a68f9f1cbe73e1797e68fa8 Mon Sep 17 00:00:00 2001
2From: Hyun Kwon <hyun.kwon@xilinx.com>
3Date: Tue, 3 May 2016 08:11:38 -0700
4Subject: [PATCH 3/6] staging: mali: r7p0-00rel0: Remove unused trace macros
5
6TRACE_SYSTEM_STRING is not need in each trace file anymore.
7
8Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
9Upstream Status: Pending
10---
11 driver/src/devicedrv/mali/linux/mali_linux_trace.h | 2 --
12 1 file changed, 2 deletions(-)
13
14diff --git a/driver/src/devicedrv/mali/linux/mali_linux_trace.h b/driver/src/devicedrv/mali/linux/mali_linux_trace.h
15index 2c91ddc..d4e45ab 100755
16--- linux/mali_linux_trace.h
17+++ b/linux/mali_linux_trace.h
18@@ -13,12 +13,10 @@
19
20 #include <linux/types.h>
21
22-#include <linux/stringify.h>
23 #include <linux/tracepoint.h>
24
25 #undef TRACE_SYSTEM
26 #define TRACE_SYSTEM mali
27-#define TRACE_SYSTEM_STRING __stringfy(TRACE_SYSTEM)
28
29 #define TRACE_INCLUDE_PATH .
30 #define TRACE_INCLUDE_FILE mali_linux_trace
31--
322.7.4
33
diff --git a/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch b/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
new file mode 100644
index 00000000..ce3bea0a
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
@@ -0,0 +1,47 @@
1From 3e6fb4697bddc4cfbb82e6a0b2f9f28d5c1d0a04 Mon Sep 17 00:00:00 2001
2From: Hyun Kwon <hyun.kwon@xilinx.com>
3Date: Wed, 29 Jun 2016 09:14:37 -0700
4Subject: [PATCH 4/6] staging: mali: r7p0-00rel0: Don't include
5 mali_read_phys() for zynq/zynqmp
6
7mali_read_phys() is not used with CONFIG_ARCH_ZYNQ and CONFIG_ARCH_ZYNQMP.
8
9Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
10Upstream Status: Pending
11---
12 driver/src/devicedrv/mali/platform/arm/arm.c | 4 ++++
13 1 file changed, 4 insertions(+)
14
15diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c b/driver/src/devicedrv/mali/platform/arm/arm.c
16index 0682842..c6f58d8 100755
17--- platform/arm/arm.c
18+++ b/platform/arm/arm.c
19@@ -38,7 +38,9 @@
20 static int mali_core_scaling_enable = 0;
21
22 void mali_gpu_utilization_callback(struct mali_gpu_utilization_data *data);
23+#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
24 static u32 mali_read_phys(u32 phys_addr);
25+#endif
26 #if defined(CONFIG_ARCH_REALVIEW)
27 static void mali_write_phys(u32 phys_addr, u32 value);
28 #endif
29@@ -578,6 +580,7 @@ int mali_platform_device_deinit(struct platform_device *device)
30
31 #endif /* CONFIG_MALI_DT */
32
33+#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
34 static u32 mali_read_phys(u32 phys_addr)
35 {
36 u32 phys_addr_page = phys_addr & 0xFFFFE000;
37@@ -592,6 +595,7 @@ static u32 mali_read_phys(u32 phys_addr)
38
39 return ret;
40 }
41+#endif
42
43 #if defined(CONFIG_ARCH_REALVIEW)
44 static void mali_write_phys(u32 phys_addr, u32 value)
45--
462.7.4
47
diff --git a/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch b/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
new file mode 100644
index 00000000..32dd9d45
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
@@ -0,0 +1,29 @@
1From ac3baaacbaa564e768529dcb2353a84eb47ae847 Mon Sep 17 00:00:00 2001
2From: Hyun Kwon <hyun.kwon@xilinx.com>
3Date: Mon, 12 Sep 2016 13:12:46 -0700
4Subject: [PATCH 5/6] mali: r7p0: PAGE_CACHE_SHIFT to PAGE_CACHE
5
609cbfea removed PAGE_CACHE_*.
7
8Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
9Upstream Status: Pending
10---
11 driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
15index 4793328..1aea47b 100755
16--- linux/mali_memory_swap_alloc.c
17+++ b/linux/mali_memory_swap_alloc.c
18@@ -52,7 +52,7 @@ extern struct mali_mem_os_allocator mali_mem_os_allocator;
19 #define MALI_SWAP_LOW_MEM_DEFAULT_VALUE (60*1024*1024)
20 #define MALI_SWAP_INVALIDATE_MALI_ADDRESS (0) /* Used to mark the given memory cookie is invalidate. */
21 #define MALI_SWAP_GLOBAL_SWAP_FILE_SIZE (0xFFFFFFFF)
22-#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_CACHE_SHIFT)
23+#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) >> PAGE_SHIFT)
24 #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX_RESERVE (1 << 15) /* Reserved for CoW nonlinear swap backend memory, the space size is 128MB. */
25
26 unsigned int mali_mem_swap_out_threshold_value = MALI_SWAP_LOW_MEM_DEFAULT_VALUE;
27--
282.7.4
29
diff --git a/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch b/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch
new file mode 100644
index 00000000..5582bfa4
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch
@@ -0,0 +1,30 @@
1From 9dd708ba609b826c07fa91d8a5ee56b368ae8183 Mon Sep 17 00:00:00 2001
2From: "madhurki@xilinx.com" <madhurki@xilinx.com>
3Date: Mon, 12 Sep 2016 17:14:34 -0700
4Subject: [PATCH 6/6] staging: mali: r7p0: page_cache_release() to put_page()
5
609cbfea replaced page_cache_release() to put_page().
7
8Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
9Signed-off-by: madhurki@xilinx.com <madhurki@xilinx.com>
10Upstream Status: Pending
11---
12 driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
16index 1aea47b..068e4d0 100755
17--- linux/mali_memory_swap_alloc.c
18+++ b/linux/mali_memory_swap_alloc.c
19@@ -183,7 +183,7 @@ static void mali_mem_swap_out_page_node(mali_page_node *page_node)
20 dma_unmap_page(&mali_platform_device->dev, page_node->swap_it->dma_addr,
21 _MALI_OSK_MALI_PAGE_SIZE, DMA_TO_DEVICE);
22 set_page_dirty(page_node->swap_it->page);
23- page_cache_release(page_node->swap_it->page);
24+ put_page(page_node->swap_it->page);
25 }
26
27 void mali_mem_swap_unlock_single_mem_backend(mali_mem_backend *mem_bkend)
28--
292.7.4
30
diff --git a/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch b/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
new file mode 100644
index 00000000..79c507d2
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
@@ -0,0 +1,92 @@
1From f0a49bccbdd910c48aab59e07aed98093f4a0fea Mon Sep 17 00:00:00 2001
2From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
3Date: Wed, 25 Jan 2017 02:59:40 -0800
4Subject: [PATCH 1/2] mali_memory_os_alloc.c: Align with dma_attrs changes from
5 4.8 Kernel
6
7From 4.8 Kernel the DMA attributes is no longer a pointer but an unsigned long.
8
9Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
10Upstream Status: Pending
11---
12 .../devicedrv/mali/linux/mali_memory_os_alloc.c | 25 +++++++++++++++++-----
13 1 file changed, 20 insertions(+), 5 deletions(-)
14
15diff --git a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
16index 7f229eb..08fa2fb 100755
17--- linux/mali_memory_os_alloc.c
18+++ b/linux/mali_memory_os_alloc.c
19@@ -26,9 +26,11 @@
20 #define MALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_PAGES (MALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB * 256)
21 #define MALI_OS_MEMORY_POOL_TRIM_JIFFIES (10 * CONFIG_HZ) /* Default to 10s */
22
23-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
24+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
25 /* Write combine dma_attrs */
26 static DEFINE_DMA_ATTRS(dma_attrs_wc);
27+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
28+static unsigned long dma_attrs_wc;
29 #endif
30
31 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)
32@@ -511,10 +513,14 @@ _mali_osk_errcode_t mali_mem_os_get_table_page(mali_dma_addr *phys, mali_io_addr
33 spin_unlock(&mali_mem_page_table_page_pool.lock);
34
35 if (_MALI_OSK_ERR_OK != ret) {
36-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
37+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
38 *mapping = dma_alloc_attrs(&mali_platform_device->dev,
39 _MALI_OSK_MALI_PAGE_SIZE, &tmp_phys,
40 GFP_KERNEL, &dma_attrs_wc);
41+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
42+ *mapping = dma_alloc_attrs(&mali_platform_device->dev,
43+ _MALI_OSK_MALI_PAGE_SIZE, &tmp_phys,
44+ GFP_KERNEL, dma_attrs_wc);
45 #else
46 *mapping = dma_alloc_writecombine(&mali_platform_device->dev,
47 _MALI_OSK_MALI_PAGE_SIZE, &tmp_phys, GFP_KERNEL);
48@@ -550,10 +556,14 @@ void mali_mem_os_release_table_page(mali_dma_addr phys, void *virt)
49 } else {
50 spin_unlock(&mali_mem_page_table_page_pool.lock);
51
52-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
53+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
54 dma_free_attrs(&mali_platform_device->dev,
55 _MALI_OSK_MALI_PAGE_SIZE, virt, phys,
56 &dma_attrs_wc);
57+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
58+ dma_free_attrs(&mali_platform_device->dev,
59+ _MALI_OSK_MALI_PAGE_SIZE, virt, phys,
60+ dma_attrs_wc);
61 #else
62 dma_free_writecombine(&mali_platform_device->dev,
63 _MALI_OSK_MALI_PAGE_SIZE, virt, phys);
64@@ -606,9 +616,12 @@ static void mali_mem_os_page_table_pool_free(size_t nr_to_free)
65
66 /* After releasing the spinlock: free the pages we removed from the pool. */
67 for (i = 0; i < nr_to_free; i++) {
68-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
69+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
70 dma_free_attrs(&mali_platform_device->dev, _MALI_OSK_MALI_PAGE_SIZE,
71 virt_arr[i], (dma_addr_t)phys_arr[i], &dma_attrs_wc);
72+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
73+ dma_free_attrs(&mali_platform_device->dev, _MALI_OSK_MALI_PAGE_SIZE,
74+ virt_arr[i], (dma_addr_t)phys_arr[i], dma_attrs_wc);
75 #else
76 dma_free_writecombine(&mali_platform_device->dev,
77 _MALI_OSK_MALI_PAGE_SIZE,
78@@ -757,8 +770,10 @@ _mali_osk_errcode_t mali_mem_os_init(void)
79 return _MALI_OSK_ERR_NOMEM;
80 }
81
82-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
83+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
84 dma_set_attr(DMA_ATTR_WRITE_COMBINE, &dma_attrs_wc);
85+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
86+ dma_attrs_wc |= DMA_ATTR_WRITE_COMBINE;
87 #endif
88
89 register_shrinker(&mali_mem_os_allocator.shrinker);
90--
912.7.4
92
diff --git a/recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch b/recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch
new file mode 100644
index 00000000..c11b60a8
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch
@@ -0,0 +1,34 @@
1From 4bb78550d818b9e6491fa2d3b9706bb217a1597b Mon Sep 17 00:00:00 2001
2From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
3Date: Wed, 25 Jan 2017 10:00:33 -0800
4Subject: [PATCH 2/2] arm.c: dma_ops will be modified by the driver only till
5 Kernel v4.7
6
7From v4.8(Platform specific) Kernel the arch_setup_dma_ops will
8not give a dummy_dma_ops if acpi is disabled rather pass a valid
9dma_ops.
10
11Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
12Upstream Status: Pending
13---
14 driver/src/devicedrv/mali/platform/arm/arm.c | 3 ++-
15 1 file changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c b/driver/src/devicedrv/mali/platform/arm/arm.c
18index c6f58d8..36965fe 100755
19--- platform/arm/arm.c
20+++ b/platform/arm/arm.c
21@@ -529,8 +529,9 @@ int mali_platform_device_init(struct platform_device *device)
22 */
23 if (!device->dev.dma_mask)
24 device->dev.dma_mask = &device->dev.coherent_dma_mask;
25+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
26 device->dev.archdata.dma_ops = dma_ops;
27-
28+#endif
29 err = platform_device_add_data(device, &mali_gpu_data, sizeof(mali_gpu_data));
30
31 if (0 == err) {
32--
332.7.4
34
diff --git a/recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch b/recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
new file mode 100644
index 00000000..34cbccf4
--- /dev/null
+++ b/recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
@@ -0,0 +1,90 @@
1From ba8c94302a1c606315109a9d1cee342213fdbf98 Mon Sep 17 00:00:00 2001
2From: Madhurkiran Harikrishnan <madhurki@xilinx.com>
3Date: Thu, 16 Feb 2017 12:15:58 -0800
4Subject: [PATCH] linux/mali_kernel_linux.c: Handle clock when probed and
5 removed
6
7This patch will handle the clock through clock
8specifier for GPU PP0 and PP1.
9
10Signed-off-by: Madhurkiran Harikrishnan <madhurki@xilinx.com>
11Upstream-Status: Inappropriate [Specific to Xilinx ZynqMP]
12---
13 .../src/devicedrv/mali/linux/mali_kernel_linux.c | 40 +++++++++++++++++++++-
14 1 file changed, 39 insertions(+), 1 deletion(-)
15
16diff --git a/driver/src/devicedrv/mali/linux/mali_kernel_linux.c b/driver/src/devicedrv/mali/linux/mali_kernel_linux.c
17index 9bfa2bd..cfde20f 100755
18--- linux/mali_kernel_linux.c
19+++ b/linux/mali_kernel_linux.c
20@@ -45,6 +45,14 @@
21 #if defined(CONFIG_MALI400_INTERNAL_PROFILING)
22 #include "mali_profiling_internal.h"
23 #endif
24+
25+#if defined(CONFIG_ARCH_ZYNQMP)
26+/* Initialize variables for clocks */
27+struct clk *clk_gpu;
28+struct clk *clk_gpu_pp0;
29+struct clk *clk_gpu_pp1;
30+#endif
31+
32 #if defined(CONFIG_MALI400_PROFILING) && defined(CONFIG_MALI_DVFS)
33 #include "mali_osk_profiling.h"
34 #include "mali_dvfs_policy.h"
35@@ -580,7 +588,23 @@ static int mali_probe(struct platform_device *pdev)
36 }
37 #endif
38
39-
40+#if defined(CONFIG_ARCH_ZYNQMP)
41+ /* Initialize clocks for GPU and PP */
42+ clk_gpu = devm_clk_get(&pdev->dev, "gpu");
43+ if (IS_ERR(clk_gpu))
44+ return PTR_ERR(clk_gpu);
45+ clk_prepare_enable(clk_gpu);
46+
47+ clk_gpu_pp0 = devm_clk_get(&pdev->dev, "gpu_pp0");
48+ if (IS_ERR(clk_gpu_pp0))
49+ return PTR_ERR(clk_gpu_pp0);
50+ clk_prepare_enable(clk_gpu_pp0);
51+
52+ clk_gpu_pp1 = devm_clk_get(&pdev->dev, "gpu_pp1");
53+ if (IS_ERR(clk_gpu_pp1))
54+ return PTR_ERR(clk_gpu_pp1);
55+ clk_prepare_enable(clk_gpu_pp1);
56+#endif
57 if (_MALI_OSK_ERR_OK == _mali_osk_wq_init()) {
58 /* Initialize the Mali GPU HW specified by pdev */
59 if (_MALI_OSK_ERR_OK == mali_initialize_subsystems()) {
60@@ -608,6 +632,12 @@ static int mali_probe(struct platform_device *pdev)
61 _mali_osk_wq_term();
62 }
63
64+#if defined(CONFIG_ARCH_ZYNQMP)
65+ clk_disable_unprepare(clk_gpu);
66+ clk_disable_unprepare(clk_gpu_pp0);
67+ clk_disable_unprepare(clk_gpu_pp1);
68+#endif
69+
70 #ifdef CONFIG_MALI_DEVFREQ
71 mali_devfreq_term(mdev);
72 devfreq_init_failed:
73@@ -673,6 +703,14 @@ static int mali_remove(struct platform_device *pdev)
74 mali_platform_device_deinit(mali_platform_device);
75 #endif
76 mali_platform_device = NULL;
77+
78+#if defined(CONFIG_ARCH_ZYNQMP)
79+ /* Remove clock */
80+ clk_disable_unprepare(clk_gpu);
81+ clk_disable_unprepare(clk_gpu_pp0);
82+ clk_disable_unprepare(clk_gpu_pp1);
83+#endif
84+
85 return 0;
86 }
87
88--
892.7.4
90