summaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch
diff options
context:
space:
mode:
authorflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-01-08 22:20:16 +0000
committerflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-01-08 22:20:16 +0000
commit518960de5fe311f05e1aeb030601e314af4f3f0c (patch)
treea5cbc0f5235b30a249d4532479600f183be2eec6 /target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch
parent4ad90322b6e3e1d187d5640f15861a7ee72db7ef (diff)
mvebu: add inital support for Marvell Armada XP/370 SoCs
This brings in the initial support for the Marvell Armada XP/370 SoCs. Successfully tested on RD-A370-A1 and DB-MV784MP-GP boards the following interfaces: - Ethernet - SDIO - GPIOs - SATA Signed-off-by: Florian Fainelli <florian@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35058 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch')
-rw-r--r--target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch88
1 files changed, 88 insertions, 0 deletions
diff --git a/target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch b/target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch
new file mode 100644
index 000000000..29c199cad
--- /dev/null
+++ b/target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch
@@ -0,0 +1,88 @@
+From 3487b074a742bc3300683e91e3ade383b659fbe9 Mon Sep 17 00:00:00 2001
+From: Gregory CLEMENT <gregory.clement@free-electrons.com>
+Date: Tue, 4 Dec 2012 18:04:59 +0100
+Subject: [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART
+ driver
+
+The UART controller used in the Armada 370 and Armada XP SoCs is the
+Synopsys DesignWare 8250 (aka Synopsys DesignWare ABP UART). The
+improper use of the ns16550 can lead to a kernel oops during boot if
+a character is sent to the UART before the initialization of the
+driver. The DW APB has an extra interrupt that gets raised when
+writing to the LCR when busy. This explains why we need to use
+dw-apb-uart driver to handle this.
+
+Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
+---
+ arch/arm/boot/dts/armada-370-xp.dtsi | 6 ++++--
+ arch/arm/boot/dts/armada-xp.dtsi | 6 ++++--
+ arch/arm/configs/mvebu_defconfig | 1 +
+ 3 files changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi
+index cf6c48a..4c0abe8 100644
+--- a/arch/arm/boot/dts/armada-370-xp.dtsi
++++ b/arch/arm/boot/dts/armada-370-xp.dtsi
+@@ -50,17 +50,19 @@
+ ranges;
+
+ serial@d0012000 {
+- compatible = "ns16550";
++ compatible = "snps,dw-apb-uart";
+ reg = <0xd0012000 0x100>;
+ reg-shift = <2>;
+ interrupts = <41>;
++ reg-io-width = <4>;
+ status = "disabled";
+ };
+ serial@d0012100 {
+- compatible = "ns16550";
++ compatible = "snps,dw-apb-uart";
+ reg = <0xd0012100 0x100>;
+ reg-shift = <2>;
+ interrupts = <42>;
++ reg-io-width = <4>;
+ status = "disabled";
+ };
+
+diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi
+index 367aa3f..8a85ffe 100644
+--- a/arch/arm/boot/dts/armada-xp.dtsi
++++ b/arch/arm/boot/dts/armada-xp.dtsi
+@@ -42,17 +42,19 @@
+
+ soc {
+ serial@d0012200 {
+- compatible = "ns16550";
++ compatible = "snps,dw-apb-uart";
+ reg = <0xd0012200 0x100>;
+ reg-shift = <2>;
+ interrupts = <43>;
++ reg-io-width = <4>;
+ status = "disabled";
+ };
+ serial@d0012300 {
+- compatible = "ns16550";
++ compatible = "snps,dw-apb-uart";
+ reg = <0xd0012300 0x100>;
+ reg-shift = <2>;
+ interrupts = <44>;
++ reg-io-width = <4>;
+ status = "disabled";
+ };
+
+diff --git a/arch/arm/configs/mvebu_defconfig b/arch/arm/configs/mvebu_defconfig
+index a702fb3..3ba35f1 100644
+--- a/arch/arm/configs/mvebu_defconfig
++++ b/arch/arm/configs/mvebu_defconfig
+@@ -34,6 +34,7 @@ CONFIG_MARVELL_PHY=y
+ CONFIG_SERIAL_8250=y
+ CONFIG_SERIAL_8250_CONSOLE=y
+ CONFIG_SERIAL_OF_PLATFORM=y
++CONFIG_SERIAL_8250_DW=y
+ CONFIG_I2C=y
+ CONFIG_I2C_MV64XXX=y
+ CONFIG_GPIOLIB=y
+--
+1.7.10.4
+