From 25475a095ec71f55826a5864e78e09c27031f179 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Tue, 8 Jan 2013 22:20:16 +0000 Subject: 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 SVN-Revision: 35058 --- .../patches-3.8/018-arm_mvebu_dw_apb_uart.patch | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch (limited to 'target/linux/mvebu/patches-3.8/018-arm_mvebu_dw_apb_uart.patch') 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 0000000000..29c199cad4 --- /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 +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 +--- + 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 + -- cgit v1.2.3