summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-ast2600/recipes-kernel/linux/linux-aspeed/0001-Add-a-workaround-to-cover-UART-interrupt-bug-in-AST2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-ast2600/recipes-kernel/linux/linux-aspeed/0001-Add-a-workaround-to-cover-UART-interrupt-bug-in-AST2.patch')
-rw-r--r--meta-openbmc-mods/meta-ast2600/recipes-kernel/linux/linux-aspeed/0001-Add-a-workaround-to-cover-UART-interrupt-bug-in-AST2.patch126
1 files changed, 59 insertions, 67 deletions
diff --git a/meta-openbmc-mods/meta-ast2600/recipes-kernel/linux/linux-aspeed/0001-Add-a-workaround-to-cover-UART-interrupt-bug-in-AST2.patch b/meta-openbmc-mods/meta-ast2600/recipes-kernel/linux/linux-aspeed/0001-Add-a-workaround-to-cover-UART-interrupt-bug-in-AST2.patch
index 81e742412..05e40afb3 100644
--- a/meta-openbmc-mods/meta-ast2600/recipes-kernel/linux/linux-aspeed/0001-Add-a-workaround-to-cover-UART-interrupt-bug-in-AST2.patch
+++ b/meta-openbmc-mods/meta-ast2600/recipes-kernel/linux/linux-aspeed/0001-Add-a-workaround-to-cover-UART-interrupt-bug-in-AST2.patch
@@ -1,4 +1,4 @@
-From 0177d25a23d56bca91fa7938d786b709fd7fba3e Mon Sep 17 00:00:00 2001
+From a136d2c30b850f94ee7b39f842eaede8c0a1c490 Mon Sep 17 00:00:00 2001
From: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
Date: Mon, 27 Apr 2020 12:11:06 -0700
Subject: [PATCH] Add a workaround to cover UART interrupt bug in AST2600 A0
@@ -9,74 +9,66 @@ register for clearing abnormal interrupts in every milli-second.
Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
---
- arch/arm/boot/dts/aspeed-g6.dtsi | 20 ++++++-------
- drivers/tty/serial/8250/8250_of.c | 63 +++++++++++++++++++++++++++++++++++++++
- 2 files changed, 73 insertions(+), 10 deletions(-)
+ .../arm/boot/dts/aspeed-bmc-intel-ast2600.dts | 8 +++
+ drivers/tty/serial/8250/8250_early.c | 1 +
+ drivers/tty/serial/8250/8250_of.c | 63 +++++++++++++++++++
+ 3 files changed, 72 insertions(+)
-diff --git a/arch/arm/boot/dts/aspeed-g6.dtsi b/arch/arm/boot/dts/aspeed-g6.dtsi
-index 656053386fe8..91f431e419d9 100644
---- a/arch/arm/boot/dts/aspeed-g6.dtsi
-+++ b/arch/arm/boot/dts/aspeed-g6.dtsi
-@@ -502,8 +502,8 @@
- };
+diff --git a/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts b/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts
+index 3218884b90f4..08e1f060341e 100644
+--- a/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts
++++ b/arch/arm/boot/dts/aspeed-bmc-intel-ast2600.dts
+@@ -375,6 +375,8 @@
+ };
- uart1: serial@1e783000 {
-- compatible = "ns16550a";
-- reg = <0x1e783000 0x20>;
-+ compatible = "aspeed,ast2600-uart";
-+ reg = <0x1e783000 0x20>, <0x1e6e2014 0x4>, <0x1e78307c 0x4>;
- reg-shift = <2>;
- reg-io-width = <4>;
- interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
-@@ -516,8 +516,8 @@
- };
+ &uart1 {
++ compatible = "aspeed,ast2600-uart";
++ reg = <0x1e783000 0x20>, <0x1e6e2014 0x4>, <0x1e78307c 0x4>;
+ status = "okay";
+ pinctrl-0 = <&pinctrl_txd1_default
+ &pinctrl_rxd1_default
+@@ -387,6 +389,8 @@
+ };
- uart5: serial@1e784000 {
-- compatible = "ns16550a";
-- reg = <0x1e784000 0x1000>;
-+ compatible = "aspeed,ast2600-uart";
-+ reg = <0x1e784000 0x20>, <0x1e6e2014 0x4>, <0x1e78407c 0x4>;
- reg-shift = <2>;
- interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&syscon ASPEED_CLK_GATE_UART5CLK>;
-@@ -744,8 +744,8 @@
- };
+ &uart2 {
++ compatible = "aspeed,ast2600-uart";
++ reg = <0x1e78d000 0x20>, <0x1e6e2014 0x4>, <0x1e78d07c 0x4>;
+ status = "okay";
+ pinctrl-0 = <&pinctrl_txd2_default
+ &pinctrl_rxd2_default
+@@ -399,11 +403,15 @@
+ };
- uart2: serial@1e78d000 {
-- compatible = "ns16550a";
-- reg = <0x1e78d000 0x20>;
-+ compatible = "aspeed,ast2600-uart";
-+ reg = <0x1e78d000 0x20>, <0x1e6e2014 0x4>, <0x1e78d07c 0x4>;
- reg-shift = <2>;
- reg-io-width = <4>;
- interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
-@@ -758,8 +758,8 @@
- };
+ &uart3 {
++ compatible = "aspeed,ast2600-uart";
++ reg = <0x1e78e000 0x20>, <0x1e6e2014 0x4>, <0x1e78e07c 0x4>;
+ status = "okay";
+ pinctrl-0 = <>;
+ };
- uart3: serial@1e78e000 {
-- compatible = "ns16550a";
-- reg = <0x1e78e000 0x20>;
-+ compatible = "aspeed,ast2600-uart";
-+ reg = <0x1e78e000 0x20>, <0x1e6e2014 0x4>, <0x1e78e07c 0x4>;
- reg-shift = <2>;
- reg-io-width = <4>;
- interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-@@ -772,8 +772,8 @@
- };
+ &uart4 {
++ compatible = "aspeed,ast2600-uart";
++ reg = <0x1e78f000 0x20>, <0x1e6e2014 0x4>, <0x1e78f07c 0x4>;
+ status = "okay";
+ pinctrl-0 = <>;
+ };
+diff --git a/drivers/tty/serial/8250/8250_early.c b/drivers/tty/serial/8250/8250_early.c
+index 70d7826788f5..56c4725e1b04 100644
+--- a/drivers/tty/serial/8250/8250_early.c
++++ b/drivers/tty/serial/8250/8250_early.c
+@@ -180,6 +180,7 @@ OF_EARLYCON_DECLARE(ns16550, "ns16550", early_serial8250_setup);
+ OF_EARLYCON_DECLARE(ns16550a, "ns16550a", early_serial8250_setup);
+ OF_EARLYCON_DECLARE(uart, "nvidia,tegra20-uart", early_serial8250_setup);
+ OF_EARLYCON_DECLARE(uart, "snps,dw-apb-uart", early_serial8250_setup);
++OF_EARLYCON_DECLARE(uart, "aspeed,ast2600-uart", early_serial8250_setup);
+
+ #ifdef CONFIG_SERIAL_8250_OMAP
- uart4: serial@1e78f000 {
-- compatible = "ns16550a";
-- reg = <0x1e78f000 0x20>;
-+ compatible = "aspeed,ast2600-uart";
-+ reg = <0x1e78f000 0x20>, <0x1e6e2014 0x4>, <0x1e78f07c 0x4>;
- reg-shift = <2>;
- reg-io-width = <4>;
- interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/drivers/tty/serial/8250/8250_of.c b/drivers/tty/serial/8250/8250_of.c
-index 9ba31701a372..53850f859424 100644
+index 65e9045dafe6..4d94c9f6a422 100644
--- a/drivers/tty/serial/8250/8250_of.c
+++ b/drivers/tty/serial/8250/8250_of.c
-@@ -16,6 +16,7 @@
+@@ -15,6 +15,7 @@
#include <linux/pm_runtime.h>
#include <linux/clk.h>
#include <linux/reset.h>
@@ -84,7 +76,7 @@ index 9ba31701a372..53850f859424 100644
#include "8250.h"
-@@ -24,6 +25,9 @@ struct of_serial_info {
+@@ -23,6 +24,9 @@ struct of_serial_info {
struct reset_control *rst;
int type;
int line;
@@ -93,8 +85,8 @@ index 9ba31701a372..53850f859424 100644
+ void __iomem *wa_base;
};
- #ifdef CONFIG_ARCH_TEGRA
-@@ -202,6 +206,18 @@ static int of_platform_serial_setup(struct platform_device *ofdev,
+ /*
+@@ -181,6 +185,18 @@ static int of_platform_serial_setup(struct platform_device *ofdev,
return ret;
}
@@ -113,7 +105,7 @@ index 9ba31701a372..53850f859424 100644
/*
* Try to register a serial port
*/
-@@ -250,6 +266,47 @@ static int of_platform_serial_probe(struct platform_device *ofdev)
+@@ -229,6 +245,47 @@ static int of_platform_serial_probe(struct platform_device *ofdev)
if (ret < 0)
goto err_dispose;
@@ -161,7 +153,7 @@ index 9ba31701a372..53850f859424 100644
info->type = port_type;
info->line = ret;
platform_set_drvdata(ofdev, info);
-@@ -271,6 +328,11 @@ static int of_platform_serial_remove(struct platform_device *ofdev)
+@@ -250,6 +307,11 @@ static int of_platform_serial_remove(struct platform_device *ofdev)
{
struct of_serial_info *info = platform_get_drvdata(ofdev);
@@ -173,7 +165,7 @@ index 9ba31701a372..53850f859424 100644
serial8250_unregister_port(info->line);
reset_control_assert(info->rst);
-@@ -341,6 +403,7 @@ static const struct of_device_id of_platform_serial_table[] = {
+@@ -319,6 +381,7 @@ static const struct of_device_id of_platform_serial_table[] = {
.data = (void *)PORT_XSCALE, },
{ .compatible = "ti,da830-uart", .data = (void *)PORT_DA830, },
{ .compatible = "nuvoton,npcm750-uart", .data = (void *)PORT_NPCM, },
@@ -182,5 +174,5 @@ index 9ba31701a372..53850f859424 100644
};
MODULE_DEVICE_TABLE(of, of_platform_serial_table);
--
-2.7.4
+2.17.1