diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0001-lvgl-add-support-for-lvgl-v8.2.0.patch b/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0001-lvgl-add-support-for-lvgl-v8.2.0.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6fcd8f28a398eaa6f6bbfb62bd0ea75ceb0cb6ca
--- /dev/null
+++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/files/0001-lvgl-add-support-for-lvgl-v8.2.0.patch
@@ -0,0 +1,935 @@
+From 1b4e436187dea1adbb997d53b3eacd1400008f5d Mon Sep 17 00:00:00 2001
+From: Bartosz Golaszewski <bartosz.golaszewski@huawei.com>
+Date: Tue, 8 Mar 2022 13:15:42 +0100
+Subject: [PATCH] lvgl: add support for lvgl v8.2.0
+
+This is the minimal set of changes required to support lvgl v8 in zephyr.
+
+Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@huawei.com>
+---
+ MAINTAINERS.yml                               |   1 -
+ boards/arm/mimxrt1050_evk/Kconfig.defconfig   |  16 +-
+ boards/arm/mimxrt1060_evk/Kconfig.defconfig   |  16 +-
+ boards/arm/mimxrt1064_evk/Kconfig.defconfig   |  16 +-
+ boards/arm/reel_board/Kconfig.defconfig       |  10 +-
+ .../Kconfig.defconfig                         |  18 +-
+ .../Kconfig.defconfig                         |  20 +--
+ .../Kconfig.defconfig                         |  18 +-
+ .../shields/ls0xx_generic/Kconfig.defconfig   |  16 +-
+ boards/shields/ssd1306/Kconfig.defconfig      |  10 +-
+ boards/shields/st7735r/Kconfig.defconfig      |   2 +-
+ .../shields/st7789v_generic/Kconfig.defconfig |   8 +-
+ .../waveshare_epaper/Kconfig.defconfig        |  10 +-
+ drivers/kscan/Kconfig.sdl                     |   2 +-
+ lib/CMakeLists.txt                            |   1 -
+ lib/Kconfig                                   |   2 -
+ modules/Kconfig                               |   1 +
+ modules/Kconfig.lvgl                          |  49 ++++++
+ .../display/lvgl/boards/native_posix.conf     |   1 +
+ .../display/lvgl/boards/native_posix_64.conf  |   1 +
+ samples/subsys/display/lvgl/prj.conf          |  12 +-
+ samples/subsys/display/lvgl/src/main.c        |  17 +-
+ tests/lib/gui/lvgl/prj.conf                   | 155 ++++++++----------
+ tests/lib/gui/lvgl/src/img.c                  |   1 -
+ tests/lib/gui/lvgl/src/main.c                 |   6 +-
+ tests/lib/gui/lvgl/testcase.yaml              |  46 +++---
+ west.yml                                      |   2 +-
+ 27 files changed, 238 insertions(+), 219 deletions(-)
+ create mode 100644 modules/Kconfig.lvgl
+ create mode 100644 samples/subsys/display/lvgl/boards/native_posix.conf
+ create mode 100644 samples/subsys/display/lvgl/boards/native_posix_64.conf
+
+diff --git a/MAINTAINERS.yml b/MAINTAINERS.yml
+index a7a64b3c5c..fbf21fbfca 100644
+--- a/MAINTAINERS.yml
++++ b/MAINTAINERS.yml
+@@ -402,7 +402,6 @@ Display drivers:
+         - include/drivers/display.h
+         - include/display/
+         - include/drivers/display.h
+-        - lib/gui/
+         - subsys/fb/
+         - samples/subsys/display/
+     labels:
+diff --git a/boards/arm/mimxrt1050_evk/Kconfig.defconfig b/boards/arm/mimxrt1050_evk/Kconfig.defconfig
+index 8d7703875f..9bf18b08da 100644
+--- a/boards/arm/mimxrt1050_evk/Kconfig.defconfig
++++ b/boards/arm/mimxrt1050_evk/Kconfig.defconfig
+@@ -53,26 +53,26 @@ endif # NETWORKING
+ 
+ if LVGL
+ 
+-config LVGL_POINTER_KSCAN
++config LV_Z_POINTER_KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_DEV_NAME
++config LV_Z_POINTER_KSCAN_DEV_NAME
+ 	default "FT5336"
+ 
+-config LVGL_HOR_RES_MAX
++config LV_Z_HOR_RES_MAX
+ 	default 480
+ 
+-config LVGL_VER_RES_MAX
++config LV_Z_VER_RES_MAX
+ 	default 272
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 16
+ 
+-config LVGL_DPI
++config LV_Z_DPI
+ 	default 128
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_16
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_16
+ endchoice
+ 
+ endif # LVGL
+diff --git a/boards/arm/mimxrt1060_evk/Kconfig.defconfig b/boards/arm/mimxrt1060_evk/Kconfig.defconfig
+index 8673b5fcb0..c5a3c06c2b 100644
+--- a/boards/arm/mimxrt1060_evk/Kconfig.defconfig
++++ b/boards/arm/mimxrt1060_evk/Kconfig.defconfig
+@@ -53,26 +53,26 @@ endif # NETWORKING
+ 
+ if LVGL
+ 
+-config LVGL_POINTER_KSCAN
++config LV_Z_POINTER_KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_DEV_NAME
++config LV_Z_POINTER_KSCAN_DEV_NAME
+ 	default "FT5336"
+ 
+-config LVGL_HOR_RES_MAX
++config LV_Z_HOR_RES_MAX
+ 	default 480
+ 
+-config LVGL_VER_RES_MAX
++config LV_Z_VER_RES_MAX
+ 	default 272
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 16
+ 
+-config LVGL_DPI
++config LV_Z_DPI
+ 	default 128
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_16
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_16
+ endchoice
+ 
+ endif # LVGL
+diff --git a/boards/arm/mimxrt1064_evk/Kconfig.defconfig b/boards/arm/mimxrt1064_evk/Kconfig.defconfig
+index 9a38a4f427..121691b141 100644
+--- a/boards/arm/mimxrt1064_evk/Kconfig.defconfig
++++ b/boards/arm/mimxrt1064_evk/Kconfig.defconfig
+@@ -47,26 +47,26 @@ endif # NETWORKING
+ 
+ if LVGL
+ 
+-config LVGL_POINTER_KSCAN
++config LV_Z_POINTER_KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_DEV_NAME
++config LV_Z_POINTER_KSCAN_DEV_NAME
+ 	default "FT5336"
+ 
+-config LVGL_HOR_RES_MAX
++config LV_Z_HOR_RES_MAX
+ 	default 480
+ 
+-config LVGL_VER_RES_MAX
++config LV_Z_VER_RES_MAX
+ 	default 272
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 16
+ 
+-config LVGL_DPI
++config LV_Z_DPI
+ 	default 128
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_16
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_16
+ endchoice
+ 
+ endif # LVGL
+diff --git a/boards/arm/reel_board/Kconfig.defconfig b/boards/arm/reel_board/Kconfig.defconfig
+index 3c616e79f8..48536f27ce 100644
+--- a/boards/arm/reel_board/Kconfig.defconfig
++++ b/boards/arm/reel_board/Kconfig.defconfig
+@@ -28,17 +28,17 @@ endif # DISPLAY
+ 
+ if LVGL
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_1
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_1
+ endchoice
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 1
+ 
+-config LVGL_DPI
++config LV_Z_DPI
+ 	default 130
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 16
+ 
+ endif # LVGL
+diff --git a/boards/shields/adafruit_2_8_tft_touch_v2/Kconfig.defconfig b/boards/shields/adafruit_2_8_tft_touch_v2/Kconfig.defconfig
+index bf717dacbf..3c4ccbfbcd 100644
+--- a/boards/shields/adafruit_2_8_tft_touch_v2/Kconfig.defconfig
++++ b/boards/shields/adafruit_2_8_tft_touch_v2/Kconfig.defconfig
+@@ -30,32 +30,32 @@ endif # KSCAN
+ 
+ if LVGL
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 64
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 24
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_32
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_32
+ endchoice
+ 
+ config KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN
++config LV_Z_POINTER_KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_DEV_NAME
++config LV_Z_POINTER_KSCAN_DEV_NAME
+ 	default "FT5336"
+ 
+-config LVGL_POINTER_KSCAN_SWAP_XY
++config LV_Z_POINTER_KSCAN_SWAP_XY
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_INVERT_X
++config LV_Z_POINTER_KSCAN_INVERT_X
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_INVERT_Y
++config LV_Z_POINTER_KSCAN_INVERT_Y
+ 	default y
+ 
+ endif # LVGL
+diff --git a/boards/shields/buydisplay_2_8_tft_touch_arduino/Kconfig.defconfig b/boards/shields/buydisplay_2_8_tft_touch_arduino/Kconfig.defconfig
+index bb1c3dd88d..e3c3839a8a 100644
+--- a/boards/shields/buydisplay_2_8_tft_touch_arduino/Kconfig.defconfig
++++ b/boards/shields/buydisplay_2_8_tft_touch_arduino/Kconfig.defconfig
+@@ -27,35 +27,35 @@ endif # KSCAN
+ 
+ if LVGL
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 64
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 16
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_16
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_16
+ endchoice
+ 
+-config LVGL_COLOR_16_SWAP
++config LV_COLOR_16_SWAP
+ 	default y
+ 
+ config KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN
++config LV_Z_POINTER_KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_DEV_NAME
++config LV_Z_POINTER_KSCAN_DEV_NAME
+ 	default "TOUCH"
+ 
+-config LVGL_POINTER_KSCAN_SWAP_XY
++config LV_Z_POINTER_KSCAN_SWAP_XY
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_INVERT_X
++config LV_Z_POINTER_KSCAN_INVERT_X
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_INVERT_Y
++config LV_Z_POINTER_KSCAN_INVERT_Y
+ 	default y
+ 
+ endif # LVGL
+diff --git a/boards/shields/buydisplay_3_5_tft_touch_arduino/Kconfig.defconfig b/boards/shields/buydisplay_3_5_tft_touch_arduino/Kconfig.defconfig
+index 422877192b..3d0205f0c5 100644
+--- a/boards/shields/buydisplay_3_5_tft_touch_arduino/Kconfig.defconfig
++++ b/boards/shields/buydisplay_3_5_tft_touch_arduino/Kconfig.defconfig
+@@ -27,32 +27,32 @@ endif # KSCAN
+ 
+ if LVGL
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 32
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 24
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_16
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_16
+ endchoice
+ 
+ config KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN
++config LV_Z_POINTER_KSCAN
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_DEV_NAME
++config LV_Z_POINTER_KSCAN_DEV_NAME
+ 	default "TOUCH"
+ 
+-config LVGL_POINTER_KSCAN_SWAP_XY
++config LV_Z_POINTER_KSCAN_SWAP_XY
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_INVERT_X
++config LV_Z_POINTER_KSCAN_INVERT_X
+ 	default y
+ 
+-config LVGL_POINTER_KSCAN_INVERT_Y
++config LV_Z_POINTER_KSCAN_INVERT_Y
+ 	default y
+ 
+ endif # LVGL
+diff --git a/boards/shields/ls0xx_generic/Kconfig.defconfig b/boards/shields/ls0xx_generic/Kconfig.defconfig
+index 2ef03d2d02..b495a1a989 100644
+--- a/boards/shields/ls0xx_generic/Kconfig.defconfig
++++ b/boards/shields/ls0xx_generic/Kconfig.defconfig
+@@ -13,20 +13,20 @@ config LS0XX
+ 
+ if LVGL
+ 
+-config LVGL_VDB_SIZE
+-	int "Display buffer percentage"
++config LV_Z_VDB_SIZE
++	int
+ 	default 16
+ 
+-config LVGL_DPI
+-	int "Dots per inch"
++config LV_Z_DPI
++	int
+ 	default 150
+ 
+-config LVGL_BITS_PER_PIXEL
+-	int "Number of bits per pixel"
++config LV_Z_BITS_PER_PIXEL
++	int
+ 	default 1
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_1
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_1
+ endchoice
+ 
+ endif # LVGL
+diff --git a/boards/shields/ssd1306/Kconfig.defconfig b/boards/shields/ssd1306/Kconfig.defconfig
+index 9fe044e423..fb71784857 100644
+--- a/boards/shields/ssd1306/Kconfig.defconfig
++++ b/boards/shields/ssd1306/Kconfig.defconfig
+@@ -28,18 +28,18 @@ endchoice
+ 
+ if LVGL
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 64
+ 
+-config LVGL_DPI
++config LV_Z_DPI
+ 	default 116 if SHIELD_SH1106_128X64
+ 	default 148
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 1
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_1
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_1
+ endchoice
+ 
+ endif # LVGL
+diff --git a/boards/shields/st7735r/Kconfig.defconfig b/boards/shields/st7735r/Kconfig.defconfig
+index 73eb0fb1ac..8bfcf10322 100644
+--- a/boards/shields/st7735r/Kconfig.defconfig
++++ b/boards/shields/st7735r/Kconfig.defconfig
+@@ -14,7 +14,7 @@ config ST7735R
+ 
+ if LVGL
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 16
+ 
+ endif # LVGL
+diff --git a/boards/shields/st7789v_generic/Kconfig.defconfig b/boards/shields/st7789v_generic/Kconfig.defconfig
+index a215504fd3..64625b97ea 100644
+--- a/boards/shields/st7789v_generic/Kconfig.defconfig
++++ b/boards/shields/st7789v_generic/Kconfig.defconfig
+@@ -18,15 +18,15 @@ endchoice
+ 
+ if LVGL
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 24 if SHIELD_ST7789V_TL019FQV01
+ 	default 16 if SHIELD_ST7789V_WAVESHARE_240X240
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_16 if SHIELD_ST7789V_WAVESHARE_240X240
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_16 if SHIELD_ST7789V_WAVESHARE_240X240
+ endchoice
+ 
+-config LVGL_COLOR_16_SWAP
++config LV_COLOR_16_SWAP
+ 	default y if SHIELD_ST7789V_WAVESHARE_240X240
+ 
+ endif # LVGL
+diff --git a/boards/shields/waveshare_epaper/Kconfig.defconfig b/boards/shields/waveshare_epaper/Kconfig.defconfig
+index 7aee8b3c73..cbb6362c3b 100644
+--- a/boards/shields/waveshare_epaper/Kconfig.defconfig
++++ b/boards/shields/waveshare_epaper/Kconfig.defconfig
+@@ -25,20 +25,20 @@ config GD7965
+ 
+ if LVGL
+ 
+-config LVGL_VDB_SIZE
++config LV_Z_VDB_SIZE
+ 	default 16 if SHIELD_WAVESHARE_EPAPER_GDEW075T7
+ 	default 16
+ 
+-config LVGL_DPI
++config LV_Z_DPI
+ 	default 188 if SHIELD_WAVESHARE_EPAPER_GDEH0154A07
+ 	default 120 if SHIELD_WAVESHARE_EPAPER_GDEW042T2
+ 	default 130
+ 
+-choice LVGL_COLOR_DEPTH
+-	default LVGL_COLOR_DEPTH_1
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_1
+ endchoice
+ 
+-config LVGL_BITS_PER_PIXEL
++config LV_Z_BITS_PER_PIXEL
+ 	default 1
+ 
+ endif # LVGL
+diff --git a/drivers/kscan/Kconfig.sdl b/drivers/kscan/Kconfig.sdl
+index b594e7aa2c..68b2a3a9b3 100644
+--- a/drivers/kscan/Kconfig.sdl
++++ b/drivers/kscan/Kconfig.sdl
+@@ -10,5 +10,5 @@ config KSCAN_SDL
+ config SDL_POINTER_KSCAN_DEV_NAME
+ 	string "SDL kscan device name"
+ 	depends on KSCAN_SDL
+-	default LVGL_POINTER_KSCAN_DEV_NAME if LVGL
++	default LV_Z_POINTER_KSCAN_DEV_NAME if LVGL
+ 	default "SDL_KSCAN"
+diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
+index ca8c4b9440..db2193a1ca 100644
+--- a/lib/CMakeLists.txt
++++ b/lib/CMakeLists.txt
+@@ -4,7 +4,6 @@ if(NOT CONFIG_EXTERNAL_LIBC)
+ add_subdirectory(libc)
+ add_subdirectory(posix)
+ endif()
+-add_subdirectory(gui)
+ add_subdirectory(os)
+ add_subdirectory(util)
+ add_subdirectory_ifdef(CONFIG_SMF smf)
+diff --git a/lib/Kconfig b/lib/Kconfig
+index 5ab230463a..f3f30085b3 100644
+--- a/lib/Kconfig
++++ b/lib/Kconfig
+@@ -5,8 +5,6 @@ source "lib/libc/Kconfig"
+ 
+ menu "Additional libraries"
+ 
+-source "lib/gui/Kconfig"
+-
+ source "lib/os/Kconfig"
+ 
+ source "lib/posix/Kconfig"
+diff --git a/modules/Kconfig b/modules/Kconfig
+index 6cf510adcc..08aa3aa26a 100644
+--- a/modules/Kconfig
++++ b/modules/Kconfig
+@@ -16,6 +16,7 @@ source "modules/Kconfig.eos_s3"
+ source "modules/Kconfig.imx"
+ source "modules/Kconfig.infineon"
+ source "modules/Kconfig.libmetal"
++source "modules/Kconfig.lvgl"
+ source "modules/Kconfig.mcux"
+ source "modules/Kconfig.microchip"
+ source "modules/Kconfig.nuvoton"
+diff --git a/modules/Kconfig.lvgl b/modules/Kconfig.lvgl
+new file mode 100644
+index 0000000000..a6691612a0
+--- /dev/null
++++ b/modules/Kconfig.lvgl
+@@ -0,0 +1,49 @@
++# Copyright (c) 2022 Huawei Inc.
++# SPDX-License-Identifier: Apache-2.0
++
++config LVGL
++	bool "LittlevGL GUI library"
++	help
++	  This option enables the LittlevGL GUI library.
++
++if !LVGL
++
++config LV_Z_POINTER_KSCAN
++	bool
++
++config LV_Z_POINTER_KSCAN_DEV_NAME
++	string
++	default "KSCAN"
++
++config LV_Z_POINTER_KSCAN_MSGQ_COUNT
++	int
++	default 10
++
++config LV_Z_POINTER_KSCAN_SWAP_XY
++	bool
++
++config LV_Z_POINTER_KSCAN_INVERT_X
++	bool
++
++config LV_Z_POINTER_KSCAN_INVERT_Y
++	bool
++
++choice LV_COLOR_DEPTH
++	default LV_COLOR_DEPTH_16
++	prompt "Color depth."
++	depends on LVGL
++
++	config LV_COLOR_DEPTH_32
++		bool "32: ARGB8888"
++	config LV_COLOR_DEPTH_16
++		bool "16: RGB565"
++	config LV_COLOR_DEPTH_8
++		bool "8: RGB232"
++	config LV_COLOR_DEPTH_1
++		bool "1: 1 byte per pixel"
++endchoice
++
++config LV_COLOR_16_SWAP
++	bool
++
++endif
+diff --git a/samples/subsys/display/lvgl/boards/native_posix.conf b/samples/subsys/display/lvgl/boards/native_posix.conf
+new file mode 100644
+index 0000000000..1f42f11f7a
+--- /dev/null
++++ b/samples/subsys/display/lvgl/boards/native_posix.conf
+@@ -0,0 +1 @@
++CONFIG_LV_COLOR_DEPTH_32=y
+diff --git a/samples/subsys/display/lvgl/boards/native_posix_64.conf b/samples/subsys/display/lvgl/boards/native_posix_64.conf
+new file mode 100644
+index 0000000000..1f42f11f7a
+--- /dev/null
++++ b/samples/subsys/display/lvgl/boards/native_posix_64.conf
+@@ -0,0 +1 @@
++CONFIG_LV_COLOR_DEPTH_32=y
+diff --git a/samples/subsys/display/lvgl/prj.conf b/samples/subsys/display/lvgl/prj.conf
+index e1402fbfdc..8ac5276a02 100644
+--- a/samples/subsys/display/lvgl/prj.conf
++++ b/samples/subsys/display/lvgl/prj.conf
+@@ -1,4 +1,4 @@
+-CONFIG_HEAP_MEM_POOL_SIZE=16384
++CONFIG_LV_Z_MEM_POOL_NUMBER_BLOCKS=8
+ CONFIG_MAIN_STACK_SIZE=2048
+ 
+ CONFIG_DISPLAY=y
+@@ -7,7 +7,9 @@ CONFIG_DISPLAY_LOG_LEVEL_ERR=y
+ CONFIG_LOG=y
+ 
+ CONFIG_LVGL=y
+-CONFIG_LVGL_USE_LABEL=y
+-CONFIG_LVGL_USE_CONT=y
+-CONFIG_LVGL_USE_BTN=y
+-CONFIG_LVGL_USE_THEME_MATERIAL=y
++CONFIG_LV_MEM_CUSTOM=y
++CONFIG_LV_USE_LOG=y
++CONFIG_LV_USE_LABEL=y
++CONFIG_LV_USE_BTN=y
++CONFIG_LV_USE_IMG=y
++CONFIG_LV_FONT_MONTSERRAT_14=y
+diff --git a/samples/subsys/display/lvgl/src/main.c b/samples/subsys/display/lvgl/src/main.c
+index 6ce5749bd5..a0a4bcbe7d 100644
+--- a/samples/subsys/display/lvgl/src/main.c
++++ b/samples/subsys/display/lvgl/src/main.c
+@@ -29,22 +29,21 @@ void main(void)
+ 		return;
+ 	}
+ 
+-	if (IS_ENABLED(CONFIG_LVGL_POINTER_KSCAN)) {
++	if (IS_ENABLED(CONFIG_LV_Z_POINTER_KSCAN)) {
+ 		lv_obj_t *hello_world_button;
+ 
+-		hello_world_button = lv_btn_create(lv_scr_act(), NULL);
+-		lv_obj_align(hello_world_button, NULL, LV_ALIGN_CENTER, 0, 0);
+-		lv_btn_set_fit(hello_world_button, LV_FIT_TIGHT);
+-		hello_world_label = lv_label_create(hello_world_button, NULL);
++		hello_world_button = lv_btn_create(lv_scr_act());
++		lv_obj_align(hello_world_button, LV_ALIGN_CENTER, 0, 0);
++		hello_world_label = lv_label_create(hello_world_button);
+ 	} else {
+-		hello_world_label = lv_label_create(lv_scr_act(), NULL);
++		hello_world_label = lv_label_create(lv_scr_act());
+ 	}
+ 
+ 	lv_label_set_text(hello_world_label, "Hello world!");
+-	lv_obj_align(hello_world_label, NULL, LV_ALIGN_CENTER, 0, 0);
++	lv_obj_align(hello_world_label, LV_ALIGN_CENTER, 0, 0);
+ 
+-	count_label = lv_label_create(lv_scr_act(), NULL);
+-	lv_obj_align(count_label, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
++	count_label = lv_label_create(lv_scr_act());
++	lv_obj_align(count_label, LV_ALIGN_BOTTOM_MID, 0, 0);
+ 
+ 	lv_task_handler();
+ 	display_blanking_off(display_dev);
+diff --git a/tests/lib/gui/lvgl/prj.conf b/tests/lib/gui/lvgl/prj.conf
+index 63723a3f28..e84879dc66 100644
+--- a/tests/lib/gui/lvgl/prj.conf
++++ b/tests/lib/gui/lvgl/prj.conf
+@@ -12,91 +12,70 @@ CONFIG_FILE_SYSTEM=y
+ CONFIG_FILE_SYSTEM_LITTLEFS=y
+ 
+ CONFIG_LVGL=y
+-# Make sure that the rendering task is always executed if we call
+-# lv_task_handler by setting the refresh period to zero
+-CONFIG_LVGL_DISP_DEF_REFR_PERIOD=0
+-CONFIG_LVGL_COLOR_SCREEN_TRANSP=y
+-CONFIG_LVGL_ANTIALIAS=y
+-CONFIG_LVGL_USE_ANIMATION=y
+-CONFIG_LVGL_USE_SHADOW=y
+-CONFIG_LVGL_USE_OUTLINE=y
+-CONFIG_LVGL_USE_PATTERN=y
+-CONFIG_LVGL_USE_VALUE_STR=y
+-CONFIG_LVGL_USE_BLEND_MODES=y
+-CONFIG_LVGL_USE_OPA_SCALE=y
+-CONFIG_LVGL_USE_IMG_TRANSFORM=y
+-CONFIG_LVGL_USE_GROUP=y
+-CONFIG_LVGL_USE_GPU=y
+-CONFIG_LVGL_IMG_CF_INDEXED=y
+-CONFIG_LVGL_IMG_CF_ALPHA=y
+-CONFIG_LVGL_USE_FILESYSTEM=y
+-CONFIG_LVGL_DOUBLE_VDB=y
+-CONFIG_LVGL_USE_BIDI=y
+-CONFIG_LVGL_USE_ARABIC_PERSIAN_CHARS=y
+-CONFIG_LVGL_USE_OBJ_REALIGN=y
+-CONFIG_LVGL_USE_LABEL=y
+-CONFIG_LVGL_LABEL_TEXT_SEL=y
+-CONFIG_LVGL_LABEL_LONG_TXT_HINT=y
+-CONFIG_LVGL_USE_IMG=y
+-CONFIG_LVGL_USE_LINE=y
+-CONFIG_LVGL_USE_ARC=y
+-CONFIG_LVGL_USE_CONT=y
+-CONFIG_LVGL_USE_PAGE=y
+-CONFIG_LVGL_USE_WIN=y
+-CONFIG_LVGL_USE_TABVIEW=y
+-CONFIG_LVGL_USE_TILEVIEW=y
+-CONFIG_LVGL_USE_CALENDAR=y
+-CONFIG_LVGL_CALENDAR_WEEK_STARTS_MONDAY=y
+-CONFIG_LVGL_USE_SPINNER=y
+-CONFIG_LVGL_USE_CANVAS=y
+-CONFIG_LVGL_USE_BAR=y
+-CONFIG_LVGL_USE_LINEMETER=y
+-CONFIG_LVGL_USE_GAUGE=y
+-CONFIG_LVGL_USE_CHART=y
+-CONFIG_LVGL_USE_TABLE=y
+-CONFIG_LVGL_USE_LED=y
+-CONFIG_LVGL_USE_MSGBOX=y
+-CONFIG_LVGL_USE_TEXTAREA=y
+-CONFIG_LVGL_USE_SPINBOX=y
+-CONFIG_LVGL_USE_BTN=y
+-CONFIG_LVGL_USE_IMGBTN=y
+-CONFIG_LVGL_IMGBTN_TILED=y
+-CONFIG_LVGL_USE_BTNMATRIX=y
+-CONFIG_LVGL_USE_KEYBOARD=y
+-CONFIG_LVGL_USE_CHECKBOX=y
+-CONFIG_LVGL_USE_LIST=y
+-CONFIG_LVGL_USE_DROPDOWN=y
+-CONFIG_LVGL_USE_ROLLER=y
+-CONFIG_LVGL_USE_SLIDER=y
+-CONFIG_LVGL_USE_SWITCH=y
+-CONFIG_LVGL_USE_LED=y
+-CONFIG_LVGL_USE_OBJMASK=y
+-CONFIG_LVGL_USE_THEME_MATERIAL=y
+-CONFIG_LVGL_FONT_MONTSERRAT_8=y
+-CONFIG_LVGL_FONT_MONTSERRAT_10=y
+-CONFIG_LVGL_FONT_MONTSERRAT_12=y
+-CONFIG_LVGL_FONT_MONTSERRAT_14=y
+-CONFIG_LVGL_FONT_MONTSERRAT_16=y
+-CONFIG_LVGL_FONT_MONTSERRAT_18=y
+-CONFIG_LVGL_FONT_MONTSERRAT_20=y
+-CONFIG_LVGL_FONT_MONTSERRAT_22=y
+-CONFIG_LVGL_FONT_MONTSERRAT_24=y
+-CONFIG_LVGL_FONT_MONTSERRAT_26=y
+-CONFIG_LVGL_FONT_MONTSERRAT_28=y
+-CONFIG_LVGL_FONT_MONTSERRAT_30=y
+-CONFIG_LVGL_FONT_MONTSERRAT_32=y
+-CONFIG_LVGL_FONT_MONTSERRAT_34=y
+-CONFIG_LVGL_FONT_MONTSERRAT_36=y
+-CONFIG_LVGL_FONT_MONTSERRAT_38=y
+-CONFIG_LVGL_FONT_MONTSERRAT_40=y
+-CONFIG_LVGL_FONT_MONTSERRAT_42=y
+-CONFIG_LVGL_FONT_MONTSERRAT_44=y
+-CONFIG_LVGL_FONT_MONTSERRAT_46=y
+-CONFIG_LVGL_FONT_MONTSERRAT_48=y
+-CONFIG_LVGL_FONT_MONTSERRAT_12_SUBPX=y
+-CONFIG_LVGL_FONT_MONTSERRAT_28_COMPRESSED=y
+-CONFIG_LVGL_FONT_DEJAVU_16_PERSIAN_HEBREW=y
+-CONFIG_LVGL_FONT_SIMSUN_16_CJK=y
+-CONFIG_LVGL_FONT_UNSCII_8=y
+-CONFIG_LVGL_USE_FONT_COMPRESSED=y
+-CONFIG_LVGL_USE_FONT_SUBPX=y
++CONFIG_LV_Z_MEM_POOL_NUMBER_BLOCKS=8
++CONFIG_LV_Z_USE_FILESYSTEM=y
++CONFIG_LV_MEM_CUSTOM=y
++CONFIG_LV_USE_LOG=y
++CONFIG_LV_COLOR_DEPTH_32=y
++CONFIG_LV_COLOR_SCREEN_TRANSP=y
++CONFIG_LV_USE_BIDI=y
++CONFIG_LV_USE_ARABIC_PERSIAN_CHARS=y
++CONFIG_LV_USE_LABEL=y
++CONFIG_LV_LABEL_TEXT_SELECTION=y
++CONFIG_LV_LABEL_LONG_TXT_HINT=y
++CONFIG_LV_USE_IMG=y
++CONFIG_LV_USE_LINE=y
++CONFIG_LV_USE_ARC=y
++CONFIG_LV_USE_WIN=y
++CONFIG_LV_USE_TABVIEW=y
++CONFIG_LV_USE_TILEVIEW=y
++CONFIG_LV_USE_CALENDAR=y
++CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY=y
++CONFIG_LV_USE_SPINNER=y
++CONFIG_LV_USE_CANVAS=y
++CONFIG_LV_USE_BAR=y
++CONFIG_LV_USE_CHART=y
++CONFIG_LV_USE_TABLE=y
++CONFIG_LV_USE_LED=y
++CONFIG_LV_USE_MSGBOX=y
++CONFIG_LV_USE_TEXTAREA=y
++CONFIG_LV_USE_SPINBOX=y
++CONFIG_LV_USE_BTN=y
++CONFIG_LV_USE_IMGBTN=y
++CONFIG_LV_USE_BTNMATRIX=y
++CONFIG_LV_USE_KEYBOARD=y
++CONFIG_LV_USE_CHECKBOX=y
++CONFIG_LV_USE_LIST=y
++CONFIG_LV_USE_DROPDOWN=y
++CONFIG_LV_USE_ROLLER=y
++CONFIG_LV_USE_SLIDER=y
++CONFIG_LV_USE_SWITCH=y
++CONFIG_LV_USE_LED=y
++CONFIG_LV_FONT_MONTSERRAT_8=y
++CONFIG_LV_FONT_MONTSERRAT_10=y
++CONFIG_LV_FONT_MONTSERRAT_12=y
++CONFIG_LV_FONT_MONTSERRAT_14=y
++CONFIG_LV_FONT_MONTSERRAT_16=y
++CONFIG_LV_FONT_MONTSERRAT_18=y
++CONFIG_LV_FONT_MONTSERRAT_20=y
++CONFIG_LV_FONT_MONTSERRAT_22=y
++CONFIG_LV_FONT_MONTSERRAT_24=y
++CONFIG_LV_FONT_MONTSERRAT_26=y
++CONFIG_LV_FONT_MONTSERRAT_28=y
++CONFIG_LV_FONT_MONTSERRAT_30=y
++CONFIG_LV_FONT_MONTSERRAT_32=y
++CONFIG_LV_FONT_MONTSERRAT_34=y
++CONFIG_LV_FONT_MONTSERRAT_36=y
++CONFIG_LV_FONT_MONTSERRAT_38=y
++CONFIG_LV_FONT_MONTSERRAT_40=y
++CONFIG_LV_FONT_MONTSERRAT_42=y
++CONFIG_LV_FONT_MONTSERRAT_44=y
++CONFIG_LV_FONT_MONTSERRAT_46=y
++CONFIG_LV_FONT_MONTSERRAT_48=y
++CONFIG_LV_FONT_MONTSERRAT_12_SUBPX=y
++CONFIG_LV_FONT_MONTSERRAT_28_COMPRESSED=y
++CONFIG_LV_FONT_DEJAVU_16_PERSIAN_HEBREW=y
++CONFIG_LV_FONT_SIMSUN_16_CJK=y
++CONFIG_LV_FONT_UNSCII_8=y
++CONFIG_LV_USE_FONT_COMPRESSED=y
++CONFIG_LV_USE_FONT_SUBPX=y
+diff --git a/tests/lib/gui/lvgl/src/img.c b/tests/lib/gui/lvgl/src/img.c
+index 233b8277a6..be43062862 100644
+--- a/tests/lib/gui/lvgl/src/img.c
++++ b/tests/lib/gui/lvgl/src/img.c
+@@ -5,7 +5,6 @@
+  */
+ 
+ #include <zephyr.h>
+-#include <lvgl.h>
+ #include "img.h"
+ 
+ static const uint8_t img_data[] = {
+diff --git a/tests/lib/gui/lvgl/src/main.c b/tests/lib/gui/lvgl/src/main.c
+index e176b83651..b4c9a9ed01 100644
+--- a/tests/lib/gui/lvgl/src/main.c
++++ b/tests/lib/gui/lvgl/src/main.c
+@@ -36,7 +36,7 @@ void test_add_delete_screen(void)
+ 
+ 	zassert_not_null(default_screen, "No default screen");
+ 
+-	lv_obj_t *new_screen = lv_obj_create(NULL, NULL);
++	lv_obj_t *new_screen = lv_obj_create(NULL);
+ 
+ 	zassert_not_null(new_screen, "Failed to create new screen");
+ 
+@@ -61,12 +61,12 @@ void test_add_delete_screen(void)
+ }
+ void test_add_img(void)
+ {
+-	lv_obj_t *img = lv_img_create(lv_scr_act(), NULL);
++	lv_obj_t *img = lv_img_create(lv_scr_act());
+ 
+ 	zassert_not_null(img, "Failed to create image");
+ 
+ 	lv_img_set_src(img, IMG_FILE_PATH);
+-	lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, 0);
++	lv_obj_align(img, LV_ALIGN_CENTER, 0, 0);
+ 
+ 	lv_task_handler();
+ }
+diff --git a/tests/lib/gui/lvgl/testcase.yaml b/tests/lib/gui/lvgl/testcase.yaml
+index 4a56cd79df..7fb6fc9961 100644
+--- a/tests/lib/gui/lvgl/testcase.yaml
++++ b/tests/lib/gui/lvgl/testcase.yaml
+@@ -1,49 +1,41 @@
+ tests:
+   libraries.gui.lvgl:
+     tags: display gui
+-    platform_allow: native_posix
++    platform_allow: native_posix_64
+   libraries.gui.lvgl.dynamic.heap.libc:
+     filter: TOOLCHAIN_HAS_NEWLIB == 1
+     tags: display gui
+-    platform_allow: native_posix
++    platform_allow: native_posix_64
+     extra_configs:
+       - CONFIG_NEWLIB_LIBC=y
+-      - CONFIG_LVGL_BUFFER_ALLOC_DYNAMIC=y
+-      - CONFIG_LVGL_MEM_POOL_HEAP_LIB_C=y
+-  libraries.gui.lvgl.dynamic.pool.user:
++      - CONFIG_LV_Z_BUFFER_ALLOC_DYNAMIC=y
++      - CONFIG_LV_Z_MEM_POOL_HEAP_LIB_C=y
++  libraries.gui.lvgl.dynamic.pool.sys_heap:
+     tags: display gui
+-    platform_allow: native_posix
++    platform_allow: native_posix_64
+     extra_configs:
+-      - CONFIG_LVGL_BUFFER_ALLOC_DYNAMIC=y
+-      - CONFIG_LVGL_MEM_POOL_USER=y
+-      - CONFIG_LVGL_MEM_POOL_NUMBER_BLOCKS=3
+-      - CONFIG_LVGL_MEM_POOL_MAX_SIZE=32768
+-  libraries.gui.lvgl.dynamic.pool.kernel:
+-    tags: display gui
+-    platform_allow: native_posix
+-    extra_configs:
+-      - CONFIG_LVGL_BUFFER_ALLOC_DYNAMIC=y
+-      - CONFIG_LVGL_MEM_POOL_KERNEL=y
+-      - CONFIG_LVGL_MEM_POOL_NUMBER_BLOCKS=3
+-      - CONFIG_LVGL_MEM_POOL_MAX_SIZE=32768
++      - CONFIG_LV_Z_BUFFER_ALLOC_DYNAMIC=y
++      - CONFIG_LV_Z_MEM_POOL_SYS_HEAP=y
++      - CONFIG_LV_Z_MEM_POOL_NUMBER_BLOCKS=3
++      - CONFIG_LV_Z_MEM_POOL_MAX_SIZE=32768
+   libraries.gui.lvgl.16bit:
+     tags: display gui
+-    platform_allow: native_posix
++    platform_allow: native_posix_64
+     extra_configs:
+-      - CONFIG_LVGL_COLOR_DEPTH_16=y
++      - CONFIG_LV_COLOR_DEPTH_16=y
+   libraries.gui.lvgl.8bit:
+     tags: display gui
+-    platform_allow: native_posix
++    platform_allow: native_posix_64
+     extra_configs:
+-      - CONFIG_LVGL_COLOR_DEPTH_8=y
++      - CONFIG_LV_COLOR_DEPTH_8=y
+   libraries.gui.lvgl.mono:
+     tags: display gui
+-    platform_allow: native_posix
++    platform_allow: native_posix_64
+     extra_configs:
+-      - CONFIG_LVGL_COLOR_DEPTH_1=y
++      - CONFIG_LV_COLOR_DEPTH_1=y
+   libraries.gui.lvgl.16bit.swap:
+     tags: display gui
+-    platform_allow: native_posix
++    platform_allow: native_posix_64
+     extra_configs:
+-      - CONFIG_LVGL_COLOR_DEPTH_16=y
+-      - CONFIG_LVGL_COLOR_16_SWAP=y
++      - CONFIG_LV_COLOR_DEPTH_16=y
++      - CONFIG_LV_COLOR_16_SWAP=y
+diff --git a/west.yml b/west.yml
+index 97eaa937f9..5f0a6e892c 100644
+--- a/west.yml
++++ b/west.yml
+@@ -162,7 +162,7 @@ manifest:
+       revision: 12019623bbad9eb54fe51066847a7cbd4b4eac57
+       path: modules/lib/loramac-node
+     - name: lvgl
+-      revision: 783c1f78c8e39751fe89d0883c8bce7336f55e94
++      revision: a2e17073e5208c221e24e3c2b3b6c473e878bd1e
+       path: modules/lib/gui/lvgl
+     - name: lz4
+       revision: 8e303c264fc21c2116dc612658003a22e933124d
+-- 
+2.30.1
+
diff --git a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc
index 64594a09b1b5a30e796533f57236c47815028777..f4ea7d3fbd9ed2ce1f7b3d01731884b8360e2653 100644
--- a/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc
+++ b/meta-zephyr-core/recipes-kernel/zephyr-kernel/zephyr-kernel-src-3.0.0.inc
@@ -45,7 +45,7 @@ SRCREV_xtensa = "0e577021bb66e644afd067cd9f7c71ab11b62b3d"
 SRCREV_libmetal = "f237c9d420a51cc43bc37d744e41191ad613f348"
 SRCREV_littlefs = "33509ed9c3d369cdb9d909cd40c5eea8f64a902c"
 SRCREV_loramac-node = "12019623bbad9eb54fe51066847a7cbd4b4eac57"
-SRCREV_lvgl = "783c1f78c8e39751fe89d0883c8bce7336f55e94"
+SRCREV_lvgl = "a2e17073e5208c221e24e3c2b3b6c473e878bd1e"
 SRCREV_lz4 = "8e303c264fc21c2116dc612658003a22e933124d"
 SRCREV_mbedtls = "3e3e58a92de76069730c63e0d524f40fea948a61"
 SRCREV_mcuboot = "89936c338e46f43cb177a8b928cd80b90f3ace8f"
@@ -68,3 +68,5 @@ SRCREV_zscilib = "12bfe3f0a9fcbfe3edab7eabc9678b6c62875d34"
 
 ZEPHYR_BRANCH = "v3.0-branch"
 PV = "3.0.0+git${SRCPV}"
+
+SRC_URI += "file://0001-lvgl-add-support-for-lvgl-v8.2.0.patch"