* [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver
@ 2012-12-04 17:04 Gregory CLEMENT
2012-12-04 17:08 ` Gregory CLEMENT
2013-01-06 17:41 ` Jason Cooper
0 siblings, 2 replies; 6+ messages in thread
From: Gregory CLEMENT @ 2012-12-04 17:04 UTC (permalink / raw)
To: linux-arm-kernel
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>
---
This patch fixed a bug introduced in 3.7, but as there are very few
boards supported in 3.7 (only the Armada 370 and Armada XP evaluation
boards), it is not a big deal if this patch is only applied for 3.8.
This patch is based on 3.7-rc8 and can be applied on top of the
current arm-soc/for-next with a trivial conflict on mvebu_defconfig.
---
arch/arm/boot/dts/armada-370-xp.dtsi | 6 ++++--
arch/arm/boot/dts/armada-xp.dtsi | 6 ++++--
arch/arm/configs/mvebu_defconfig | 2 +-
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi
index 16cc82c..03640f7 100644
--- a/arch/arm/boot/dts/armada-370-xp.dtsi
+++ b/arch/arm/boot/dts/armada-370-xp.dtsi
@@ -44,17 +44,19 @@
ranges;
serial at d0012000 {
- compatible = "ns16550";
+ compatible = "snps,dw-apb-uart";
reg = <0xd0012000 0x100>;
reg-shift = <2>;
interrupts = <41>;
+ reg-io-width = <4>;
status = "disabled";
};
serial at 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 71d6b5d..9a0e744 100644
--- a/arch/arm/boot/dts/armada-xp.dtsi
+++ b/arch/arm/boot/dts/armada-xp.dtsi
@@ -29,17 +29,19 @@
soc {
serial at d0012200 {
- compatible = "ns16550";
+ compatible = "snps,dw-apb-uart";
reg = <0xd0012200 0x100>;
reg-shift = <2>;
interrupts = <43>;
+ reg-io-width = <4>;
status = "disabled";
};
serial at 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 3458752..9e34084 100644
--- a/arch/arm/configs/mvebu_defconfig
+++ b/arch/arm/configs/mvebu_defconfig
@@ -22,7 +22,7 @@ CONFIG_VFP=y
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_8250_DW=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SYSFS=y
# CONFIG_USB_SUPPORT is not set
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver
2012-12-04 17:04 [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver Gregory CLEMENT
@ 2012-12-04 17:08 ` Gregory CLEMENT
2012-12-04 19:45 ` Jason Cooper
2013-01-06 17:41 ` Jason Cooper
1 sibling, 1 reply; 6+ messages in thread
From: Gregory CLEMENT @ 2012-12-04 17:08 UTC (permalink / raw)
To: linux-arm-kernel
On 12/04/2012 06:04 PM, Gregory CLEMENT wrote:
> 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>
> ---
>
> This patch fixed a bug introduced in 3.7, but as there are very few
> boards supported in 3.7 (only the Armada 370 and Armada XP evaluation
> boards), it is not a big deal if this patch is only applied for 3.8.
>
> This patch is based on 3.7-rc8 and can be applied on top of the
> current arm-soc/for-next with a trivial conflict on mvebu_defconfig.
>
Jason,
do you want a git pull, or is it easier to just pick this single patch?
Thanks,
Gregory
> ---
> arch/arm/boot/dts/armada-370-xp.dtsi | 6 ++++--
> arch/arm/boot/dts/armada-xp.dtsi | 6 ++++--
> arch/arm/configs/mvebu_defconfig | 2 +-
> 3 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi
> index 16cc82c..03640f7 100644
> --- a/arch/arm/boot/dts/armada-370-xp.dtsi
> +++ b/arch/arm/boot/dts/armada-370-xp.dtsi
> @@ -44,17 +44,19 @@
> ranges;
>
> serial at d0012000 {
> - compatible = "ns16550";
> + compatible = "snps,dw-apb-uart";
> reg = <0xd0012000 0x100>;
> reg-shift = <2>;
> interrupts = <41>;
> + reg-io-width = <4>;
> status = "disabled";
> };
> serial at 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 71d6b5d..9a0e744 100644
> --- a/arch/arm/boot/dts/armada-xp.dtsi
> +++ b/arch/arm/boot/dts/armada-xp.dtsi
> @@ -29,17 +29,19 @@
>
> soc {
> serial at d0012200 {
> - compatible = "ns16550";
> + compatible = "snps,dw-apb-uart";
> reg = <0xd0012200 0x100>;
> reg-shift = <2>;
> interrupts = <43>;
> + reg-io-width = <4>;
> status = "disabled";
> };
> serial at 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 3458752..9e34084 100644
> --- a/arch/arm/configs/mvebu_defconfig
> +++ b/arch/arm/configs/mvebu_defconfig
> @@ -22,7 +22,7 @@ CONFIG_VFP=y
> CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
> CONFIG_SERIAL_8250=y
> CONFIG_SERIAL_8250_CONSOLE=y
> -CONFIG_SERIAL_OF_PLATFORM=y
> +CONFIG_SERIAL_8250_DW=y
> CONFIG_GPIOLIB=y
> CONFIG_GPIO_SYSFS=y
> # CONFIG_USB_SUPPORT is not set
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver
2012-12-04 17:08 ` Gregory CLEMENT
@ 2012-12-04 19:45 ` Jason Cooper
2012-12-04 19:46 ` Thomas Petazzoni
0 siblings, 1 reply; 6+ messages in thread
From: Jason Cooper @ 2012-12-04 19:45 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Dec 04, 2012 at 06:08:50PM +0100, Gregory CLEMENT wrote:
> On 12/04/2012 06:04 PM, Gregory CLEMENT wrote:
> > 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>
> > ---
> >
> > This patch fixed a bug introduced in 3.7, but as there are very few
> > boards supported in 3.7 (only the Armada 370 and Armada XP evaluation
> > boards), it is not a big deal if this patch is only applied for 3.8.
mirabox, openblocks A3/4, but your point still stands.
> > This patch is based on 3.7-rc8 and can be applied on top of the
> > current arm-soc/for-next with a trivial conflict on mvebu_defconfig.
> >
>
> Jason,
>
> do you want a git pull, or is it easier to just pick this single patch?
nah, I'll just queue it up for v3.8-rc1
thx,
Jason.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver
2012-12-04 19:45 ` Jason Cooper
@ 2012-12-04 19:46 ` Thomas Petazzoni
2012-12-04 19:53 ` Jason Cooper
0 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2012-12-04 19:46 UTC (permalink / raw)
To: linux-arm-kernel
Dear Jason Cooper,
On Tue, 4 Dec 2012 14:45:01 -0500, Jason Cooper wrote:
> > > This patch fixed a bug introduced in 3.7, but as there are very
> > > few boards supported in 3.7 (only the Armada 370 and Armada XP
> > > evaluation boards), it is not a big deal if this patch is only
> > > applied for 3.8.
>
> mirabox, openblocks A3/4, but your point still stands.
No, there was no support in mainline for the Mirabox or OpenBlocks in
3.7. The support for those boards has been introduced for 3.8.
Thanks!
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver
2012-12-04 19:46 ` Thomas Petazzoni
@ 2012-12-04 19:53 ` Jason Cooper
0 siblings, 0 replies; 6+ messages in thread
From: Jason Cooper @ 2012-12-04 19:53 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Dec 04, 2012 at 08:46:54PM +0100, Thomas Petazzoni wrote:
> Dear Jason Cooper,
>
> On Tue, 4 Dec 2012 14:45:01 -0500, Jason Cooper wrote:
>
> > > > This patch fixed a bug introduced in 3.7, but as there are very
> > > > few boards supported in 3.7 (only the Armada 370 and Armada XP
> > > > evaluation boards), it is not a big deal if this patch is only
> > > > applied for 3.8.
> >
> > mirabox, openblocks A3/4, but your point still stands.
>
> No, there was no support in mainline for the Mirabox or OpenBlocks in
> 3.7. The support for those boards has been introduced for 3.8.
Gah, you're correct. I pushed the patches so long ago, it felt like
v3.7 ;-)
thx,
Jason.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver
2012-12-04 17:04 [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver Gregory CLEMENT
2012-12-04 17:08 ` Gregory CLEMENT
@ 2013-01-06 17:41 ` Jason Cooper
1 sibling, 0 replies; 6+ messages in thread
From: Jason Cooper @ 2013-01-06 17:41 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Dec 04, 2012 at 06:04:59PM +0100, Gregory CLEMENT wrote:
> 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>
Applied to mvebu/fixes.
thx,
Jason.
> ---
>
> This patch fixed a bug introduced in 3.7, but as there are very few
> boards supported in 3.7 (only the Armada 370 and Armada XP evaluation
> boards), it is not a big deal if this patch is only applied for 3.8.
>
> This patch is based on 3.7-rc8 and can be applied on top of the
> current arm-soc/for-next with a trivial conflict on mvebu_defconfig.
>
> ---
> arch/arm/boot/dts/armada-370-xp.dtsi | 6 ++++--
> arch/arm/boot/dts/armada-xp.dtsi | 6 ++++--
> arch/arm/configs/mvebu_defconfig | 2 +-
> 3 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi
> index 16cc82c..03640f7 100644
> --- a/arch/arm/boot/dts/armada-370-xp.dtsi
> +++ b/arch/arm/boot/dts/armada-370-xp.dtsi
> @@ -44,17 +44,19 @@
> ranges;
>
> serial at d0012000 {
> - compatible = "ns16550";
> + compatible = "snps,dw-apb-uart";
> reg = <0xd0012000 0x100>;
> reg-shift = <2>;
> interrupts = <41>;
> + reg-io-width = <4>;
> status = "disabled";
> };
> serial at 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 71d6b5d..9a0e744 100644
> --- a/arch/arm/boot/dts/armada-xp.dtsi
> +++ b/arch/arm/boot/dts/armada-xp.dtsi
> @@ -29,17 +29,19 @@
>
> soc {
> serial at d0012200 {
> - compatible = "ns16550";
> + compatible = "snps,dw-apb-uart";
> reg = <0xd0012200 0x100>;
> reg-shift = <2>;
> interrupts = <43>;
> + reg-io-width = <4>;
> status = "disabled";
> };
> serial at 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 3458752..9e34084 100644
> --- a/arch/arm/configs/mvebu_defconfig
> +++ b/arch/arm/configs/mvebu_defconfig
> @@ -22,7 +22,7 @@ CONFIG_VFP=y
> CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
> CONFIG_SERIAL_8250=y
> CONFIG_SERIAL_8250_CONSOLE=y
> -CONFIG_SERIAL_OF_PLATFORM=y
> +CONFIG_SERIAL_8250_DW=y
> CONFIG_GPIOLIB=y
> CONFIG_GPIO_SYSFS=y
> # CONFIG_USB_SUPPORT is not set
> --
> 1.7.9.5
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-01-06 17:41 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-04 17:04 [PATCH] arm: mvebu: Use dw-apb-uart instead of ns16650 as UART driver Gregory CLEMENT
2012-12-04 17:08 ` Gregory CLEMENT
2012-12-04 19:45 ` Jason Cooper
2012-12-04 19:46 ` Thomas Petazzoni
2012-12-04 19:53 ` Jason Cooper
2013-01-06 17:41 ` Jason Cooper
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).