diff mbox

[RESEND,v2] ARM: debug: add support for Palmchip BK-310x UART

Message ID 569CA203.6050001@sigmadesigns.com (mailing list archive)
State New, archived
Headers show

Commit Message

Marc Gonzalez Jan. 18, 2016, 8:27 a.m. UTC
From: Mans Rullgard <mans@mansr.com>

Some SoCs use a Palmchip BK-310x UART which is mostly 16550 compatible
but with a different register layout. While this UART has previously
only been supported in MIPS based chips (Alchemy, Ralink), the ARM based
SMP87xx series from Sigma Designs also uses it.

This patch allows the debug console to work with this type of UART.

Signed-off-by: Mans Rullgard <mans@mansr.com>
Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
---
Peter, this is the patch I've been using on Tango for earlyprintk support.
arm-soc, this is just the Nov 8 patch with my Signed-off-by tag.
---
 arch/arm/Kconfig.debug            |  9 +++++++++
 arch/arm/include/debug/palmchip.S | 11 +++++++++++
 2 files changed, 20 insertions(+)
 create mode 100644 arch/arm/include/debug/palmchip.S

Comments

Kevin Hilman Jan. 27, 2016, 12:40 a.m. UTC | #1
Marc Gonzalez <marc_gonzalez@sigmadesigns.com> writes:

> From: Mans Rullgard <mans@mansr.com>
>
> Some SoCs use a Palmchip BK-310x UART which is mostly 16550 compatible
> but with a different register layout.

... because UART register layout is where we really need innovation. ;)

> While this UART has previously
> only been supported in MIPS based chips (Alchemy, Ralink), the ARM based
> SMP87xx series from Sigma Designs also uses it.
>
> This patch allows the debug console to work with this type of UART.
>
> Signed-off-by: Mans Rullgard <mans@mansr.com>
> Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>

It appears this was previously acked by Arnd also?  https://lkml.org/lkml/2015/11/9/116

> ---
> Peter, this is the patch I've been using on Tango for earlyprintk support.
> arm-soc, this is just the Nov 8 patch with my Signed-off-by tag.
> ---
>  arch/arm/Kconfig.debug            |  9 +++++++++
>  arch/arm/include/debug/palmchip.S | 11 +++++++++++
>  2 files changed, 20 insertions(+)
>  create mode 100644 arch/arm/include/debug/palmchip.S
>
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index 259c0ca9c99a..708aa9150c00 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -1304,6 +1304,7 @@ config DEBUG_SIRFSOC_UART
>  config DEBUG_LL_INCLUDE
>  	string
>  	default "debug/sa1100.S" if DEBUG_SA1100
> +	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP

minor nit: We're trying (not always with great success) to keep various
parts of this file sorted alphanumerically.  Can you please insert the
new entries accordingly?

Otherwise looks good to me,

Acked-by: Kevin Hilman <khilman@baylibre.com>

Kevin
Måns Rullgård Jan. 27, 2016, 12:44 a.m. UTC | #2
Kevin Hilman <khilman@baylibre.com> writes:

> Marc Gonzalez <marc_gonzalez@sigmadesigns.com> writes:
>
>> From: Mans Rullgard <mans@mansr.com>
>>
>> Some SoCs use a Palmchip BK-310x UART which is mostly 16550 compatible
>> but with a different register layout.
>
> ... because UART register layout is where we really need innovation. ;)
>
>> While this UART has previously
>> only been supported in MIPS based chips (Alchemy, Ralink), the ARM based
>> SMP87xx series from Sigma Designs also uses it.
>>
>> This patch allows the debug console to work with this type of UART.
>>
>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>> Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
>
> It appears this was previously acked by Arnd also?
> https://lkml.org/lkml/2015/11/9/116
>
>> ---
>> Peter, this is the patch I've been using on Tango for earlyprintk support.
>> arm-soc, this is just the Nov 8 patch with my Signed-off-by tag.
>> ---
>>  arch/arm/Kconfig.debug            |  9 +++++++++
>>  arch/arm/include/debug/palmchip.S | 11 +++++++++++
>>  2 files changed, 20 insertions(+)
>>  create mode 100644 arch/arm/include/debug/palmchip.S
>>
>> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
>> index 259c0ca9c99a..708aa9150c00 100644
>> --- a/arch/arm/Kconfig.debug
>> +++ b/arch/arm/Kconfig.debug
>> @@ -1304,6 +1304,7 @@ config DEBUG_SIRFSOC_UART
>>  config DEBUG_LL_INCLUDE
>>  	string
>>  	default "debug/sa1100.S" if DEBUG_SA1100
>> +	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
>
> minor nit: We're trying (not always with great success) to keep various
> parts of this file sorted alphanumerically.  Can you please insert the
> new entries accordingly?

It has to precede the regular 8250 entry so as to take precedence over
that.

> Otherwise looks good to me,
>
> Acked-by: Kevin Hilman <khilman@baylibre.com>
>
> Kevin
Marc Gonzalez Jan. 29, 2016, 4:44 p.m. UTC | #3
On 27/01/2016 01:44, Måns Rullgård wrote:

> Kevin Hilman <khilman@baylibre.com> writes:
> 
>> Marc Gonzalez <marc_gonzalez@sigmadesigns.com> writes:
>>
>>> From: Mans Rullgard <mans@mansr.com>
>>>
>>> Some SoCs use a Palmchip BK-310x UART which is mostly 16550 compatible
>>> but with a different register layout.
>>
>> ... because UART register layout is where we really need innovation. ;)
>>
>>> While this UART has previously
>>> only been supported in MIPS based chips (Alchemy, Ralink), the ARM based
>>> SMP87xx series from Sigma Designs also uses it.
>>>
>>> This patch allows the debug console to work with this type of UART.
>>>
>>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>>> Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
>>
>> It appears this was previously acked by Arnd also?
>> https://lkml.org/lkml/2015/11/9/116
>>
>>> ---
>>> Peter, this is the patch I've been using on Tango for earlyprintk support.
>>> arm-soc, this is just the Nov 8 patch with my Signed-off-by tag.
>>> ---
>>>  arch/arm/Kconfig.debug            |  9 +++++++++
>>>  arch/arm/include/debug/palmchip.S | 11 +++++++++++
>>>  2 files changed, 20 insertions(+)
>>>  create mode 100644 arch/arm/include/debug/palmchip.S
>>>
>>> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
>>> index 259c0ca9c99a..708aa9150c00 100644
>>> --- a/arch/arm/Kconfig.debug
>>> +++ b/arch/arm/Kconfig.debug
>>> @@ -1304,6 +1304,7 @@ config DEBUG_SIRFSOC_UART
>>>  config DEBUG_LL_INCLUDE
>>>  	string
>>>  	default "debug/sa1100.S" if DEBUG_SA1100
>>> +	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
>>
>> minor nit: We're trying (not always with great success) to keep various
>> parts of this file sorted alphanumerically.  Can you please insert the
>> new entries accordingly?
> 
> It has to precede the regular 8250 entry so as to take precedence over
> that.

<confused> Are you all talking about these 2 lines:

	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250

default "debug/palmchip.S" is supposed to come before default "debug/8250.S" ?

Because, in my config, there is no DEBUG_LL_UART_8250 to be seen, and
# CONFIG_DEBUG_UART_8250 is not set

So I don't see how the order might cause a problem in that case?

Regards.
Måns Rullgård Jan. 29, 2016, 4:50 p.m. UTC | #4
Marc Gonzalez <marc_gonzalez@sigmadesigns.com> writes:

> On 27/01/2016 01:44, Måns Rullgård wrote:
>
>> Kevin Hilman <khilman@baylibre.com> writes:
>> 
>>> Marc Gonzalez <marc_gonzalez@sigmadesigns.com> writes:
>>>
>>>> From: Mans Rullgard <mans@mansr.com>
>>>>
>>>> Some SoCs use a Palmchip BK-310x UART which is mostly 16550 compatible
>>>> but with a different register layout.
>>>
>>> ... because UART register layout is where we really need innovation. ;)
>>>
>>>> While this UART has previously
>>>> only been supported in MIPS based chips (Alchemy, Ralink), the ARM based
>>>> SMP87xx series from Sigma Designs also uses it.
>>>>
>>>> This patch allows the debug console to work with this type of UART.
>>>>
>>>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>>>> Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
>>>
>>> It appears this was previously acked by Arnd also?
>>> https://lkml.org/lkml/2015/11/9/116
>>>
>>>> ---
>>>> Peter, this is the patch I've been using on Tango for earlyprintk support.
>>>> arm-soc, this is just the Nov 8 patch with my Signed-off-by tag.
>>>> ---
>>>>  arch/arm/Kconfig.debug            |  9 +++++++++
>>>>  arch/arm/include/debug/palmchip.S | 11 +++++++++++
>>>>  2 files changed, 20 insertions(+)
>>>>  create mode 100644 arch/arm/include/debug/palmchip.S
>>>>
>>>> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
>>>> index 259c0ca9c99a..708aa9150c00 100644
>>>> --- a/arch/arm/Kconfig.debug
>>>> +++ b/arch/arm/Kconfig.debug
>>>> @@ -1304,6 +1304,7 @@ config DEBUG_SIRFSOC_UART
>>>>  config DEBUG_LL_INCLUDE
>>>>  	string
>>>>  	default "debug/sa1100.S" if DEBUG_SA1100
>>>> +	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
>>>
>>> minor nit: We're trying (not always with great success) to keep various
>>> parts of this file sorted alphanumerically.  Can you please insert the
>>> new entries accordingly?
>> 
>> It has to precede the regular 8250 entry so as to take precedence over
>> that.
>
> <confused> Are you all talking about these 2 lines:
>
> 	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
> 	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
>
> default "debug/palmchip.S" is supposed to come before default "debug/8250.S" ?
>
> Because, in my config, there is no DEBUG_LL_UART_8250 to be seen, and
> # CONFIG_DEBUG_UART_8250 is not set

CONFIG_DEBUG_LL_UART_8250=y here.  In fact DEBUG_UART_8250_PALMCHIP
depends on "DEBUG_LL_UART_8250 || DEBUG_UART_8250" so one of those
*must* be set for any of this to matter.
Marc Gonzalez Jan. 29, 2016, 4:58 p.m. UTC | #5
On 29/01/2016 17:50, Måns Rullgård wrote:

> Marc Gonzalez <marc_gonzalez@sigmadesigns.com> writes:
> 
>> On 27/01/2016 01:44, Måns Rullgård wrote:
>>
>>> Kevin Hilman <khilman@baylibre.com> writes:
>>>
>>>> Marc Gonzalez <marc_gonzalez@sigmadesigns.com> writes:
>>>>
>>>>> From: Mans Rullgard <mans@mansr.com>
>>>>>
>>>>> Some SoCs use a Palmchip BK-310x UART which is mostly 16550 compatible
>>>>> but with a different register layout.
>>>>
>>>> ... because UART register layout is where we really need innovation. ;)
>>>>
>>>>> While this UART has previously
>>>>> only been supported in MIPS based chips (Alchemy, Ralink), the ARM based
>>>>> SMP87xx series from Sigma Designs also uses it.
>>>>>
>>>>> This patch allows the debug console to work with this type of UART.
>>>>>
>>>>> Signed-off-by: Mans Rullgard <mans@mansr.com>
>>>>> Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
>>>>
>>>> It appears this was previously acked by Arnd also?
>>>> https://lkml.org/lkml/2015/11/9/116
>>>>
>>>>> ---
>>>>> Peter, this is the patch I've been using on Tango for earlyprintk support.
>>>>> arm-soc, this is just the Nov 8 patch with my Signed-off-by tag.
>>>>> ---
>>>>>  arch/arm/Kconfig.debug            |  9 +++++++++
>>>>>  arch/arm/include/debug/palmchip.S | 11 +++++++++++
>>>>>  2 files changed, 20 insertions(+)
>>>>>  create mode 100644 arch/arm/include/debug/palmchip.S
>>>>>
>>>>> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
>>>>> index 259c0ca9c99a..708aa9150c00 100644
>>>>> --- a/arch/arm/Kconfig.debug
>>>>> +++ b/arch/arm/Kconfig.debug
>>>>> @@ -1304,6 +1304,7 @@ config DEBUG_SIRFSOC_UART
>>>>>  config DEBUG_LL_INCLUDE
>>>>>  	string
>>>>>  	default "debug/sa1100.S" if DEBUG_SA1100
>>>>> +	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
>>>>
>>>> minor nit: We're trying (not always with great success) to keep various
>>>> parts of this file sorted alphanumerically.  Can you please insert the
>>>> new entries accordingly?
>>>
>>> It has to precede the regular 8250 entry so as to take precedence over
>>> that.
>>
>> <confused> Are you all talking about these 2 lines:
>>
>> 	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
>> 	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
>>
>> default "debug/palmchip.S" is supposed to come before default "debug/8250.S" ?
>>
>> Because, in my config, there is no DEBUG_LL_UART_8250 to be seen, and
>> # CONFIG_DEBUG_UART_8250 is not set
> 
> CONFIG_DEBUG_LL_UART_8250=y here.  In fact DEBUG_UART_8250_PALMCHIP
> depends on "DEBUG_LL_UART_8250 || DEBUG_UART_8250" so one of those
> *must* be set for any of this to matter.

Doh! I was looking at a config where earlyprintk isn't enabled... o_O

config DEBUG_UART_8250_PALMCHIP
	bool "8250 UART is Palmchip BK-310x"
	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250

OK, I understand now. Thanks.

Regards.
diff mbox

Patch

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 259c0ca9c99a..708aa9150c00 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -1304,6 +1304,7 @@  config DEBUG_SIRFSOC_UART
 config DEBUG_LL_INCLUDE
 	string
 	default "debug/sa1100.S" if DEBUG_SA1100
+	default "debug/palmchip.S" if DEBUG_UART_8250_PALMCHIP
 	default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
 	default "debug/at91.S" if DEBUG_AT91_UART
 	default "debug/asm9260.S" if DEBUG_ASM9260_UART
@@ -1588,6 +1589,14 @@  config DEBUG_UART_8250_WORD
 		DEBUG_BCM_KONA_UART || DEBUG_RK32_UART2 || \
 		DEBUG_BRCMSTB_UART
 
+config DEBUG_UART_8250_PALMCHIP
+	bool "8250 UART is Palmchip BK-310x"
+	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
+	help
+	  Palmchip provides a UART implementation compatible with 16550
+	  except for having a different register layout.  Say Y here if
+	  the debug UART is of this type.
+
 config DEBUG_UART_8250_FLOW_CONTROL
 	bool "Enable flow control for 8250 UART"
 	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
diff --git a/arch/arm/include/debug/palmchip.S b/arch/arm/include/debug/palmchip.S
new file mode 100644
index 000000000000..6824b2d1c38e
--- /dev/null
+++ b/arch/arm/include/debug/palmchip.S
@@ -0,0 +1,11 @@ 
+#include <linux/serial_reg.h>
+
+#undef UART_TX
+#undef UART_LSR
+#undef UART_MSR
+
+#define UART_TX 1
+#define UART_LSR 7
+#define UART_MSR 8
+
+#include <debug/8250.S>