diff --git a/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0003-misc-aspeed-Add-Aspeed-UART-routing-control-driver.patch b/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0003-misc-aspeed-Add-Aspeed-UART-routing-control-driver.patch
deleted file mode 100644
index 317f94b..0000000
--- a/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0003-misc-aspeed-Add-Aspeed-UART-routing-control-driver.patch
+++ /dev/null
@@ -1,521 +0,0 @@
-From e0769dda0adcabc41d322726b16148e3960473c1 Mon Sep 17 00:00:00 2001
-From: Oskar Senft <osk@google.com>
-Date: Wed, 8 Aug 2018 10:15:05 -0400
-Subject: [PATCH] misc: aspeed: Add Aspeed UART routing control driver.
-
-This driver adds sysfs files that allow the BMC userspace to configure
-how UARTs and physical serial I/O ports are routed.
-
-Tested: Checked correct behavior (both read & write) on TYAN S7106
-board by manually changing routing settings and confirming that bits
-flow as expected. Tested for UART1 and UART3 as this board doesn't have
-the other UARTs wired up in a testable way.
-
-Signed-off-by: Oskar Senft <osk@google.com>
-Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
-Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
-Signed-off-by: John Wang <wangzhiqiang.bj@bytedance.com>
----
- .../stable/sysfs-driver-aspeed-uart-routing   |  14 +
- .../misc-devices/aspeed-uart-routing.txt      |  49 +++
- drivers/misc/Kconfig                          |   6 +
- drivers/misc/Makefile                         |   1 +
- drivers/misc/aspeed-uart-routing.c            | 383 ++++++++++++++++++
- 5 files changed, 453 insertions(+)
- create mode 100644 Documentation/ABI/stable/sysfs-driver-aspeed-uart-routing
- create mode 100644 Documentation/misc-devices/aspeed-uart-routing.txt
- create mode 100644 drivers/misc/aspeed-uart-routing.c
-
-diff --git a/Documentation/ABI/stable/sysfs-driver-aspeed-uart-routing b/Documentation/ABI/stable/sysfs-driver-aspeed-uart-routing
-new file mode 100644
-index 000000000000..5068737d9c12
---- /dev/null
-+++ b/Documentation/ABI/stable/sysfs-driver-aspeed-uart-routing
-@@ -0,0 +1,14 @@
-+What:		/sys/bus/platform/drivers/aspeed-uart-routing/*/io*
-+Date:		August 2018
-+Contact:	Oskar Senft <osk@google.com>
-+Description:	Configures the input source for the specific physical
-+		serial I/O port.
-+Users:		OpenBMC.  Proposed changes should be mailed to
-+		openbmc@lists.ozlabs.org
-+
-+What:		/sys/bus/platform/drivers/aspeed-uart-routing/*/uart*
-+Date:		August 2018
-+Contact:	Oskar Senft <osk@google.com>
-+Description:	Configures the input source for the specific UART.
-+Users:		OpenBMC.  Proposed changes should be mailed to
-+		openbmc@lists.ozlabs.org
-diff --git a/Documentation/misc-devices/aspeed-uart-routing.txt b/Documentation/misc-devices/aspeed-uart-routing.txt
-new file mode 100644
-index 000000000000..cf1c2a466875
---- /dev/null
-+++ b/Documentation/misc-devices/aspeed-uart-routing.txt
-@@ -0,0 +1,49 @@
-+Kernel driver aspeed-uart-routing
-+=================================
-+
-+Supported chips:
-+ASPEED AST2500/AST2600
-+
-+Author:
-+Google LLC
-+
-+Description
-+-----------
-+
-+The Aspeed AST2500/AST2600 allows to dynamically route the inputs for the
-+built-in UARTS and physical serial I/O ports.
-+
-+This allows, for example, to connect the output of UART to another UART.
-+This can be used to enable host<->BMC communication via UARTs, e.g. to allow
-+access to the host's serial console.
-+
-+This driver is for the BMC side. The sysfs files allow the BMC userspace
-+which owns the system configuration policy, to configure how UARTs and
-+physical serial I/O ports are routed.
-+
-+The driver provides the following files in sysfs:
-+uart1		Configure the input signal to UART1.
-+uart2		Configure the input signal to UART2.
-+uart3		Configure the input signal to UART3.
-+uart4		Configure the input signal to UART4.
-+uart5		Configure the input signal to UART5.
-+io1		Configure the input signal to physical serial port 1.
-+io2		Configure the input signal to physical serial port 2.
-+io3		Configure the input signal to physical serial port 3.
-+io4		Configure the input signal to physical serial port 4.
-+io5		Configure the input signal to physical serial port 5.
-+
-+When read, each file shows the list of available options with the currently
-+selected option marked by square brackets "[]". The list of available options
-+depends on the selected file.
-+
-+Example:
-+$ cat /sys/bus/platform/drivers/aspeed-uart-routing/*.uart_routing/uart1
-+[io1] io2 io3 io4 uart2 uart3 uart4 io6
-+
-+In this case, UART1 gets its input signal from IO1 (physical serial port 1).
-+
-+$ echo -n "uart3" \
-+  >/sys/bus/platform/drivers/aspeed-uart-routing/*.uart_routing/uart1
-+$ cat /sys/bus/platform/drivers/aspeed-uart-routing/*.uart_routing/uart1
-+io1 io2 io3 io4 uart2 [uart3] uart4 io6
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index 54cfb599cd3e..9d2d95ab313a 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -487,6 +487,12 @@ config NPCM7XX_JTAG_MASTER
- 	help
- 	  Control PSPI/GPIO to transmit jtag signals to support jtag master function.
- 
-+config ASPEED_UART_ROUTING
-+	tristate "Aspeed ast2500 UART routing control"
-+	help
-+	  If you want to configure UART routing on Aspeed BMC platforms, enable
-+	  this option.
-+
- source "drivers/misc/c2port/Kconfig"
- source "drivers/misc/eeprom/Kconfig"
- source "drivers/misc/cb710/Kconfig"
-diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index 39e5ba5d0985..77e95db728da 100644
---- a/drivers/misc/Makefile
-+++ b/drivers/misc/Makefile
-@@ -60,3 +60,4 @@ obj-$(CONFIG_HISI_HIKEY_USB)	+= hisi_hikey_usb.o
- obj-$(CONFIG_NPCM7XX_LPC_BPC)	+= npcm7xx-lpc-bpc.o
- obj-$(CONFIG_NPCM7XX_PCI_MBOX)	+= npcm7xx-pci-mbox.o
- obj-$(CONFIG_NPCM7XX_JTAG_MASTER)	+= npcm7xx-jtag-master.o
-+obj-$(CONFIG_ASPEED_UART_ROUTING) += aspeed-uart-routing.o
-diff --git a/drivers/misc/aspeed-uart-routing.c b/drivers/misc/aspeed-uart-routing.c
-new file mode 100644
-index 000000000000..21ef5d98c317
---- /dev/null
-+++ b/drivers/misc/aspeed-uart-routing.c
-@@ -0,0 +1,383 @@
-+/*
-+ * UART Routing driver for Aspeed AST2500
-+ *
-+ * Copyright (c) 2018 Google LLC
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * version 2 as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ */
-+#include <linux/device.h>
-+#include <linux/module.h>
-+#include <linux/of_address.h>
-+#include <linux/of_platform.h>
-+
-+/* The Aspeed AST2500 allows to dynamically route the inputs for the built-in
-+ * UARTS and physical serial I/O ports.
-+ *
-+ * This allows, for example, to connect the output of UART to another UART.
-+ * This can be used to enable host<->BMC communication via UARTs, e.g. to allow
-+ * access to the host's serial console.
-+ *
-+ * This driver is for the BMC side. The sysfs files allow the BMC userspace
-+ * which owns the system configuration policy, to configure how UARTs and
-+ * physical serial I/O ports are routed.
-+ */
-+
-+#define ASPEED_HICRA_IO1	"io1"
-+#define ASPEED_HICRA_IO2	"io2"
-+#define ASPEED_HICRA_IO3	"io3"
-+#define ASPEED_HICRA_IO4	"io4"
-+#define ASPEED_HICRA_IO5	"io5"
-+#define ASPEED_HICRA_IO6	"io6"
-+#define ASPEED_HICRA_UART1	"uart1"
-+#define ASPEED_HICRA_UART2	"uart2"
-+#define ASPEED_HICRA_UART3	"uart3"
-+#define ASPEED_HICRA_UART4	"uart4"
-+#define ASPEED_HICRA_UART5	"uart5"
-+
-+struct aspeed_uart_routing {
-+	struct device		*dev;
-+	void __iomem		*regs;
-+	spinlock_t		lock;
-+};
-+
-+struct aspeed_uart_routing_selector {
-+	struct device_attribute	dev_attr;
-+	int				shift;
-+	int				mask;
-+	const char * const options[];
-+};
-+
-+#define to_routing_selector(_dev_attr)					\
-+	container_of(_dev_attr, struct aspeed_uart_routing_selector, dev_attr)
-+
-+
-+static ssize_t aspeed_uart_routing_show(struct device *dev,
-+					struct device_attribute *attr,
-+					char *buf);
-+
-+static ssize_t aspeed_uart_routing_store(struct device *dev,
-+					 struct device_attribute *attr,
-+					 const char *buf, size_t count);
-+
-+#define ROUTING_ATTR(_name) {						\
-+	.attr = {.name = _name,					\
-+		 .mode = VERIFY_OCTAL_PERMISSIONS(S_IWUSR | S_IRUGO) }, \
-+	.show = aspeed_uart_routing_show,				\
-+	.store = aspeed_uart_routing_store,				\
-+}
-+
-+static struct aspeed_uart_routing_selector uart5_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_UART5),
-+	.shift = 28,
-+	.mask = 0xf,
-+	.options = {
-+		    ASPEED_HICRA_IO5,   // 0
-+		    ASPEED_HICRA_IO1,   // 1
-+		    ASPEED_HICRA_IO2,   // 2
-+		    ASPEED_HICRA_IO3,   // 3
-+		    ASPEED_HICRA_IO4,   // 4
-+		    ASPEED_HICRA_UART1, // 5
-+		    ASPEED_HICRA_UART2, // 6
-+		    ASPEED_HICRA_UART3, // 7
-+		    ASPEED_HICRA_UART4, // 8
-+		    ASPEED_HICRA_IO6,   // 9
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector uart4_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_UART4),
-+	.shift = 25,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_IO4,   // 0
-+		    ASPEED_HICRA_IO1,   // 1
-+		    ASPEED_HICRA_IO2,   // 2
-+		    ASPEED_HICRA_IO3,   // 3
-+		    ASPEED_HICRA_UART1, // 4
-+		    ASPEED_HICRA_UART2, // 5
-+		    ASPEED_HICRA_UART3, // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+	},
-+};
-+
-+static struct aspeed_uart_routing_selector uart3_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_UART3),
-+	.shift = 22,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_IO3,   // 0
-+		    ASPEED_HICRA_IO4,   // 1
-+		    ASPEED_HICRA_IO1,   // 2
-+		    ASPEED_HICRA_IO2,   // 3
-+		    ASPEED_HICRA_UART4, // 4
-+		    ASPEED_HICRA_UART1, // 5
-+		    ASPEED_HICRA_UART2, // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector uart2_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_UART2),
-+	.shift = 19,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_IO2,   // 0
-+		    ASPEED_HICRA_IO3,   // 1
-+		    ASPEED_HICRA_IO4,   // 2
-+		    ASPEED_HICRA_IO1,   // 3
-+		    ASPEED_HICRA_UART3, // 4
-+		    ASPEED_HICRA_UART4, // 5
-+		    ASPEED_HICRA_UART1, // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector uart1_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_UART1),
-+	.shift = 16,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_IO1,   // 0
-+		    ASPEED_HICRA_IO2,   // 1
-+		    ASPEED_HICRA_IO3,   // 2
-+		    ASPEED_HICRA_IO4,   // 3
-+		    ASPEED_HICRA_UART2, // 4
-+		    ASPEED_HICRA_UART3, // 5
-+		    ASPEED_HICRA_UART4, // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector io5_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_IO5),
-+	.shift = 12,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_UART5, // 0
-+		    ASPEED_HICRA_UART1, // 1
-+		    ASPEED_HICRA_UART2, // 2
-+		    ASPEED_HICRA_UART3, // 3
-+		    ASPEED_HICRA_UART4, // 4
-+		    ASPEED_HICRA_IO1,   // 5
-+		    ASPEED_HICRA_IO3,   // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector io4_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_IO4),
-+	.shift = 9,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_UART4, // 0
-+		    ASPEED_HICRA_UART5, // 1
-+		    ASPEED_HICRA_UART1, // 2
-+		    ASPEED_HICRA_UART2, // 3
-+		    ASPEED_HICRA_UART3, // 4
-+		    ASPEED_HICRA_IO1,   // 5
-+		    ASPEED_HICRA_IO2,   // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector io3_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_IO3),
-+	.shift = 6,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_UART3, // 0
-+		    ASPEED_HICRA_UART4, // 1
-+		    ASPEED_HICRA_UART5, // 2
-+		    ASPEED_HICRA_UART1, // 3
-+		    ASPEED_HICRA_UART2, // 4
-+		    ASPEED_HICRA_IO1,   // 5
-+		    ASPEED_HICRA_IO2,   // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector io2_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_IO2),
-+	.shift = 3,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_UART2, // 0
-+		    ASPEED_HICRA_UART3, // 1
-+		    ASPEED_HICRA_UART4, // 2
-+		    ASPEED_HICRA_UART5, // 3
-+		    ASPEED_HICRA_UART1, // 4
-+		    ASPEED_HICRA_IO3,   // 5
-+		    ASPEED_HICRA_IO4,   // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+static struct aspeed_uart_routing_selector io1_sel = {
-+	.dev_attr = ROUTING_ATTR(ASPEED_HICRA_IO1),
-+	.shift = 0,
-+	.mask = 0x7,
-+	.options = {
-+		    ASPEED_HICRA_UART1, // 0
-+		    ASPEED_HICRA_UART2, // 1
-+		    ASPEED_HICRA_UART3, // 2
-+		    ASPEED_HICRA_UART4, // 3
-+		    ASPEED_HICRA_UART5, // 4
-+		    ASPEED_HICRA_IO3,   // 5
-+		    ASPEED_HICRA_IO4,   // 6
-+		    ASPEED_HICRA_IO6,   // 7
-+		    NULL,               // NULL termination
-+		    },
-+};
-+
-+
-+static struct attribute *aspeed_uart_routing_attrs[] = {
-+	&uart1_sel.dev_attr.attr,
-+	&uart2_sel.dev_attr.attr,
-+	&uart3_sel.dev_attr.attr,
-+	&uart4_sel.dev_attr.attr,
-+	&uart5_sel.dev_attr.attr,
-+	&io1_sel.dev_attr.attr,
-+	&io2_sel.dev_attr.attr,
-+	&io3_sel.dev_attr.attr,
-+	&io4_sel.dev_attr.attr,
-+	&io5_sel.dev_attr.attr,
-+	NULL,
-+};
-+
-+static const struct attribute_group aspeed_uart_routing_attr_group = {
-+	.attrs = aspeed_uart_routing_attrs,
-+};
-+
-+static ssize_t aspeed_uart_routing_show(struct device *dev,
-+					struct device_attribute *attr,
-+					char *buf)
-+{
-+	struct aspeed_uart_routing *uart_routing = dev_get_drvdata(dev);
-+	struct aspeed_uart_routing_selector *sel = to_routing_selector(attr);
-+	int val, pos, len;
-+
-+	val = (readl(uart_routing->regs) >> sel->shift) & sel->mask;
-+
-+	len = 0;
-+	for (pos = 0; sel->options[pos] != NULL; ++pos) {
-+		if (pos == val) {
-+			len += snprintf(buf + len, PAGE_SIZE - 1 - len,
-+					"[%s] ", sel->options[pos]);
-+		} else {
-+			len += snprintf(buf + len, PAGE_SIZE - 1 - len,
-+					"%s ", sel->options[pos]);
-+		}
-+	}
-+
-+	if (val >= pos) {
-+		len += snprintf(buf + len, PAGE_SIZE - 1 - len,
-+				"[unknown(%d)]", val);
-+	}
-+
-+	len += snprintf(buf + len, PAGE_SIZE - 1 - len, "\n");
-+
-+	return len;
-+}
-+
-+static ssize_t aspeed_uart_routing_store(struct device *dev,
-+					 struct device_attribute *attr,
-+					 const char *buf, size_t count)
-+{
-+	struct aspeed_uart_routing *uart_routing = dev_get_drvdata(dev);
-+	struct aspeed_uart_routing_selector *sel = to_routing_selector(attr);
-+	int val;
-+	u32 reg;
-+
-+	val = match_string(sel->options, -1, buf);
-+	if (val < 0) {
-+		dev_err(dev, "invalid value \"%s\"\n", buf);
-+		return -EINVAL;
-+	}
-+
-+	spin_lock(&uart_routing->lock);
-+	reg = readl(uart_routing->regs);
-+	// Zero out existing value in specified bits.
-+	reg &= ~(sel->mask << sel->shift);
-+	// Set new value in specified bits.
-+	reg |= (val & sel->mask) << sel->shift;
-+	writel(reg, uart_routing->regs);
-+	spin_unlock(&uart_routing->lock);
-+
-+	return count;
-+}
-+
-+static int aspeed_uart_routing_probe(struct platform_device *pdev)
-+{
-+	struct aspeed_uart_routing *uart_routing;
-+	struct resource *res;
-+	int rc;
-+
-+	uart_routing = devm_kzalloc(&pdev->dev,
-+				    sizeof(*uart_routing),
-+				    GFP_KERNEL);
-+	if (!uart_routing)
-+		return -ENOMEM;
-+
-+	spin_lock_init(&uart_routing->lock);
-+	uart_routing->dev = &pdev->dev;
-+
-+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+	uart_routing->regs = devm_ioremap_resource(&pdev->dev, res);
-+	if (IS_ERR(uart_routing->regs))
-+		return PTR_ERR(uart_routing->regs);
-+
-+	rc = sysfs_create_group(&uart_routing->dev->kobj,
-+				&aspeed_uart_routing_attr_group);
-+	if (rc < 0)
-+		return rc;
-+
-+	platform_set_drvdata(pdev, uart_routing);
-+
-+	return 0;
-+}
-+
-+static int aspeed_uart_routing_remove(struct platform_device *pdev)
-+{
-+	struct aspeed_uart_routing *uart_routing = platform_get_drvdata(pdev);
-+
-+	sysfs_remove_group(&uart_routing->dev->kobj,
-+			   &aspeed_uart_routing_attr_group);
-+
-+	return 0;
-+}
-+
-+static const struct of_device_id aspeed_uart_routing_table[] = {
-+	{ .compatible = "aspeed,ast2500-uart-routing" },
-+	{ },
-+};
-+
-+static struct platform_driver aspeed_uart_routing_driver = {
-+	.driver = {
-+		.name = "aspeed-uart-routing",
-+		.of_match_table = aspeed_uart_routing_table,
-+	},
-+	.probe = aspeed_uart_routing_probe,
-+	.remove = aspeed_uart_routing_remove,
-+};
-+
-+module_platform_driver(aspeed_uart_routing_driver);
-+
-+MODULE_AUTHOR("Oskar Senft <osk@google.com>");
-+MODULE_LICENSE("GPL v2");
-+MODULE_DESCRIPTION("Driver to configure Aspeed UART routing");
--- 
-2.25.1
-
diff --git a/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0004-ARM-dts-aspeed-Add-uart-routing-node.patch b/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0004-ARM-dts-aspeed-Add-uart-routing-node.patch
deleted file mode 100644
index 79fbb74..0000000
--- a/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed/0004-ARM-dts-aspeed-Add-uart-routing-node.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 120b607efb7b4dbc86add041decf3253b8b5e1fe Mon Sep 17 00:00:00 2001
-From: John Wang <wangzhiqiang.bj@bytedance.com>
-Date: Wed, 30 Sep 2020 12:41:30 +0800
-Subject: [PATCH] ARM: dts: aspeed: Add uart-routing node
-
-Signed-off-by: John Wang <wangzhiqiang.bj@bytedance.com>
----
- arch/arm/boot/dts/aspeed-g5.dtsi | 6 ++++++
- arch/arm/boot/dts/aspeed-g6.dtsi | 6 ++++++
- 2 files changed, 12 insertions(+)
-
-diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
-index 73ca1ec6fc24..39d128c0545b 100644
---- a/arch/arm/boot/dts/aspeed-g5.dtsi
-+++ b/arch/arm/boot/dts/aspeed-g5.dtsi
-@@ -503,6 +503,12 @@ ibt: ibt@140 {
- 					interrupts = <8>;
- 					status = "disabled";
- 				};
-+
-+				uart_routing: uart_routing@9c {
-+					compatible = "aspeed,ast2500-uart-routing";
-+					reg = <0x9c 0x4>;
-+					status = "disabled";
-+				};
- 			};
- 
- 			uart2: serial@1e78d000 {
-diff --git a/arch/arm/boot/dts/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed-g6.dtsi
-index ee171b3364fa..aac382367109 100644
---- a/arch/arm/boot/dts/aspeed-g6.dtsi
-+++ b/arch/arm/boot/dts/aspeed-g6.dtsi
-@@ -317,6 +317,12 @@ pinctrl: pinctrl {
- 					compatible = "aspeed,ast2600-pinctrl";
- 				};
- 
-+				uart_routing: uart_routing@9c {
-+					compatible = "aspeed,ast2500-uart-routing";
-+					reg = <0x9c 0x4>;
-+					status = "disabled";
-+				};
-+
- 				silicon-id@14 {
- 					compatible = "aspeed,ast2600-silicon-id", "aspeed,silicon-id";
- 					reg = <0x14 0x4 0x5b0 0x8>;
--- 
-2.25.1
-
diff --git a/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed_%.bbappend
index bcbe7ce..e962940 100644
--- a/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed_%.bbappend
+++ b/meta-bytedance/meta-g220a/recipes-kernel/linux/linux-aspeed_%.bbappend
@@ -1,7 +1,5 @@
 FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
 
 SRC_URI:append:g220a = " file://g220a.cfg \
-			 file://0003-misc-aspeed-Add-Aspeed-UART-routing-control-driver.patch \
-			 file://0004-ARM-dts-aspeed-Add-uart-routing-node.patch \
 			 file://0005-ARM-dts-aspeed-Enable-g220a-uart-route.patch \
                        "
