From: Madhurkiran Harikrishnan <madhurkiran.harikrish...@xilinx.com>

This patch will update Mali kernel driver to r8p0-01rel0.

Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
Tested-by: Jaewon Lee <jaewon....@xilinx.com>
Reviewed-by: Hyun Kwon <hyun.k...@xilinx.com>
Signed-off-by: Manjukumar Matha <manjukumar.harthikote-ma...@xilinx.com>
---
Changelog:
v2: Add missing patches to kernel-module-mali
    0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
    0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch

 .../recipes-graphics/mali/kernel-module-mali.bb    |  25 ++--
 ...ange-Makefile-to-be-compatible-with-Yocto.patch |  24 ++--
 ...i-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch |  52 -------
 ...i-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch |  52 +++++++
 ...li-r7p0-00rel0-Remove-unused-trace-macros.patch |  33 -----
 ...li-r8p0-01rel0-Remove-unused-trace-macros.patch |  35 +++++
 ...i-r7p0-00rel0-Don-t-include-mali_read_phy.patch |  47 -------
 ...i-r8p0-01rel0-Don-t-include-mali_read_phy.patch |  47 +++++++
 ...kernel_linux.c-Handle-clock-when-probed-a.patch |  90 ++++++++++++
 ...-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch |  29 ----
 ...l-variable-dma_ops-is-removed-from-the-ke.patch |  35 +++++
 ...-mali-r7p0-page_cache_release-to-put_page.patch |  30 ----
 ...place-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch |  54 ++++++++
 ..._os_alloc.c-Align-with-dma_attrs-changes-.patch |  92 -------------
 ...ps-will-be-modified-by-the-driver-only-ti.patch |  34 -----
 ...al_sync-Rename-wait_queue_t-with-wait_que.patch | 108 +++++++++++++++
 ...kernel_linux.c-Handle-clock-when-probed-a.patch |  90 ------------
 ..._swap_alloc.c-Rename-global_page_state-wi.patch |  48 +++++++
 ..._pm.c-Add-PM-runtime-barrier-after-removi.patch |   4 +-
 ...kernel_linux.c-Enable-disable-clock-for-r.patch | 153 +++++++++++++++++++++
 20 files changed, 648 insertions(+), 434 deletions(-)
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch
 delete mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch
 create mode 100644 
meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch

diff --git a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
index edd8cbe..3d7c6a9 100644
--- a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
+++ b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali.bb
@@ -3,26 +3,27 @@ SECTION = "kernel/modules"
 
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = " \
-       
file://linux/license/gpl/mali_kernel_license.h;md5=1436c0d104589824163a3eb50fbb5050
 \
+       
file://linux/license/gpl/mali_kernel_license.h;md5=436192a2c5cfd47df0ad1987dffc4ae6
 \
        "
 
-PV = "r7p0-00rel0"
+PV = "r8p0-01rel0"
 
 SRC_URI = " \
        
https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-utgard-gpu/DX910-SW-99002-${PV}.tgz
 \
        file://0001-Change-Makefile-to-be-compatible-with-Yocto.patch \
-       file://0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch \
-       file://0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch \
-       file://0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch \
-       file://0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch \
-       file://0006-staging-mali-r7p0-page_cache_release-to-put_page.patch \
-       file://0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch \
-       file://0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch \
-       file://0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch \
+       file://0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch \
+       file://0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch \
+       file://0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch \
+       file://0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch \
+       file://0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch \
+       file://0007-Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch \
+       file://0008-mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch \
+       file://0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch \
        file://0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch \
+       file://0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch\
        "
-SRC_URI[md5sum] = "db3ef3258eb55700484ecadfdce1fee1"
-SRC_URI[sha256sum] = 
"496ba80684aa4236806891a8445978849f7dd07299f5e58b14d52cd5e7ba0536"
+SRC_URI[md5sum] = "8f04ae86957fd56197ad5a9d017b84ff"
+SRC_URI[sha256sum] = 
"bfd14fa3f75a71d4ba313534e651ca1c58dc354e882c0b39867e335882a06350"
 
 inherit module
 
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
index 0314734..e5eeb19 100644
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0001-Change-Makefile-to-be-compatible-with-Yocto.patch
@@ -1,20 +1,21 @@
-From d9a4441c31faef60b7f39692df6913d58ec69d1b Mon Sep 17 00:00:00 2001
-From: Hyun Kwon <hyun.k...@xilinx.com>
-Date: Thu, 8 Sep 2016 09:56:40 -0700
-Subject: [PATCH 1/6] Change Makefile to be compatible with Yocto
+From 6d283b9aa3f7fb761da4cb076b47a62275fc4caa Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Tue, 21 Nov 2017 03:57:25 -0800
+Subject: [PATCH 1/9] Change Makefile to be compatible with Yocto
 
 Signed-off-by: Manjukumar Matha <manjukumar.harthikote-ma...@xilinx.com>
 Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
-Upstream Status: Pending
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
 ---
- driver/src/devicedrv/mali/Makefile | 13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
+ driver/src/devicedrv/mali/Makefile | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
 
 diff --git a/driver/src/devicedrv/mali/Makefile 
b/driver/src/devicedrv/mali/Makefile
-index f39ae4d..9ef9713 100755
+index 5a259fe..a6dd94c 100644
 --- Makefile
 +++ b/Makefile
-@@ -88,7 +88,11 @@ endif
+@@ -89,7 +89,11 @@ endif
  # Define host system directory
  KDIR-$(shell uname -m):=/lib/modules/$(shell uname -r)/build
  
@@ -27,12 +28,9 @@ index f39ae4d..9ef9713 100755
  
  ifeq ($(ARCH), arm)
  # when compiling for ARM we're cross compiling
-@@ -193,10 +197,15 @@ ifeq ($(MALI_MEM_SWAP_TRACKING),1)
- EXTRA_DEFINES += -DMALI_MEM_SWAP_TRACKING=1
+@@ -204,9 +208,12 @@ EXTRA_DEFINES += -DMALI_MEM_SWAP_TRACKING=1
  endif
  
-+EXTRA_DEFINES += -Wno-error=date-time
-+
  all: $(UMP_SYMVERS_FILE)
 -      $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) modules
 +      $(MAKE) ARCH=$(ARCH) -C $(KDIR) M=$(CURDIR) O=$(O) modules
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
deleted file mode 100644
index 363153e..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r7p0-00rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 65a8f9eb32322538396607805dcbc28aa0aadcb7 Mon Sep 17 00:00:00 2001
-From: Hyun Kwon <hyun.k...@xilinx.com>
-Date: Thu, 25 Jun 2015 17:14:42 -0700
-Subject: [PATCH 2/6] staging: mali: r7p0-00rel0: Add the ZYNQ/ZYNQMP platform
-
-Add the number of PP cores that is required for Zynq/ZynqMP configuration.
-
-Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
-Signed-off-by: Michal Simek <michal.si...@xilinx.com>
-Upstream Status: Pending
----
- driver/src/devicedrv/mali/platform/arm/arm.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c 
b/driver/src/devicedrv/mali/platform/arm/arm.c
-index a7ff1b2..0682842 100755
---- platform/arm/arm.c
-+++ b/platform/arm/arm.c
-@@ -261,6 +261,10 @@ static struct mali_gpu_device_data mali_gpu_data = {
-       .dedicated_mem_start = 0x80000000, /* Physical start address (use 
0xD0000000 for old indirect setup) */
-       .dedicated_mem_size = 0x10000000, /* 256MB */
- #endif
-+#if defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
-+      .fb_start = 0x00000000,
-+      .fb_size = 0xfffff000,
-+#else
- #if defined(CONFIG_ARM64)
-       /* Some framebuffer drivers get the framebuffer dynamically, such as 
through GEM,
-       * in which the memory resource can't be predicted in advance.
-@@ -271,6 +275,7 @@ static struct mali_gpu_device_data mali_gpu_data = {
-       .fb_start = 0xe0000000,
-       .fb_size = 0x01000000,
- #endif
-+#endif /* !defined(CONFIG_ARCH_ZYNQ) && !defined(CONFIG_ARCH_ZYNQMP) */
-       .control_interval = 1000, /* 1000ms */
-       .utilization_callback = mali_gpu_utilization_callback,
-       .get_clock_info = NULL,
-@@ -505,6 +510,11 @@ int mali_platform_device_init(struct platform_device 
*device)
-                       mali_write_phys(0xC0010020, 0xA); /* Enable direct 
memory mapping for FPGA */
-               }
-       }
-+#elif defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
-+
-+      MALI_DEBUG_PRINT(4, ("Registering Zynq/ZynqMP Mali-400 device\n"));
-+      num_pp_cores = 2;
-+
- #endif
- 
-       /* After kernel 3.15 device tree will default set dev
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
new file mode 100644
index 0000000..0a7b673
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0002-staging-mali-r8p0-01rel0-Add-the-ZYNQ-ZYNQMP-platfor.patch
@@ -0,0 +1,52 @@
+From f27aab2b0e4d5dea9b5a0e4648c142257940c428 Mon Sep 17 00:00:00 2001
+From: Hyun Kwon <hyun.k...@xilinx.com>
+Date: Thu, 25 Jun 2015 17:14:42 -0700
+Subject: [PATCH 2/9] staging: mali: r8p0-01rel0: Add the ZYNQ/ZYNQMP platform
+
+Add the number of PP cores that is required for Zynq/ZynqMP configuration.
+
+Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
+Signed-off-by: Michal Simek <michal.si...@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ driver/src/devicedrv/mali/platform/arm/arm.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c 
b/driver/src/devicedrv/mali/platform/arm/arm.c
+index 4e09aca..fac99bc 100644
+--- platform/arm/arm.c
++++ b/platform/arm/arm.c
+@@ -261,6 +261,10 @@ static struct mali_gpu_device_data mali_gpu_data = {
+       .dedicated_mem_start = 0x80000000, /* Physical start address (use 
0xD0000000 for old indirect setup) */
+       .dedicated_mem_size = 0x10000000, /* 256MB */
+ #endif
++#if defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
++      .fb_start = 0x00000000,
++      .fb_size = 0xfffff000,
++#else
+ #if defined(CONFIG_ARM64)
+       /* Some framebuffer drivers get the framebuffer dynamically, such as 
through GEM,
+       * in which the memory resource can't be predicted in advance.
+@@ -271,6 +275,7 @@ static struct mali_gpu_device_data mali_gpu_data = {
+       .fb_start = 0xe0000000,
+       .fb_size = 0x01000000,
+ #endif
++#endif /* !defined(CONFIG_ARCH_ZYNQ) && !defined(CONFIG_ARCH_ZYNQMP) */
+       .control_interval = 1000, /* 1000ms */
+       .utilization_callback = mali_gpu_utilization_callback,
+       .get_clock_info = NULL,
+@@ -505,6 +510,11 @@ int mali_platform_device_init(struct platform_device 
*device)
+                       mali_write_phys(0xC0010020, 0xA); /* Enable direct 
memory mapping for FPGA */
+               }
+       }
++#elif defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP)
++
++      MALI_DEBUG_PRINT(4, ("Registering Zynq/ZynqMP Mali-400 device\n"));
++      num_pp_cores = 2;
++
+ #endif
+ 
+       /* After kernel 3.15 device tree will default set dev
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
deleted file mode 100644
index fc0dc6e..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r7p0-00rel0-Remove-unused-trace-macros.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From c86d22f1133647518a68f9f1cbe73e1797e68fa8 Mon Sep 17 00:00:00 2001
-From: Hyun Kwon <hyun.k...@xilinx.com>
-Date: Tue, 3 May 2016 08:11:38 -0700
-Subject: [PATCH 3/6] staging: mali: r7p0-00rel0: Remove unused trace macros
-
-TRACE_SYSTEM_STRING is not need in each trace file anymore.
-
-Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
-Upstream Status: Pending
----
- driver/src/devicedrv/mali/linux/mali_linux_trace.h | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/driver/src/devicedrv/mali/linux/mali_linux_trace.h 
b/driver/src/devicedrv/mali/linux/mali_linux_trace.h
-index 2c91ddc..d4e45ab 100755
---- linux/mali_linux_trace.h
-+++ b/linux/mali_linux_trace.h
-@@ -13,12 +13,10 @@
- 
- #include <linux/types.h>
- 
--#include <linux/stringify.h>
- #include <linux/tracepoint.h>
- 
- #undef  TRACE_SYSTEM
- #define TRACE_SYSTEM mali
--#define TRACE_SYSTEM_STRING __stringfy(TRACE_SYSTEM)
- 
- #define TRACE_INCLUDE_PATH .
- #define TRACE_INCLUDE_FILE mali_linux_trace
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch
new file mode 100644
index 0000000..98aa6ac
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0003-staging-mali-r8p0-01rel0-Remove-unused-trace-macros.patch
@@ -0,0 +1,35 @@
+From d6e44bbf8d1377f78481f611dec237e8d24baf74 Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Tue, 21 Nov 2017 04:00:27 -0800
+Subject: [PATCH 3/9] staging: mali: r8p0-01rel0: Remove unused trace macros
+
+TRACE_SYSTEM_STRING is not need in each trace file anymore.
+
+Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Upstream Status: Pending
+---
+ driver/src/devicedrv/mali/linux/mali_linux_trace.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_linux_trace.h 
b/driver/src/devicedrv/mali/linux/mali_linux_trace.h
+index 7f0b19d..33cb1ca 100644
+--- linux/mali_linux_trace.h
++++ b/linux/mali_linux_trace.h
+@@ -13,13 +13,11 @@
+ 
+ #include <linux/types.h>
+ 
+-#include <linux/stringify.h>
+ #include <linux/tracepoint.h>
+ 
+ #undef  TRACE_SYSTEM
+ #define TRACE_SYSTEM mali
+ #ifndef TRACEPOINTS_ENABLED
+-#define TRACE_SYSTEM_STRING __stringfy(TRACE_SYSTEM)
+ #endif
+ #define TRACE_INCLUDE_PATH .
+ #define TRACE_INCLUDE_FILE mali_linux_trace
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
deleted file mode 100644
index ce3bea0..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r7p0-00rel0-Don-t-include-mali_read_phy.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3e6fb4697bddc4cfbb82e6a0b2f9f28d5c1d0a04 Mon Sep 17 00:00:00 2001
-From: Hyun Kwon <hyun.k...@xilinx.com>
-Date: Wed, 29 Jun 2016 09:14:37 -0700
-Subject: [PATCH 4/6] staging: mali: r7p0-00rel0: Don't include
- mali_read_phys() for zynq/zynqmp
-
-mali_read_phys() is not used with CONFIG_ARCH_ZYNQ and CONFIG_ARCH_ZYNQMP.
-
-Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
-Upstream Status: Pending
----
- driver/src/devicedrv/mali/platform/arm/arm.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c 
b/driver/src/devicedrv/mali/platform/arm/arm.c
-index 0682842..c6f58d8 100755
---- platform/arm/arm.c
-+++ b/platform/arm/arm.c
-@@ -38,7 +38,9 @@
- static int mali_core_scaling_enable = 0;
- 
- void mali_gpu_utilization_callback(struct mali_gpu_utilization_data *data);
-+#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
- static u32 mali_read_phys(u32 phys_addr);
-+#endif
- #if defined(CONFIG_ARCH_REALVIEW)
- static void mali_write_phys(u32 phys_addr, u32 value);
- #endif
-@@ -578,6 +580,7 @@ int mali_platform_device_deinit(struct platform_device 
*device)
- 
- #endif /* CONFIG_MALI_DT */
- 
-+#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
- static u32 mali_read_phys(u32 phys_addr)
- {
-       u32 phys_addr_page = phys_addr & 0xFFFFE000;
-@@ -592,6 +595,7 @@ static u32 mali_read_phys(u32 phys_addr)
- 
-       return ret;
- }
-+#endif
- 
- #if defined(CONFIG_ARCH_REALVIEW)
- static void mali_write_phys(u32 phys_addr, u32 value)
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch
new file mode 100644
index 0000000..c5c4967
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0004-staging-mali-r8p0-01rel0-Don-t-include-mali_read_phy.patch
@@ -0,0 +1,47 @@
+From 2f5e8944357f43fbde4cb642c6ee4a699c88efb5 Mon Sep 17 00:00:00 2001
+From: Hyun Kwon <hyun.k...@xilinx.com>
+Date: Wed, 29 Jun 2016 09:14:37 -0700
+Subject: [PATCH 4/9] staging: mali: r8p0-01rel0: Don't include
+ mali_read_phys() for zynq/zynqmp
+
+mali_read_phys() is not used with CONFIG_ARCH_ZYNQ and CONFIG_ARCH_ZYNQMP.
+
+Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ driver/src/devicedrv/mali/platform/arm/arm.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c 
b/driver/src/devicedrv/mali/platform/arm/arm.c
+index fac99bc..62f9be6 100644
+--- platform/arm/arm.c
++++ b/platform/arm/arm.c
+@@ -38,7 +38,9 @@
+ static int mali_core_scaling_enable = 0;
+ 
+ void mali_gpu_utilization_callback(struct mali_gpu_utilization_data *data);
++#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
+ static u32 mali_read_phys(u32 phys_addr);
++#endif
+ #if defined(CONFIG_ARCH_REALVIEW)
+ static void mali_write_phys(u32 phys_addr, u32 value);
+ #endif
+@@ -578,6 +580,7 @@ int mali_platform_device_deinit(struct platform_device 
*device)
+ 
+ #endif /* CONFIG_MALI_DT */
+ 
++#if !(defined(CONFIG_ARCH_ZYNQ) || defined(CONFIG_ARCH_ZYNQMP))
+ static u32 mali_read_phys(u32 phys_addr)
+ {
+       u32 phys_addr_page = phys_addr & 0xFFFFE000;
+@@ -592,6 +595,7 @@ static u32 mali_read_phys(u32 phys_addr)
+ 
+       return ret;
+ }
++#endif
+ 
+ #if defined(CONFIG_ARCH_REALVIEW)
+ static void mali_write_phys(u32 phys_addr, u32 value)
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
new file mode 100644
index 0000000..3d78460
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
@@ -0,0 +1,90 @@
+From e67e20ec6ff0c9720d87844270421453c738066a Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Thu, 16 Feb 2017 12:15:58 -0800
+Subject: [PATCH 5/9] linux/mali_kernel_linux.c: Handle clock when probed and
+ removed
+
+This patch will handle the clock through clock
+specifier for GPU PP0 and PP1.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ .../src/devicedrv/mali/linux/mali_kernel_linux.c   | 40 +++++++++++++++++++++-
+ 1 file changed, 39 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_kernel_linux.c 
b/driver/src/devicedrv/mali/linux/mali_kernel_linux.c
+index d7893a3..f15fb56 100644
+--- linux/mali_kernel_linux.c
++++ b/linux/mali_kernel_linux.c
+@@ -45,6 +45,14 @@
+ #if defined(CONFIG_MALI400_INTERNAL_PROFILING)
+ #include "mali_profiling_internal.h"
+ #endif
++
++#if defined(CONFIG_ARCH_ZYNQMP)
++/* Initialize variables for clocks */
++struct clk *clk_gpu;
++struct clk *clk_gpu_pp0;
++struct clk *clk_gpu_pp1;
++#endif
++
+ #if defined(CONFIG_MALI400_PROFILING) && defined(CONFIG_MALI_DVFS)
+ #include "mali_osk_profiling.h"
+ #include "mali_dvfs_policy.h"
+@@ -580,7 +588,23 @@ static int mali_probe(struct platform_device *pdev)
+       }
+ #endif
+ 
+-
++#if defined(CONFIG_ARCH_ZYNQMP)
++      /* Initialize clocks for GPU and PP */
++      clk_gpu = devm_clk_get(&pdev->dev, "gpu");
++      if (IS_ERR(clk_gpu))
++              return PTR_ERR(clk_gpu);
++      clk_prepare_enable(clk_gpu);
++
++      clk_gpu_pp0 = devm_clk_get(&pdev->dev, "gpu_pp0");
++      if (IS_ERR(clk_gpu_pp0))
++              return PTR_ERR(clk_gpu_pp0);
++      clk_prepare_enable(clk_gpu_pp0);
++
++      clk_gpu_pp1 = devm_clk_get(&pdev->dev, "gpu_pp1");
++      if (IS_ERR(clk_gpu_pp1))
++              return PTR_ERR(clk_gpu_pp1);
++      clk_prepare_enable(clk_gpu_pp1);
++#endif
+       if (_MALI_OSK_ERR_OK == _mali_osk_wq_init()) {
+               /* Initialize the Mali GPU HW specified by pdev */
+               if (_MALI_OSK_ERR_OK == mali_initialize_subsystems()) {
+@@ -608,6 +632,12 @@ static int mali_probe(struct platform_device *pdev)
+               _mali_osk_wq_term();
+       }
+ 
++#if defined(CONFIG_ARCH_ZYNQMP)
++      clk_disable_unprepare(clk_gpu);
++      clk_disable_unprepare(clk_gpu_pp0);
++      clk_disable_unprepare(clk_gpu_pp1);
++#endif
++
+ #ifdef CONFIG_MALI_DEVFREQ
+       mali_devfreq_term(mdev);
+ devfreq_init_failed:
+@@ -673,6 +703,14 @@ static int mali_remove(struct platform_device *pdev)
+       mali_platform_device_deinit(mali_platform_device);
+ #endif
+       mali_platform_device = NULL;
++
++#if defined(CONFIG_ARCH_ZYNQMP)
++      /* Remove clock */
++      clk_disable_unprepare(clk_gpu);
++      clk_disable_unprepare(clk_gpu_pp0);
++      clk_disable_unprepare(clk_gpu_pp1);
++#endif
++
+       return 0;
+ }
+ 
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
deleted file mode 100644
index 32dd9d4..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0005-mali-r7p0-PAGE_CACHE_SHIFT-to-PAGE_CACHE.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From ac3baaacbaa564e768529dcb2353a84eb47ae847 Mon Sep 17 00:00:00 2001
-From: Hyun Kwon <hyun.k...@xilinx.com>
-Date: Mon, 12 Sep 2016 13:12:46 -0700
-Subject: [PATCH 5/6] mali: r7p0: PAGE_CACHE_SHIFT to PAGE_CACHE
-
-09cbfea removed PAGE_CACHE_*.
-
-Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
-Upstream Status: Pending
----
- driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c 
b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
-index 4793328..1aea47b 100755
---- linux/mali_memory_swap_alloc.c
-+++ b/linux/mali_memory_swap_alloc.c
-@@ -52,7 +52,7 @@ extern struct mali_mem_os_allocator mali_mem_os_allocator;
- #define MALI_SWAP_LOW_MEM_DEFAULT_VALUE (60*1024*1024)
- #define MALI_SWAP_INVALIDATE_MALI_ADDRESS (0)               /* Used to mark 
the given memory cookie is invalidate. */
- #define MALI_SWAP_GLOBAL_SWAP_FILE_SIZE (0xFFFFFFFF)
--#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) 
>> PAGE_CACHE_SHIFT)
-+#define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX ((MALI_SWAP_GLOBAL_SWAP_FILE_SIZE) 
>> PAGE_SHIFT)
- #define MALI_SWAP_GLOBAL_SWAP_FILE_INDEX_RESERVE (1 << 15) /* Reserved for 
CoW nonlinear swap backend memory, the space size is 128MB. */
- 
- unsigned int mali_mem_swap_out_threshold_value = 
MALI_SWAP_LOW_MEM_DEFAULT_VALUE;
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch
new file mode 100644
index 0000000..3e1745f
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-arm.c-global-variable-dma_ops-is-removed-from-the-ke.patch
@@ -0,0 +1,35 @@
+From ed7242238151c12029c566d1974058c579d8ae3d Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Wed, 25 Jan 2017 10:00:33 -0800
+Subject: [PATCH 6/9] arm.c: global variable dma_ops is removed from the kernel
+ 4.7
+
+Refer kernel commit 1dccb598df549d892b6450c261da54cdd7af44b4, the global
+dma_ops variable and the special-casing for ACPI is removed , and just
+returns the dma ops that got set for the device, or the dummy_dma_ops
+if none were present.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Upstream Status: Pending
+---
+ driver/src/devicedrv/mali/platform/arm/arm.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c 
b/driver/src/devicedrv/mali/platform/arm/arm.c
+index 62f9be6..57ca989 100644
+--- platform/arm/arm.c
++++ b/platform/arm/arm.c
+@@ -529,8 +529,9 @@ int mali_platform_device_init(struct platform_device 
*device)
+        */
+       if (!device->dev.dma_mask)
+               device->dev.dma_mask = &device->dev.coherent_dma_mask;
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
+       device->dev.archdata.dma_ops = dma_ops;
+-
++#endif
+       err = platform_device_add_data(device, &mali_gpu_data, 
sizeof(mali_gpu_data));
+ 
+       if (0 == err) {
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch
deleted file mode 100644
index 5582bfa..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0006-staging-mali-r7p0-page_cache_release-to-put_page.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 9dd708ba609b826c07fa91d8a5ee56b368ae8183 Mon Sep 17 00:00:00 2001
-From: "madhu...@xilinx.com" <madhu...@xilinx.com>
-Date: Mon, 12 Sep 2016 17:14:34 -0700
-Subject: [PATCH 6/6] staging: mali: r7p0: page_cache_release() to put_page()
-
-09cbfea replaced page_cache_release() to put_page().
-
-Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
-Signed-off-by: madhu...@xilinx.com <madhu...@xilinx.com>
-Upstream Status: Pending
----
- driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c 
b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
-index 1aea47b..068e4d0 100755
---- linux/mali_memory_swap_alloc.c
-+++ b/linux/mali_memory_swap_alloc.c
-@@ -183,7 +183,7 @@ static void mali_mem_swap_out_page_node(mali_page_node 
*page_node)
-       dma_unmap_page(&mali_platform_device->dev, page_node->swap_it->dma_addr,
-                      _MALI_OSK_MALI_PAGE_SIZE, DMA_TO_DEVICE);
-       set_page_dirty(page_node->swap_it->page);
--      page_cache_release(page_node->swap_it->page);
-+      put_page(page_node->swap_it->page);
- }
- 
- void mali_mem_swap_unlock_single_mem_backend(mali_mem_backend *mem_bkend)
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch
new file mode 100644
index 0000000..6e5f544
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-Replace-__GFP_REPEAT-by-__GFP_RETRY_MAYFAIL.patch
@@ -0,0 +1,54 @@
+From a8190cd3b346633016d1c0096ef73e0e1ceef438 Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Tue, 5 Dec 2017 09:25:15 -0800
+Subject: [PATCH 7/9] Replace __GFP_REPEAT by __GFP_RETRY_MAYFAIL
+
+Refer kernel patch dcda9b04713c3f6ff0875652924844fae28286ea
+which replaces with a useful semantic
+
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Upstream-Status: Pending
+---
+ driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c  | 4 ++++
+ driver/src/devicedrv/mali/linux/mali_osk_notification.c | 7 ++++++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c 
b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
+index 5fe1270..1602371 100644
+--- linux/mali_memory_os_alloc.c
++++ b/linux/mali_memory_os_alloc.c
+@@ -202,7 +202,11 @@ int mali_mem_os_alloc_pages(mali_mem_os_mem *os_mem, u32 
size)
+       /* Allocate new pages, if needed. */
+       for (i = 0; i < remaining; i++) {
+               dma_addr_t dma_addr;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++              gfp_t flags = __GFP_ZERO | __GFP_RETRY_MAYFAIL | __GFP_NOWARN | 
__GFP_COLD;
++#else
+               gfp_t flags = __GFP_ZERO | __GFP_REPEAT | __GFP_NOWARN | 
__GFP_COLD;
++#endif
+               int err;
+ 
+ #if defined(CONFIG_ARM) && !defined(CONFIG_ARM_LPAE)
+diff --git a/driver/src/devicedrv/mali/linux/mali_osk_notification.c 
b/driver/src/devicedrv/mali/linux/mali_osk_notification.c
+index b22fe68..d0c302a 100644
+--- linux/mali_osk_notification.c
++++ b/linux/mali_osk_notification.c
+@@ -55,9 +55,14 @@ _mali_osk_notification_t *_mali_osk_notification_create(u32 
type, u32 size)
+ {
+       /* OPT Recycling of notification objects */
+       _mali_osk_notification_wrapper_t *notification;
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++      notification = (_mali_osk_notification_wrapper_t 
*)kmalloc(sizeof(_mali_osk_notification_wrapper_t) + size,
++                      GFP_KERNEL | __GFP_HIGH | __GFP_RETRY_MAYFAIL);
++#else
+       notification = (_mali_osk_notification_wrapper_t 
*)kmalloc(sizeof(_mali_osk_notification_wrapper_t) + size,
+                       GFP_KERNEL | __GFP_HIGH | __GFP_REPEAT);
++#endif
++
+       if (NULL == notification) {
+               MALI_DEBUG_PRINT(1, ("Failed to create a notification 
object\n"));
+               return NULL;
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
deleted file mode 100644
index 79c507d..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0007-mali_memory_os_alloc.c-Align-with-dma_attrs-changes-.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From f0a49bccbdd910c48aab59e07aed98093f4a0fea Mon Sep 17 00:00:00 2001
-From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
-Date: Wed, 25 Jan 2017 02:59:40 -0800
-Subject: [PATCH 1/2] mali_memory_os_alloc.c: Align with dma_attrs changes from
- 4.8 Kernel
-
-From 4.8 Kernel the DMA attributes is no longer a pointer but an unsigned long.
-
-Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
-Upstream Status: Pending
----
- .../devicedrv/mali/linux/mali_memory_os_alloc.c    | 25 +++++++++++++++++-----
- 1 file changed, 20 insertions(+), 5 deletions(-)
-
-diff --git a/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c 
b/driver/src/devicedrv/mali/linux/mali_memory_os_alloc.c
-index 7f229eb..08fa2fb 100755
---- linux/mali_memory_os_alloc.c
-+++ b/linux/mali_memory_os_alloc.c
-@@ -26,9 +26,11 @@
- #define MALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_PAGES 
(MALI_OS_MEMORY_KERNEL_BUFFER_SIZE_IN_MB * 256)
- #define MALI_OS_MEMORY_POOL_TRIM_JIFFIES (10 * CONFIG_HZ) /* Default to 10s */
- 
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < 
KERNEL_VERSION(4, 8, 0))
- /* Write combine dma_attrs */
- static DEFINE_DMA_ATTRS(dma_attrs_wc);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+static unsigned long dma_attrs_wc;
- #endif
- 
- #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)
-@@ -511,10 +513,14 @@ _mali_osk_errcode_t 
mali_mem_os_get_table_page(mali_dma_addr *phys, mali_io_addr
-       spin_unlock(&mali_mem_page_table_page_pool.lock);
- 
-       if (_MALI_OSK_ERR_OK != ret) {
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < 
KERNEL_VERSION(4, 8, 0))
-               *mapping = dma_alloc_attrs(&mali_platform_device->dev,
-                                          _MALI_OSK_MALI_PAGE_SIZE, &tmp_phys,
-                                          GFP_KERNEL, &dma_attrs_wc);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+              *mapping = dma_alloc_attrs(&mali_platform_device->dev,
-+                                         _MALI_OSK_MALI_PAGE_SIZE, &tmp_phys,
-+                                         GFP_KERNEL, dma_attrs_wc);
- #else
-               *mapping = dma_alloc_writecombine(&mali_platform_device->dev,
-                                                 _MALI_OSK_MALI_PAGE_SIZE, 
&tmp_phys, GFP_KERNEL);
-@@ -550,10 +556,14 @@ void mali_mem_os_release_table_page(mali_dma_addr phys, 
void *virt)
-       } else {
-               spin_unlock(&mali_mem_page_table_page_pool.lock);
- 
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < 
KERNEL_VERSION(4, 8, 0))
-               dma_free_attrs(&mali_platform_device->dev,
-                              _MALI_OSK_MALI_PAGE_SIZE, virt, phys,
-                              &dma_attrs_wc);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+              dma_free_attrs(&mali_platform_device->dev,
-+                              _MALI_OSK_MALI_PAGE_SIZE, virt, phys,
-+                              dma_attrs_wc);
- #else
-               dma_free_writecombine(&mali_platform_device->dev,
-                                     _MALI_OSK_MALI_PAGE_SIZE, virt, phys);
-@@ -606,9 +616,12 @@ static void mali_mem_os_page_table_pool_free(size_t 
nr_to_free)
- 
-       /* After releasing the spinlock: free the pages we removed from the 
pool. */
-       for (i = 0; i < nr_to_free; i++) {
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < 
KERNEL_VERSION(4, 8, 0))
-               dma_free_attrs(&mali_platform_device->dev, 
_MALI_OSK_MALI_PAGE_SIZE,
-                              virt_arr[i], (dma_addr_t)phys_arr[i], 
&dma_attrs_wc);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+              dma_free_attrs(&mali_platform_device->dev, 
_MALI_OSK_MALI_PAGE_SIZE,
-+                              virt_arr[i], (dma_addr_t)phys_arr[i], 
dma_attrs_wc);
- #else
-               dma_free_writecombine(&mali_platform_device->dev,
-                                     _MALI_OSK_MALI_PAGE_SIZE,
-@@ -757,8 +770,10 @@ _mali_osk_errcode_t mali_mem_os_init(void)
-               return _MALI_OSK_ERR_NOMEM;
-       }
- 
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0)
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0) && LINUX_VERSION_CODE < 
KERNEL_VERSION(4, 8, 0))
-       dma_set_attr(DMA_ATTR_WRITE_COMBINE, &dma_attrs_wc);
-+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
-+      dma_attrs_wc |= DMA_ATTR_WRITE_COMBINE;
- #endif
- 
-       register_shrinker(&mali_mem_os_allocator.shrinker);
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch
deleted file mode 100644
index c11b60a..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-arm.c-dma_ops-will-be-modified-by-the-driver-only-ti.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 4bb78550d818b9e6491fa2d3b9706bb217a1597b Mon Sep 17 00:00:00 2001
-From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
-Date: Wed, 25 Jan 2017 10:00:33 -0800
-Subject: [PATCH 2/2] arm.c: dma_ops will be modified by the driver only till
- Kernel v4.7
-
-From v4.8(Platform specific) Kernel the arch_setup_dma_ops will
-not give a dummy_dma_ops if acpi is disabled rather pass a valid
-dma_ops.
-
-Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
-Upstream Status: Pending
----
- driver/src/devicedrv/mali/platform/arm/arm.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/driver/src/devicedrv/mali/platform/arm/arm.c 
b/driver/src/devicedrv/mali/platform/arm/arm.c
-index c6f58d8..36965fe 100755
---- platform/arm/arm.c
-+++ b/platform/arm/arm.c
-@@ -529,8 +529,9 @@ int mali_platform_device_init(struct platform_device 
*device)
-        */
-       if (!device->dev.dma_mask)
-               device->dev.dma_mask = &device->dev.coherent_dma_mask;
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0))
-       device->dev.archdata.dma_ops = dma_ops;
--
-+#endif
-       err = platform_device_add_data(device, &mali_gpu_data, 
sizeof(mali_gpu_data));
- 
-       if (0 == err) {
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch
new file mode 100644
index 0000000..592fea0
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0008-mali_internal_sync-Rename-wait_queue_t-with-wait_que.patch
@@ -0,0 +1,108 @@
+From 717d7899f6d8048c6b88b3c52e8a9c8afbddbb65 Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Tue, 5 Dec 2017 09:48:42 -0800
+Subject: [PATCH 8/9] mali_internal_sync: Rename wait_queue_t with
+ wait_queue_entry_t
+
+Refer kernel patch ac6424b981bce1c4bc55675c6ce11bfe1bbfa64f
+and 2055da which replaces the struct name
+
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Upstream-Status: Pending
+---
+ .../src/devicedrv/mali/linux/mali_internal_sync.c  | 27 ++++++++++++++++++++--
+ .../src/devicedrv/mali/linux/mali_internal_sync.h  |  4 ++++
+ 2 files changed, 29 insertions(+), 2 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_internal_sync.c 
b/driver/src/devicedrv/mali/linux/mali_internal_sync.c
+index 1f2574e..957a056 100644
+--- linux/mali_internal_sync.c
++++ b/linux/mali_internal_sync.c
+@@ -121,8 +121,13 @@ static void mali_internal_sync_fence_add_fence(struct 
mali_internal_sync_fence *
+ }
+ #endif
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
++static int mali_internal_sync_fence_wake_up_wq(wait_queue_entry_t *curr, 
unsigned mode,
++              int wake_flags, void *key)
++#else
+ static int mali_internal_sync_fence_wake_up_wq(wait_queue_t *curr, unsigned 
mode,
+               int wake_flags, void *key)
++#endif
+ {
+       struct mali_internal_sync_fence_waiter *wait;
+       MALI_IGNORE(mode);
+@@ -130,8 +135,12 @@ static int 
mali_internal_sync_fence_wake_up_wq(wait_queue_t *curr, unsigned mode
+       MALI_IGNORE(key);
+ 
+       wait = container_of(curr, struct mali_internal_sync_fence_waiter, work);
+-      list_del_init(&wait->work.task_list);
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
++      list_del_init(&wait->work.entry);
++#else
++      list_del_init(&wait->work.task_list);
++#endif
+       wait->callback(wait->work.private, wait);
+       return 1;
+ }
+@@ -498,7 +507,11 @@ void mali_internal_sync_fence_waiter_init(struct 
mali_internal_sync_fence_waiter
+       MALI_DEBUG_ASSERT_POINTER(waiter);
+       MALI_DEBUG_ASSERT_POINTER(callback);
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
++      INIT_LIST_HEAD(&waiter->work.entry);
++#else
+       INIT_LIST_HEAD(&waiter->work.task_list);
++#endif
+       waiter->callback = callback;
+ }
+ 
+@@ -560,8 +573,13 @@ int mali_internal_sync_fence_wait_async(struct 
mali_internal_sync_fence *sync_fe
+       spin_lock_irqsave(&sync_fence->wq.lock, flags);
+       err =  sync_fence->fence->ops->signaled(sync_fence->fence);
+ 
+-      if (0 == err)
++      if (0 == err){
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
++              __add_wait_queue_entry_tail(&sync_fence->wq, &waiter->work);
++#else
+               __add_wait_queue_tail(&sync_fence->wq, &waiter->work);
++#endif
++      }
+       spin_unlock_irqrestore(&sync_fence->wq.lock, flags);
+ 
+       return err;
+@@ -578,8 +596,13 @@ int mali_internal_sync_fence_cancel_async(struct 
mali_internal_sync_fence *sync_
+       MALI_DEBUG_ASSERT_POINTER(waiter);
+ 
+       spin_lock_irqsave(&sync_fence->wq.lock, flags);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
++      if (!list_empty(&waiter->work.entry))
++              list_del_init(&waiter->work.entry);
++#else
+       if (!list_empty(&waiter->work.task_list))
+               list_del_init(&waiter->work.task_list);
++#endif
+       else
+               ret = -ENOENT;
+       spin_unlock_irqrestore(&sync_fence->wq.lock, flags);
+diff --git a/driver/src/devicedrv/mali/linux/mali_internal_sync.h 
b/driver/src/devicedrv/mali/linux/mali_internal_sync.h
+index a5655c7..70f29f9 100644
+--- linux/mali_internal_sync.h
++++ b/linux/mali_internal_sync.h
+@@ -112,7 +112,11 @@ typedef void (*mali_internal_sync_callback_t)(struct 
mali_internal_sync_fence *s
+               struct mali_internal_sync_fence_waiter *waiter);
+ 
+ struct mali_internal_sync_fence_waiter {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
++      wait_queue_entry_t work;
++#else
+       wait_queue_t work;
++#endif
+       mali_internal_sync_callback_t callback;
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
deleted file mode 100644
index 34cbccf..0000000
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-linux-mali_kernel_linux.c-Handle-clock-when-probed-a.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From ba8c94302a1c606315109a9d1cee342213fdbf98 Mon Sep 17 00:00:00 2001
-From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
-Date: Thu, 16 Feb 2017 12:15:58 -0800
-Subject: [PATCH] linux/mali_kernel_linux.c: Handle clock when probed and
- removed
-
-This patch will handle the clock through clock
-specifier for GPU PP0 and PP1.
-
-Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
-Upstream-Status: Inappropriate  [Specific to Xilinx ZynqMP]
----
- .../src/devicedrv/mali/linux/mali_kernel_linux.c   | 40 +++++++++++++++++++++-
- 1 file changed, 39 insertions(+), 1 deletion(-)
-
-diff --git a/driver/src/devicedrv/mali/linux/mali_kernel_linux.c 
b/driver/src/devicedrv/mali/linux/mali_kernel_linux.c
-index 9bfa2bd..cfde20f 100755
---- linux/mali_kernel_linux.c
-+++ b/linux/mali_kernel_linux.c
-@@ -45,6 +45,14 @@
- #if defined(CONFIG_MALI400_INTERNAL_PROFILING)
- #include "mali_profiling_internal.h"
- #endif
-+
-+#if defined(CONFIG_ARCH_ZYNQMP)
-+/* Initialize variables for clocks */
-+struct clk *clk_gpu;
-+struct clk *clk_gpu_pp0;
-+struct clk *clk_gpu_pp1;
-+#endif
-+
- #if defined(CONFIG_MALI400_PROFILING) && defined(CONFIG_MALI_DVFS)
- #include "mali_osk_profiling.h"
- #include "mali_dvfs_policy.h"
-@@ -580,7 +588,23 @@ static int mali_probe(struct platform_device *pdev)
-       }
- #endif
- 
--
-+#if defined(CONFIG_ARCH_ZYNQMP)
-+      /* Initialize clocks for GPU and PP */
-+      clk_gpu = devm_clk_get(&pdev->dev, "gpu");
-+      if (IS_ERR(clk_gpu))
-+              return PTR_ERR(clk_gpu);
-+      clk_prepare_enable(clk_gpu);
-+
-+      clk_gpu_pp0 = devm_clk_get(&pdev->dev, "gpu_pp0");
-+      if (IS_ERR(clk_gpu_pp0))
-+              return PTR_ERR(clk_gpu_pp0);
-+      clk_prepare_enable(clk_gpu_pp0);
-+
-+      clk_gpu_pp1 = devm_clk_get(&pdev->dev, "gpu_pp1");
-+      if (IS_ERR(clk_gpu_pp1))
-+              return PTR_ERR(clk_gpu_pp1);
-+      clk_prepare_enable(clk_gpu_pp1);
-+#endif
-       if (_MALI_OSK_ERR_OK == _mali_osk_wq_init()) {
-               /* Initialize the Mali GPU HW specified by pdev */
-               if (_MALI_OSK_ERR_OK == mali_initialize_subsystems()) {
-@@ -608,6 +632,12 @@ static int mali_probe(struct platform_device *pdev)
-               _mali_osk_wq_term();
-       }
- 
-+#if defined(CONFIG_ARCH_ZYNQMP)
-+      clk_disable_unprepare(clk_gpu);
-+      clk_disable_unprepare(clk_gpu_pp0);
-+      clk_disable_unprepare(clk_gpu_pp1);
-+#endif
-+
- #ifdef CONFIG_MALI_DEVFREQ
-       mali_devfreq_term(mdev);
- devfreq_init_failed:
-@@ -673,6 +703,14 @@ static int mali_remove(struct platform_device *pdev)
-       mali_platform_device_deinit(mali_platform_device);
- #endif
-       mali_platform_device = NULL;
-+
-+#if defined(CONFIG_ARCH_ZYNQMP)
-+      /* Remove clock */
-+      clk_disable_unprepare(clk_gpu);
-+      clk_disable_unprepare(clk_gpu_pp0);
-+      clk_disable_unprepare(clk_gpu_pp1);
-+#endif
-+
-       return 0;
- }
- 
--- 
-2.7.4
-
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch
new file mode 100644
index 0000000..3445512
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0009-mali_memory_swap_alloc.c-Rename-global_page_state-wi.patch
@@ -0,0 +1,48 @@
+From 478de18bf513ecad419d25981e7b66c78126752c Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Tue, 5 Dec 2017 09:58:36 -0800
+Subject: [PATCH 9/9] mali_memory_swap_alloc.c: Rename global_page_state with
+ global_zone_page_state
+
+Refer Kernel commit c41f012ade0b95b0a6e25c7150673e0554736165
+Which simply renames without any functional changes
+
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Upstream-Status: Pending
+---
+ driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c 
b/driver/src/devicedrv/mali/linux/mali_memory_swap_alloc.c
+index a54faca..e122b4c 100644
+--- linux/mali_memory_swap_alloc.c
++++ b/linux/mali_memory_swap_alloc.c
+@@ -248,7 +248,11 @@ static void 
mali_mem_swap_swapped_bkend_pool_shrink(_mali_mem_swap_pool_shrink_t
+       }
+ 
+       /* Get system free pages number. */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++      system_free_size = global_zone_page_state(NR_FREE_PAGES) * PAGE_SIZE;
++#else
+       system_free_size = global_page_state(NR_FREE_PAGES) * PAGE_SIZE;
++#endif
+       last_gpu_utilization = _mali_ukk_utilization_gp_pp();
+ 
+       if ((last_gpu_utilization < gpu_utilization_threshold_value)
+@@ -575,8 +579,12 @@ int mali_mem_swap_alloc_pages(mali_mem_swap *swap_mem, 
u32 size, u32 *bkend_idx)
+ 
+               list_add_tail(&m_page->list, &swap_mem->pages);
+       }
+-
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
++      system_free_size = global_zone_page_state(NR_FREE_PAGES) * PAGE_SIZE;
++#else
+       system_free_size = global_page_state(NR_FREE_PAGES) * PAGE_SIZE;
++#endif
++
+ 
+       if ((system_free_size < mali_mem_swap_out_threshold_value)
+           && (mem_backend_swapped_pool_size > 
(mali_mem_swap_out_threshold_value >> 2))
+-- 
+2.7.4
+
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
index ad159ba..98a86c8 100644
--- 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0010-common-mali_pm.c-Add-PM-runtime-barrier-after-removi.patch
@@ -1,4 +1,4 @@
-From 572d234259158bf9f046c2393a65e2800bec1062 Mon Sep 17 00:00:00 2001
+From 58e2c55176f1a146781430b2a570c8ce5f80d426 Mon Sep 17 00:00:00 2001
 From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
 Date: Mon, 28 Aug 2017 09:40:37 -0700
 Subject: [PATCH] common/mali_pm.c: Add PM runtime barrier after removing
@@ -15,7 +15,7 @@ Upstream-Status: Pending
  1 file changed, 1 insertion(+)
 
 diff --git a/driver/src/devicedrv/mali/common/mali_pm.c 
b/driver/src/devicedrv/mali/common/mali_pm.c
-index 1ef03a6..0343ad3 100755
+index 858c689..62a1e5f 100644
 --- common/mali_pm.c
 +++ b/common/mali_pm.c
 @@ -301,6 +301,7 @@ void mali_pm_init_end(void)
diff --git 
a/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch
 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch
new file mode 100644
index 0000000..38ab404
--- /dev/null
+++ 
b/meta-xilinx-bsp/recipes-graphics/mali/kernel-module-mali/0011-linux-mali_kernel_linux.c-Enable-disable-clock-for-r.patch
@@ -0,0 +1,153 @@
+From aeff13ad9e9ef73172a9325f669aefd3c0403dbb Mon Sep 17 00:00:00 2001
+From: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Date: Wed, 21 Feb 2018 16:52:15 -0800
+Subject: [PATCH] linux/mali_kernel_linux.c: Enable/disable clock for runtime
+ resume/suspend
+
+Enable/Disable the clock for GP,PP0 and PP1 during runtime
+resume/suspend.
+
+Signed-off-by: Madhurkiran Harikrishnan <madhu...@xilinx.com>
+Reviewed-by: Hyun Kwon <hy...@xilinx.com>
+Upstream Status: Inappropriate [Xilinx specific]
+---
+ .../src/devicedrv/mali/linux/mali_kernel_linux.c   | 65 ++++++++++++++++++----
+ 1 file changed, 54 insertions(+), 11 deletions(-)
+
+diff --git a/driver/src/devicedrv/mali/linux/mali_kernel_linux.c 
b/driver/src/devicedrv/mali/linux/mali_kernel_linux.c
+index f15fb56..e61f33b 100644
+--- linux/mali_kernel_linux.c
++++ b/linux/mali_kernel_linux.c
+@@ -51,6 +51,7 @@
+ struct clk *clk_gpu;
+ struct clk *clk_gpu_pp0;
+ struct clk *clk_gpu_pp1;
++mali_bool clk_enabled;
+ #endif
+ 
+ #if defined(CONFIG_MALI400_PROFILING) && defined(CONFIG_MALI_DVFS)
+@@ -281,6 +282,46 @@ struct file_operations mali_fops = {
+       .mmap = mali_mmap
+ };
+ 
++static int mali_enable_clk(void)
++{
++#if defined(CONFIG_ARCH_ZYNQMP)
++      int err = 0;
++
++      if (clk_enabled)
++              return 0;
++
++      clk_enabled = MALI_TRUE;
++      err = clk_prepare_enable(clk_gpu);
++      if (err) {
++              MALI_PRINT_ERROR(("Could not enable clock for GP\n\r"));
++              return err;
++      }
++      err = clk_prepare_enable(clk_gpu_pp0);
++      if (err) {
++              MALI_PRINT_ERROR(("Could not enable clock for PP0\n\r"));
++              return err;
++      }
++      err = clk_prepare_enable(clk_gpu_pp1);
++      if (err) {
++              MALI_PRINT_ERROR(("Could not enable clock for PP1\n\r"));
++              return err;
++      }
++#endif
++      return 0;
++}
++
++static void mali_disable_clk(void)
++{
++#if defined(CONFIG_ARCH_ZYNQMP)
++      if (clk_enabled) {
++              clk_enabled = MALI_FALSE;
++              clk_disable_unprepare(clk_gpu);
++              clk_disable_unprepare(clk_gpu_pp0);
++              clk_disable_unprepare(clk_gpu_pp1);
++      }
++#endif
++}
++
+ #if MALI_ENABLE_CPU_CYCLES
+ void mali_init_cpu_time_counters(int reset, int enable_divide_by_64)
+ {
+@@ -593,18 +634,19 @@ static int mali_probe(struct platform_device *pdev)
+       clk_gpu = devm_clk_get(&pdev->dev, "gpu");
+       if (IS_ERR(clk_gpu))
+               return PTR_ERR(clk_gpu);
+-      clk_prepare_enable(clk_gpu);
+ 
+       clk_gpu_pp0 = devm_clk_get(&pdev->dev, "gpu_pp0");
+       if (IS_ERR(clk_gpu_pp0))
+               return PTR_ERR(clk_gpu_pp0);
+-      clk_prepare_enable(clk_gpu_pp0);
+ 
+       clk_gpu_pp1 = devm_clk_get(&pdev->dev, "gpu_pp1");
+       if (IS_ERR(clk_gpu_pp1))
+               return PTR_ERR(clk_gpu_pp1);
+-      clk_prepare_enable(clk_gpu_pp1);
+ #endif
++
++      err = mali_enable_clk();
++      if (err)
++              return err;
+       if (_MALI_OSK_ERR_OK == _mali_osk_wq_init()) {
+               /* Initialize the Mali GPU HW specified by pdev */
+               if (_MALI_OSK_ERR_OK == mali_initialize_subsystems()) {
+@@ -632,11 +674,6 @@ static int mali_probe(struct platform_device *pdev)
+               _mali_osk_wq_term();
+       }
+ 
+-#if defined(CONFIG_ARCH_ZYNQMP)
+-      clk_disable_unprepare(clk_gpu);
+-      clk_disable_unprepare(clk_gpu_pp0);
+-      clk_disable_unprepare(clk_gpu_pp1);
+-#endif
+ 
+ #ifdef CONFIG_MALI_DEVFREQ
+       mali_devfreq_term(mdev);
+@@ -644,6 +681,7 @@ devfreq_init_failed:
+       mali_pm_metrics_term(mdev);
+ pm_metrics_init_failed:
+       clk_disable_unprepare(mdev->clock);
++      mali_disable_clk();
+ clock_prepare_failed:
+       clk_put(mdev->clock);
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && defined(CONFIG_OF) \
+@@ -706,9 +744,7 @@ static int mali_remove(struct platform_device *pdev)
+ 
+ #if defined(CONFIG_ARCH_ZYNQMP)
+       /* Remove clock */
+-      clk_disable_unprepare(clk_gpu);
+-      clk_disable_unprepare(clk_gpu_pp0);
+-      clk_disable_unprepare(clk_gpu_pp1);
++      mali_disable_clk();
+ #endif
+ 
+       return 0;
+@@ -816,6 +852,8 @@ static int mali_driver_runtime_suspend(struct device *dev)
+               devfreq_suspend_device(mdev->devfreq);
+ #endif
+ 
++      mali_disable_clk();
++
+               return 0;
+       } else {
+               return -EBUSY;
+@@ -824,6 +862,11 @@ static int mali_driver_runtime_suspend(struct device *dev)
+ 
+ static int mali_driver_runtime_resume(struct device *dev)
+ {
++      int err ;
++
++      err = mali_enable_clk();
++      if (err)
++              return err;
+ #ifdef CONFIG_MALI_DEVFREQ
+       struct mali_device *mdev = dev_get_drvdata(dev);
+       if (!mdev)
+-- 
+2.7.4
+
-- 
2.7.4

-- 
_______________________________________________
meta-xilinx mailing list
meta-xilinx@yoctoproject.org
https://lists.yoctoproject.org/listinfo/meta-xilinx

Reply via email to