kiddin9 3 年之前
父节点
当前提交
7d55e827b7

+ 1 - 0
devices/common/.config

@@ -13,6 +13,7 @@ CONFIG_TARGET_ROOTFS_PARTSIZE=1004
 CONFIG_ALL_KMODS=y
 CONFIG_PACKAGE_kmod-rtl88x2bu=n
 CONFIG_PACKAGE_kmod-ipt-coova=n
+CONFIG_PACKAGE_kmod-backlight=n
 
 CONFIG_IB=y
 CONFIG_IB_STANDALONE=y

+ 1 - 1
devices/common/files/usr/lib/lua/luci/view/admin_status/index/links.htm

@@ -1,6 +1,6 @@
 <script>
 		var links = document.createElement('div');
-		links.innerHTML ='<div class="table"><div class="tr"><div class="td left" width="25%"><a href="https://afdian.net/@openwrt/plan" target="_blank">赞助</a></div><div class="td left" width="25%"><a href="https://t.me/opwrts" target="_blank">TG交流(小粉红勿扰)</a></div><div class="td left" width="25%"><a href="https://github.com/kiddin9/OpenWrt_x86-r2s-r4s" target="_blank">源码与反馈</a></div><div class="td left"><a href="https://bf.supes.top/" target="_blank">固件下载与定制</a></div></div></div>';
+		links.innerHTML ='<div class="table"><div class="tr"><div class="td left" width="25%"><a href="https://supes.top/fadian/" target="_blank">赞助</a></div><div class="td left" width="25%"><a href="https://t.me/opwrts" target="_blank">TG交流(小粉红勿扰)</a></div><div class="td left" width="25%"><a href="https://github.com/kiddin9/OpenWrt_x86-r2s-r4s" target="_blank">源码与反馈</a></div><div class="td left"><a href="https://supes.top/" target="_blank">固件下载与定制</a></div></div></div>';
 		setTimeout(function(){
 		var telegram = document.querySelectorAll(".cbi-section")[0];
 		telegram.appendChild(links);

+ 0 - 11
devices/common/patches/DRM-fix.patch.b

@@ -1,11 +0,0 @@
---- a/package/kernel/linux/modules/video.mk
-+++ b/package/kernel/linux/modules/video.mk
-@@ -225,7 +225,7 @@ define KernelPackage/drm
-   SUBMENU:=$(VIDEO_MENU)
-   TITLE:=Direct Rendering Manager (DRM) support
-   HIDDEN:=1
--  DEPENDS:=+kmod-dma-buf +kmod-i2c-core +PACKAGE_kmod-backlight:kmod-backlight
-+  DEPENDS:=+kmod-dma-buf +kmod-i2c-core +LINUX_5_10&&TARGET_x86_geode:kmod-backlight
-   KCONFIG:=CONFIG_DRM
-   FILES:= \
- 	$(LINUX_DIR)/drivers/gpu/drm/drm.ko \

+ 7 - 6
devices/nanopi-r2s/diy.sh

@@ -1,15 +1,16 @@
 #!/bin/bash
 
 shopt -s extglob
-rm -rf package/boot/uboot-rockchip target/linux/rockchip/patches-5.10/.svn
-svn export --force https://github.com/friendlyarm/friendlywrt/branches/master/package/boot/uboot-rockchip package/boot/uboot-rockchip
-svn export --force https://github.com/friendlyarm/friendlywrt/branches/master/target/linux/rockchip/armv8/base-files target/linux/rockchip/armv8/base-files
-curl -sfLo target/linux/rockchip/image/armv8.mk https://raw.githubusercontent.com/friendlyarm/friendlywrt/master/target/linux/rockchip/image/armv8.mk
-svn co https://github.com/friendlyarm/friendlywrt/branches/master/target/linux/rockchip/patches-5.10 target/linux/rockchip/patches-5.10
-rm -rf target/linux/rockchip/armv8/base-files/{etc/{uci-defaults/vendor.defaults,inittab,banner},root}
+svn export --force https://github.com/friendlyarm/friendlywrt/trunk/target/linux/rockchip/armv8/base-files/usr target/linux/rockchip/armv8/base-files/usr
 
 sed -i 's,-mcpu=generic,-march=armv8-a+crypto+crc -mabi=lp64,g' include/target.mk
 
+sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/a686b71d0143a59a5c8932468dd2a425dccf536b.patch | patch -d './' -p1 --forward"
+sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/c27993f039452f14182282d0ac40c5e9810c0803.patch | patch -d './' -p1 --forward"
+sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/6c391373850335f7f3a0a3fc6dc39bfebdfb70d1.patch | patch -d './' -p1 --forward"
+sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/53c85f2afe9e497599f56bf1bbecca1f734595dc.patch | patch -d './' -p1 --forward"
+# sh -c "curl -sfL https://github.com/openwrt/openwrt/commit/9ba39aa45f06e5c935a9816e771682c5533b1e24.patch | patch -d './' -p1 --forward"
+
 sed -i '/;;/i\ethtool -K eth1 rx off tx off && logger -t disable-offloading "disabed rk3328 ethernet tcp/udp offloading tx/rx"' target/linux/rockchip/armv8/base-files/etc/hotplug.d/net/40-net-smp-affinity
 
 sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += my-autocore-arm luci-app-cpufreq/' target/linux/rockchip/Makefile

+ 401 - 0
devices/nanopi-r2s/patches/uboot-rockchip-fix.patch

@@ -0,0 +1,401 @@
+From 9ba39aa45f06e5c935a9816e771682c5533b1e24 Mon Sep 17 00:00:00 2001
+From: jensen <[email protected]>
+Date: Thu, 13 Jan 2022 17:02:02 +0800
+Subject: [PATCH] uboot-rockchip: fixes several issues for r2c/r4s
+
+Patches formated from
+  https://github.com/friendlyarm/uboot-rockchip/tree/nanopi4-v2021.07
+
+Signed-off-by: jensen <[email protected]>
+---
+ ...k3328-Fix-spl-mmc-boot-device-ofpath.patch | 28 ++++++
+ ...c-support-to-disable-HS-mode-for-SPL.patch | 31 +++++++
+ ...399-nanopi4-Add-u-boot-spl-broken-hs.patch | 24 +++++
+ ...k3328-add-mmc-aliases-for-nanopi-r2s.patch | 29 +++++++
+ ...mc-Fixes-timeout-issue-for-FIFO-mode.patch | 36 ++++++++
+ ...-Add-arch_addr_aligned-hook-for-rk33.patch | 87 +++++++++++++++++++
+ ...3399-r4s-disable-nodes-for-vopb-vopl.patch | 41 +++++++++
+ ...FIG_SYS_MMC_ENV_DEV-1-for-nanopi-r4s.patch | 25 ++++++
+ ...328-Implement-arch_addr_aligned-hook.patch | 59 +++++++++++++
+ 9 files changed, 360 insertions(+)
+ create mode 100644 package/boot/uboot-rockchip/patches/300-rockchip-rk3328-Fix-spl-mmc-boot-device-ofpath.patch
+ create mode 100644 package/boot/uboot-rockchip/patches/301-rockchip-dw_mmc-support-to-disable-HS-mode-for-SPL.patch
+ create mode 100644 package/boot/uboot-rockchip/patches/302-arm64-dts-rk3399-nanopi4-Add-u-boot-spl-broken-hs.patch
+ create mode 100644 package/boot/uboot-rockchip/patches/303-rockchip-rk3328-add-mmc-aliases-for-nanopi-r2s.patch
+ create mode 100644 package/boot/uboot-rockchip/patches/305-common-bouncebuf-Add-arch_addr_aligned-hook-for-rk33.patch
+ create mode 100644 package/boot/uboot-rockchip/patches/306-arm64-rk3399-r4s-disable-nodes-for-vopb-vopl.patch
+ create mode 100644 package/boot/uboot-rockchip/patches/307-configs-Add-CONFIG_SYS_MMC_ENV_DEV-1-for-nanopi-r4s.patch
+ create mode 100644 package/boot/uboot-rockchip/patches/308-rockchip-rk3328-Implement-arch_addr_aligned-hook.patch
+
+diff --git a/package/boot/uboot-rockchip/patches/300-rockchip-rk3328-Fix-spl-mmc-boot-device-ofpath.patch b/package/boot/uboot-rockchip/patches/300-rockchip-rk3328-Fix-spl-mmc-boot-device-ofpath.patch
+new file mode 100644
+index 000000000000..94c69878a856
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/300-rockchip-rk3328-Fix-spl-mmc-boot-device-ofpath.patch
+@@ -0,0 +1,28 @@
++From e14e93922a39e5950c8b042aefd0c9869ee3a259 Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Sat, 1 Jan 2022 18:41:34 +0800
++Subject: [PATCH 300/308] rockchip: rk3328: Fix spl mmc boot device ofpath
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ arch/arm/mach-rockchip/rk3328/rk3328.c | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/arch/arm/mach-rockchip/rk3328/rk3328.c b/arch/arm/mach-rockchip/rk3328/rk3328.c
++index ec3336cb49..de17b88682 100644
++--- a/arch/arm/mach-rockchip/rk3328/rk3328.c
+++++ b/arch/arm/mach-rockchip/rk3328/rk3328.c
++@@ -21,8 +21,8 @@ DECLARE_GLOBAL_DATA_PTR;
++ #define FW_DDR_CON_REG		0xFF7C0040
++ 
++ const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = {
++-	[BROM_BOOTSOURCE_EMMC] = "/rksdmmc@ff520000",
++-	[BROM_BOOTSOURCE_SD] = "/rksdmmc@ff500000",
+++	[BROM_BOOTSOURCE_EMMC] = "/mmc@ff520000",
+++	[BROM_BOOTSOURCE_SD] = "/mmc@ff500000",
++ };
++ 
++ static struct mm_region rk3328_mem_map[] = {
++-- 
++2.34.1
++
+diff --git a/package/boot/uboot-rockchip/patches/301-rockchip-dw_mmc-support-to-disable-HS-mode-for-SPL.patch b/package/boot/uboot-rockchip/patches/301-rockchip-dw_mmc-support-to-disable-HS-mode-for-SPL.patch
+new file mode 100644
+index 000000000000..ccc5df5a5c70
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/301-rockchip-dw_mmc-support-to-disable-HS-mode-for-SPL.patch
+@@ -0,0 +1,31 @@
++From baecb10c4b34be29ca0aac97158d4cdbc84d76a0 Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Wed, 1 Dec 2021 16:45:27 +0800
++Subject: [PATCH 301/308] rockchip: dw_mmc: support to disable HS mode for SPL
++
++For rk3399, the highspeed mode doesn't work because of
++the signal voltage remains at 1.8V after reboot.
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ drivers/mmc/rockchip_dw_mmc.c | 4 ++++
++ 1 file changed, 4 insertions(+)
++
++diff --git a/drivers/mmc/rockchip_dw_mmc.c b/drivers/mmc/rockchip_dw_mmc.c
++index d7d5361fd5..49ad73fdff 100644
++--- a/drivers/mmc/rockchip_dw_mmc.c
+++++ b/drivers/mmc/rockchip_dw_mmc.c
++@@ -145,6 +145,10 @@ static int rockchip_dwmmc_probe(struct udevice *dev)
++ 	}
++ #endif
++ 	dwmci_setup_cfg(&plat->cfg, host, priv->minmax[1], priv->minmax[0]);
+++#ifdef CONFIG_SPL_BUILD
+++	if (dev_read_bool(dev, "u-boot,spl-broken-hs"))
+++		plat->cfg.host_caps &= ~MMC_MODE_HS;
+++#endif
++ 	host->mmc = &plat->mmc;
++ 	host->mmc->priv = &priv->host;
++ 	host->mmc->dev = dev;
++-- 
++2.34.1
++
+diff --git a/package/boot/uboot-rockchip/patches/302-arm64-dts-rk3399-nanopi4-Add-u-boot-spl-broken-hs.patch b/package/boot/uboot-rockchip/patches/302-arm64-dts-rk3399-nanopi4-Add-u-boot-spl-broken-hs.patch
+new file mode 100644
+index 000000000000..925cc8414cee
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/302-arm64-dts-rk3399-nanopi4-Add-u-boot-spl-broken-hs.patch
+@@ -0,0 +1,24 @@
++From c608d2fd04cb4973f75082807e5df0653fc6e819 Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Wed, 1 Dec 2021 18:20:37 +0800
++Subject: [PATCH 302/308] arm64: dts: rk3399-nanopi4: Add u-boot,spl-broken-hs
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ arch/arm/dts/rk3399-nanopi4-u-boot.dtsi | 2 ++
++ 1 file changed, 2 insertions(+)
++
++diff --git a/arch/arm/dts/rk3399-nanopi4-u-boot.dtsi b/arch/arm/dts/rk3399-nanopi4-u-boot.dtsi
++index a9d10592d5..53c4f17ac8 100644
++--- a/arch/arm/dts/rk3399-nanopi4-u-boot.dtsi
+++++ b/arch/arm/dts/rk3399-nanopi4-u-boot.dtsi
++@@ -13,4 +13,6 @@
++ 
++ &sdmmc {
++ 	pinctrl-0 = <&sdmmc_bus4 &sdmmc_clk &sdmmc_cmd &sdmmc_cd>;
+++
+++	u-boot,spl-broken-hs;
++ };
++-- 
++2.34.1
++
+diff --git a/package/boot/uboot-rockchip/patches/303-rockchip-rk3328-add-mmc-aliases-for-nanopi-r2s.patch b/package/boot/uboot-rockchip/patches/303-rockchip-rk3328-add-mmc-aliases-for-nanopi-r2s.patch
+new file mode 100644
+index 000000000000..1c4ab53bd39c
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/303-rockchip-rk3328-add-mmc-aliases-for-nanopi-r2s.patch
+@@ -0,0 +1,29 @@
++From b8d642fadf95508f3a728a995b6892467deb1097 Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Tue, 4 Jan 2022 14:54:20 +0800
++Subject: [PATCH 303/308] rockchip: rk3328: add mmc aliases for nanopi-r2s
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi | 5 +++++
++ 1 file changed, 5 insertions(+)
++
++diff --git a/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi b/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
++index 9e2ced1541..df692ec30a 100644
++--- a/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
+++++ b/arch/arm/dts/rk3328-nanopi-r2s-u-boot.dtsi
++@@ -7,6 +7,11 @@
++ #include "rk3328-u-boot.dtsi"
++ #include "rk3328-sdram-ddr4-666.dtsi"
++ / {
+++	aliases {
+++		mmc0 = &sdmmc;
+++		mmc1 = &emmc;
+++	};
+++
++ 	chosen {
++ 		u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc;
++ 	};
++-- 
++2.34.1
++
+diff --git a/package/boot/uboot-rockchip/patches/305-common-bouncebuf-Add-arch_addr_aligned-hook-for-rk33.patch b/package/boot/uboot-rockchip/patches/305-common-bouncebuf-Add-arch_addr_aligned-hook-for-rk33.patch
+new file mode 100644
+index 000000000000..ca83565e1603
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/305-common-bouncebuf-Add-arch_addr_aligned-hook-for-rk33.patch
+@@ -0,0 +1,87 @@
++From 7b108ebc5f9ac82487ad17dea0ae7163285d906f Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Wed, 12 Jan 2022 10:59:31 +0800
++Subject: [PATCH 305/308] common: bouncebuf: Add arch_addr_aligned() hook for
++ rk3399
++
++As described in rk3399-u-boot.dtsi ("mmc to sram can't do dma"),
++this restrict can be sorted out by adding a hook and returning
++the non-DRAM area as Unaligned (0) in rk3399's implementation.
++
++Then we can enable DMA mode and save about 200ms of SPL boot.
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ arch/arm/dts/rk3399-u-boot.dtsi        |  3 ---
++ arch/arm/mach-rockchip/rk3399/rk3399.c | 13 +++++++++++++
++ common/bouncebuf.c                     |  9 +++++++--
++ 3 files changed, 20 insertions(+), 5 deletions(-)
++
++diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
++index 73922c328a..57e1a7feab 100644
++--- a/arch/arm/dts/rk3399-u-boot.dtsi
+++++ b/arch/arm/dts/rk3399-u-boot.dtsi
++@@ -119,9 +119,6 @@
++ 
++ &sdmmc {
++ 	u-boot,dm-pre-reloc;
++-
++-	/* mmc to sram can't do dma, prevent aborts transferring TF-A parts */
++-	u-boot,spl-fifo-mode;
++ };
++ 
++ &spi1 {
++diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c b/arch/arm/mach-rockchip/rk3399/rk3399.c
++index 869d2159be..fc0292e6be 100644
++--- a/arch/arm/mach-rockchip/rk3399/rk3399.c
+++++ b/arch/arm/mach-rockchip/rk3399/rk3399.c
++@@ -111,6 +111,19 @@ int arch_cpu_init(void)
++ 	return 0;
++ }
++ 
+++int arch_addr_aligned(void *ubuf)
+++{
+++#define DRAM_END	0xf8000000
+++
+++	if ((uintptr_t)ubuf < DRAM_END) {
+++		/* Aligned for DRAM area */
+++		return 1;
+++	}
+++
+++	debug("Unsupported buffer for DMA transfer\n");
+++	return 0;
+++}
+++
++ #ifdef CONFIG_DEBUG_UART_BOARD_INIT
++ void board_debug_uart_init(void)
++ {
++diff --git a/common/bouncebuf.c b/common/bouncebuf.c
++index 6d98920de6..5f510a04ec 100644
++--- a/common/bouncebuf.c
+++++ b/common/bouncebuf.c
++@@ -13,6 +13,12 @@
++ #include <bouncebuf.h>
++ #include <asm/cache.h>
++ 
+++__weak int arch_addr_aligned(void *ubuf)
+++{
+++	/* Aligned */
+++	return 1;
+++}
+++
++ static int addr_aligned(struct bounce_buffer *state)
++ {
++ 	const ulong align_mask = ARCH_DMA_MINALIGN - 1;
++@@ -29,8 +35,7 @@ static int addr_aligned(struct bounce_buffer *state)
++ 		return 0;
++ 	}
++ 
++-	/* Aligned */
++-	return 1;
+++	return arch_addr_aligned(state->user_buffer);
++ }
++ 
++ int bounce_buffer_start_extalign(struct bounce_buffer *state, void *data,
++-- 
++2.34.1
++
+diff --git a/package/boot/uboot-rockchip/patches/306-arm64-rk3399-r4s-disable-nodes-for-vopb-vopl.patch b/package/boot/uboot-rockchip/patches/306-arm64-rk3399-r4s-disable-nodes-for-vopb-vopl.patch
+new file mode 100644
+index 000000000000..21e3c763dac9
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/306-arm64-rk3399-r4s-disable-nodes-for-vopb-vopl.patch
+@@ -0,0 +1,41 @@
++From 8a8b3ef12c68ad662223aefb4a46b1ca43e23482 Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Wed, 12 Jan 2022 11:00:08 +0800
++Subject: [PATCH 306/308] arm64: rk3399: r4s: disable nodes for vopb/vopl
++
++Disable vopb and vopl to fix:
++  rk3399_vop vop@ff8f0000: failed to get ahb reset (ret=-524)
++  rk3399_vop vop@ff8f0000: failed to get ahb reset (ret=-524)
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ arch/arm/dts/rk3399-nanopi-r4s.dts | 16 ++++++++++++++++
++ 1 file changed, 16 insertions(+)
++
++diff --git a/arch/arm/dts/rk3399-nanopi-r4s.dts b/arch/arm/dts/rk3399-nanopi-r4s.dts
++index 6f2cf17bf1..e7c6daddd5 100644
++--- a/arch/arm/dts/rk3399-nanopi-r4s.dts
+++++ b/arch/arm/dts/rk3399-nanopi-r4s.dts
++@@ -136,3 +136,19 @@
++ &vcc3v3_sys {
++ 	vin-supply = <&vcc5v0_sys>;
++ };
+++
+++&vopb {
+++	status = "disabled";
+++};
+++
+++&vopb_mmu {
+++	status = "disabled";
+++};
+++
+++&vopl {
+++	status = "disabled";
+++};
+++
+++&vopl_mmu {
+++	status = "disabled";
+++};
++-- 
++2.34.1
++
+diff --git a/package/boot/uboot-rockchip/patches/307-configs-Add-CONFIG_SYS_MMC_ENV_DEV-1-for-nanopi-r4s.patch b/package/boot/uboot-rockchip/patches/307-configs-Add-CONFIG_SYS_MMC_ENV_DEV-1-for-nanopi-r4s.patch
+new file mode 100644
+index 000000000000..d84651eb5347
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/307-configs-Add-CONFIG_SYS_MMC_ENV_DEV-1-for-nanopi-r4s.patch
+@@ -0,0 +1,25 @@
++From 92c1bcf0983464f7bcc9e38bc2a6edccc239bd93 Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Wed, 12 Jan 2022 11:00:21 +0800
++Subject: [PATCH 307/308] configs: Add CONFIG_SYS_MMC_ENV_DEV=1 for nanopi-r4s
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ configs/nanopi-r4s-rk3399_defconfig | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/configs/nanopi-r4s-rk3399_defconfig b/configs/nanopi-r4s-rk3399_defconfig
++index 351d2eb553..0f22737d54 100644
++--- a/configs/nanopi-r4s-rk3399_defconfig
+++++ b/configs/nanopi-r4s-rk3399_defconfig
++@@ -25,6 +25,7 @@ CONFIG_SPL_OF_CONTROL=y
++ CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
++ CONFIG_ENV_IS_IN_MMC=y
++ CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+++CONFIG_SYS_MMC_ENV_DEV=1
++ CONFIG_ROCKCHIP_GPIO=y
++ CONFIG_SYS_I2C_ROCKCHIP=y
++ CONFIG_MMC_DW=y
++-- 
++2.34.1
++
+diff --git a/package/boot/uboot-rockchip/patches/308-rockchip-rk3328-Implement-arch_addr_aligned-hook.patch b/package/boot/uboot-rockchip/patches/308-rockchip-rk3328-Implement-arch_addr_aligned-hook.patch
+new file mode 100644
+index 000000000000..2a8e9d21c246
+--- /dev/null
++++ b/package/boot/uboot-rockchip/patches/308-rockchip-rk3328-Implement-arch_addr_aligned-hook.patch
+@@ -0,0 +1,59 @@
++From 886a84ea1a0e501fd168ad779ca54aecc70f8f4d Mon Sep 17 00:00:00 2001
++From: hmz007 <[email protected]>
++Date: Wed, 12 Jan 2022 11:21:37 +0800
++Subject: [PATCH 308/308] rockchip: rk3328: Implement arch_addr_aligned() hook
++
++Signed-off-by: hmz007 <[email protected]>
++---
++ arch/arm/dts/rk3328-u-boot.dtsi        |  6 ------
++ arch/arm/mach-rockchip/rk3328/rk3328.c | 13 +++++++++++++
++ 2 files changed, 13 insertions(+), 6 deletions(-)
++
++diff --git a/arch/arm/dts/rk3328-u-boot.dtsi b/arch/arm/dts/rk3328-u-boot.dtsi
++index 1633558264..d6b7f3e30a 100644
++--- a/arch/arm/dts/rk3328-u-boot.dtsi
+++++ b/arch/arm/dts/rk3328-u-boot.dtsi
++@@ -52,16 +52,10 @@
++ 
++ &emmc {
++ 	u-boot,dm-pre-reloc;
++-
++-	/* mmc to sram can't do dma, prevent aborts transfering TF-A parts */
++-	u-boot,spl-fifo-mode;
++ };
++ 
++ &sdmmc {
++ 	u-boot,dm-pre-reloc;
++-
++-	/* mmc to sram can't do dma, prevent aborts transfering TF-A parts */
++-	u-boot,spl-fifo-mode;
++ };
++ 
++ &usb20_otg {
++diff --git a/arch/arm/mach-rockchip/rk3328/rk3328.c b/arch/arm/mach-rockchip/rk3328/rk3328.c
++index de17b88682..60e0b6134f 100644
++--- a/arch/arm/mach-rockchip/rk3328/rk3328.c
+++++ b/arch/arm/mach-rockchip/rk3328/rk3328.c
++@@ -58,6 +58,19 @@ int arch_cpu_init(void)
++ 	return 0;
++ }
++ 
+++int arch_addr_aligned(void *ubuf)
+++{
+++#define DRAM_END	0xff000000
+++
+++	if ((uintptr_t)ubuf < DRAM_END) {
+++		/* Aligned for DRAM area */
+++		return 1;
+++	}
+++
+++	debug("Unsupported buffer for DMA transfer\n");
+++	return 0;
+++}
+++
++ void board_debug_uart_init(void)
++ {
++ 	struct rk3328_grf_regs * const grf = (void *)GRF_BASE;
++-- 
++2.34.1
++

+ 1 - 3
devices/x86_64/diy.sh

@@ -3,15 +3,13 @@
 svn co https://github.com/coolsnowwolf/lede/trunk/target/linux/x86/patches-5.10 target/linux/x86/patches-5.10
 rm -rf target/linux/x86/patches-5.10/.svn
 
-sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += my-autocore-x86 lm-sensors-detect kmod-r8125 kmod-vmxnet3  kmod-igc/' target/linux/x86/Makefile
+sed -i 's/DEFAULT_PACKAGES +=/DEFAULT_PACKAGES += my-autocore-x86 lm-sensors-detect kmod-r8125 kmod-vmxnet3 kmod-igc kmod-drm-i915/' target/linux/x86/Makefile
 
 sed -i 's,kmod-r8169,kmod-r8168,g' target/linux/x86/image/64.mk
 
 echo '
 CONFIG_CRYPTO_CHACHA20_X86_64=y
 CONFIG_CRYPTO_POLY1305_X86_64=y
-CONFIG_DRM=y
-CONFIG_DRM_I915=y
 ' >> ./target/linux/x86/config-5.10
 
 sed -i "s/enabled '0'/enabled '1'/g" feeds/packages/utils/irqbalance/files/irqbalance.config

+ 252 - 0
devices/x86_64/patches/Intel_gpu.patch

@@ -0,0 +1,252 @@
+--- a/include/kernel-defaults.mk
++++ b/include/kernel-defaults.mk
+@@ -127,6 +127,7 @@ endef
+ 
+ define Kernel/CompileModules/Default
+ 	rm -f $(LINUX_DIR)/vmlinux $(LINUX_DIR)/System.map
++	+$(KERNEL_MAKE) olddefconfig
+ 	+$(KERNEL_MAKE) $(if $(KERNELNAME),$(KERNELNAME),all) modules
+ endef
+ 
+diff --git a/package/firmware/linux-firmware/intel.mk b/package/firmware/linux-firmware/intel.mk
+index 923701c703d..7f60014ea6c 100644
+--- a/package/firmware/linux-firmware/intel.mk
++++ b/package/firmware/linux-firmware/intel.mk
+@@ -176,3 +176,95 @@ define Package/e100-firmware/install
+ 	$(INSTALL_DATA) $(PKG_BUILD_DIR)/e100/d102e_ucode.bin $(1)/lib/firmware/e100/
+ endef
+ $(eval $(call BuildPackage,e100-firmware))
++
++Package/i915-firmware = $(call Package/firmware-default,Intel GPU firmware)
++define Package/i915-firmware/install
++	$(INSTALL_DIR) $(1)/lib/firmware/i915
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_09.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_09.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_10.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_dmc_ver2_12.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adlp_guc_62.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/adls_dmc_ver2_01.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_dmc_ver1_07.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/bxt_dmc_ver1_07.bin $(1)/lib/firmware/i915/bxt_dmc_ver1.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_ver8_7.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_guc_ver9_29.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_2.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_ver01_07_1398.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/bxt_huc_ver01_8_2893.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cml_huc_4.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cnl_dmc_ver1_06.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/cnl_dmc_ver1_07.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_dmc_ver2_02.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_huc_7.7.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/dg1_huc_7.9.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_33.0.4.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/ehl_huc_9.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_dmc_ver1_04.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_huc_4.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/glk_huc_ver03_01_2893.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_07.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_dmc_ver1_09.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_huc_9.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/icl_huc_ver8_4_3238.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_dmc_ver1_01.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_dmc_ver1_04.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/kbl_dmc_ver1_04.bin $(1)/lib/firmware/i915/kbl_dmc_ver1.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_ver9_14.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_guc_ver9_39.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_huc_4.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/kbl_huc_ver02_00_1810.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/rkl_dmc_ver2_02.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/rkl_dmc_ver2_03.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_23.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_26.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/skl_dmc_ver1_26.bin $(1)/lib/firmware/i915/skl_dmc_ver1.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_dmc_ver1_27.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_32.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_33.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver4.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver6_1.bin $(1)/lib/firmware/i915/
++	ln -s /lib/firmware/i915/skl_guc_ver6_1.bin $(1)/lib/firmware/i915/skl_guc_ver6.bin
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_guc_ver9_33.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_huc_2.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/skl_huc_ver01_07_1398.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_04.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_06.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_08.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_dmc_ver2_12.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_35.2.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_49.0.1.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_guc_62.0.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.0.12.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.0.3.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.5.0.bin $(1)/lib/firmware/i915/
++	$(INSTALL_DATA) $(PKG_BUILD_DIR)/i915/tgl_huc_7.9.3.bin $(1)/lib/firmware/i915/
++endef
++$(eval $(call BuildPackage,i915-firmware))
+
+diff --git a/package/kernel/linux/modules/video.mk b/package/kernel/linux/modules/video.mk
+index 12efcad2c7e..348b6f24efc 100644
+--- a/package/kernel/linux/modules/video.mk
++++ b/package/kernel/linux/modules/video.mk
+@@ -243,11 +243,15 @@ define KernelPackage/drm
+   SUBMENU:=$(VIDEO_MENU)
+   TITLE:=Direct Rendering Manager (DRM) support
+   HIDDEN:=1
+-  DEPENDS:=+kmod-dma-buf +kmod-i2c-core +PACKAGE_kmod-backlight:kmod-backlight
+-  KCONFIG:=CONFIG_DRM
++  DEPENDS:=+kmod-dma-buf +kmod-i2c-core +kmod-i2c-algo-bit  +PACKAGE_kmod-backlight:kmod-backlight
++  KCONFIG:=	\
++	CONFIG_DRM	\
++	CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y	\
++	CONFIG_DRM_FBDEV_EMULATION=y \
++	CONFIG_DRM_FBDEV_OVERALLOC=100 \
++	CONFIG_HDMI
+   FILES:= \
+-	$(LINUX_DIR)/drivers/gpu/drm/drm.ko \
+-	$(LINUX_DIR)/drivers/gpu/drm/drm_panel_orientation_quirks.ko
++	$(LINUX_DIR)/drivers/gpu/drm/drm.ko
+   AUTOLOAD:=$(call AutoLoad,05,drm)
+ endef
+ 
+@@ -318,8 +322,6 @@ define KernelPackage/drm-imx
+   TITLE:=Freescale i.MX DRM support
+   DEPENDS:=@TARGET_imx +kmod-drm-kms-helper
+   KCONFIG:=CONFIG_DRM_IMX \
+-	CONFIG_DRM_FBDEV_EMULATION=y \
+-	CONFIG_DRM_FBDEV_OVERALLOC=100 \
+ 	CONFIG_IMX_IPUV3_CORE \
+ 	CONFIG_RESET_CONTROLLER=y \
+ 	CONFIG_DRM_IMX_IPUV3 \
+@@ -1046,3 +1048,38 @@ define KernelPackage/video-gspca-konica/description
+ endef
+ 
+ $(eval $(call KernelPackage,video-gspca-konica))
++
++define KernelPackage/drm-i915
++  SUBMENU:=$(VIDEO_MENU)
++  TITLE:=Intel GPU drm support
++  DEPENDS:=@TARGET_x86 +kmod-drm-ttm +kmod-drm-kms-helper +i915-firmware
++  KCONFIG:=	\
++          CONFIG_INTEL_GTT=y			\
++          CONFIG_DRM_I915=m			\
++          CONFIG_DRM_I915_CAPTURE_ERROR=y	\
++          CONFIG_DRM_I915_COMPRESS_ERROR=y	\
++          CONFIG_DRM_I915_USERPTR=y		\
++          CONFIG_DRM_I915_GVT=y			\
++          CONFIG_DRM_I915_WERROR=n		\
++          CONFIG_DRM_I915_DEBUG=n		\
++          CONFIG_DRM_I915_DEBUG_MMIO=n		\
++          CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS=n	\
++          CONFIG_DRM_I915_SW_FENCE_CHECK_DAG=n	\
++          CONFIG_DRM_I915_DEBUG_GUC=n		\
++          CONFIG_DRM_I915_SELFTEST=n		\
++          CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS=n	\
++          CONFIG_DRM_I915_DEBUG_VBLANK_EVADE=n	\
++          CONFIG_DRM_I915_DEBUG_RUNTIME_PM=n
++  FILES:=$(LINUX_DIR)/drivers/gpu/drm/i915/i915.ko
++  AUTOLOAD:=$(call AutoProbe,i915)
++endef
++
++define KernelPackage/drm-i915/description
++  Direct Rendering Manager (DRM) support for "Intel Graphics
++  Media Accelerator" or "HD Graphics" integrated graphics,
++  including 830M, 845G, 852GM, 855GM, 865G, 915G, 945G, 965G,
++  G35, G41, G43, G45 chipsets and Celeron, Pentium, Core i3,
++  Core i5, Core i7 as well as Atom CPUs with integrated graphics.
++endef
++
++$(eval $(call KernelPackage,drm-i915))
+diff --git a/package/kernel/linux/modules/virt.mk b/package/kernel/linux/modules/virt.mk
+index 5ed0d5dbbf2..a853a8c7980 100644
+--- a/package/kernel/linux/modules/virt.mk
++++ b/package/kernel/linux/modules/virt.mk
+@@ -72,3 +72,64 @@ define KernelPackage/kvm-amd/description
+ endef
+ 
+ $(eval $(call KernelPackage,kvm-amd))
++
++define KernelPackage/vfio-mdev
++  SUBMENU:=Virtualization
++  TITLE:=VFIO driver support to to virtualize devices
++  DEPENDS:=@TARGET_x86_64
++  KCONFIG:=	\
++	  CONFIG_IOMMU_API=y	\
++	  CONFIG_MMU=y	\
++	  CONFIG_VFIO=y	\
++	  CONFIG_VFIO_NOIOMMU=y	\
++	  CONFIG_VFIO_PCI=y	\
++	  CONFIG_VFIO_PCI_IGD=y	\
++	  CONFIG_VFIO_MDEV	\
++	  CONFIG_VFIO_MDEV_DEVICE
++  FILES:=	\
++	  $(LINUX_DIR)/drivers/vfio/mdev/mdev.ko	\
++          $(LINUX_DIR)/drivers/vfio/mdev/vfio_mdev.ko
++  AUTOLOAD:=$(call AutoProbe,mdev vfio_mdev)
++endef
++
++define KernelPackage/vfio-mdev/description
++  Provides a framework to virtualize devices.
++endef
++
++$(eval $(call KernelPackage,vfio-mdev))
++
++define KernelPackage/i915-gvt
++  SUBMENU:=Virtualization
++  TITLE:=Enable KVM/VFIO support for Intel GVT-g
++  DEPENDS:=@TARGET_x86_64 +kmod-kvm-intel +kmod-drm-i915 +kmod-vfio-mdev
++  KCONFIG:=    \
++	  CONFIG_DRM_I915_GVT_KVMGT=m
++  FILES:=$(LINUX_DIR)/drivers/gpu/drm/i915/gvt/kvmgt.ko
++  AUTOLOAD:=$(call AutoProbe,kvmgt)
++endef
++
++define KernelPackage/i915-gvt/description
++  Intel GVT-g is a technology that provides mediated device
++  passthrough for Intel GPUs (Broadwell and newer). It can
++  be used to virtualize the GPU for multiple guest virtual
++  machines, effectively providing near-native graphics performance
++  in the virtual machine and still letting your host use the
++  virtualized GPU normally.
++
++  Choose this option if you want to enable Intel GVT-g graphics
++  virtualization technology host support with integrated graphics.
++  With GVT-g, it's possible to have one integrated graphics
++  device shared by multiple VMs under different hypervisors.
++
++  Note that at least one hypervisor like Xen or KVM is required for
++  this driver to work, and it only supports newer device from
++  Broadwell+. For further information and setup guide, you can
++  visit: http://01.org/igvt-g.
++
++  Now it's just a stub to support the modifications of i915 for
++  GVT device model. It requires at least one MPT modules for Xen/KVM
++  and other components of GVT device model to work. Use it under
++  you own risk.
++endef
++
++$(eval $(call KernelPackage,i915-gvt))