[RESEND][PATCH] ARM: debug: add support for Palmchip 16550-like UART

Måns Rullgård mans at mansr.com
Wed Nov 4 08:08:37 PST 2015


Mason <slash.tmp at free.fr> writes:

> On 04/11/2015 16:47, Måns Rullgård wrote:
>
>> Mason writes:
>> 
>>> On 27/10/2015 13:57, Mans Rullgard wrote:
>>>
>>>> Some SoCs have a Palmchip UART with a non-standard register layout.
>>>> This allows the debug console to work with these.
>>>>
>>>> Signed-off-by: Mans Rullgard <mans at mansr.com>
>>>> ---
>>>>  arch/arm/Kconfig.debug        |  8 ++++++++
>>>>  arch/arm/include/debug/8250.S | 12 ++++++++++++
>>>>  2 files changed, 20 insertions(+)
>>>>
>>>> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
>>>> index 0cfd7f9..9039fff 100644
>>>> --- a/arch/arm/Kconfig.debug
>>>> +++ b/arch/arm/Kconfig.debug
>>>> @@ -1597,6 +1597,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 variant"
>>>> +	depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
>>>
>>> I am 100% clueless about the UART sequence in Linux.
>>>
>>> There's earlyprintk, the boot console (polled?), the "full-blown"
>>> console (with IRQs)...
>>>
>>> If I want earlyprintk, I have to enable DEBUG_LL (?) so I'll have
>>> DEBUG_LL_UART_8250, right? There's no way to pick DEBUG_UART_8250
>>> in menuconfig, is there?
>>>
>>> So I picked the following options:
>>>
>>> CONFIG_DEBUG_LL=y
>>> # CONFIG_DEBUG_ICEDCC is not set
>>> # CONFIG_DEBUG_SEMIHOSTING is not set
>>> CONFIG_DEBUG_LL_UART_8250=y
>>> # CONFIG_DEBUG_LL_UART_PL01X is not set
>>> CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
>>> # CONFIG_DEBUG_UART_8250 is not set
>>> # CONFIG_DEBUG_UART_BCM63XX is not set
>>> CONFIG_DEBUG_UART_PHYS=0x10700
>>> CONFIG_DEBUG_UART_VIRT=0xf0010700
>>> CONFIG_DEBUG_UART_8250_SHIFT=2
>>> CONFIG_DEBUG_UART_8250_WORD=y
>>> CONFIG_DEBUG_UART_8250_PALMCHIP=y
>>> # CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
>>> CONFIG_DEBUG_UNCOMPRESS=y
>>> CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
>>> CONFIG_EARLY_PRINTK=y
>> 
>> Those are the settings I use.
>> 
>>> I suppose I have to provide DEBUG_UART_PHYS because it needs
>>> the address before it can parse the DT? But how am I supposed
>>> to know the virtual address? Isn't that from iomap(UART_PHYS)?
>> 
>> The decompression code and early setup don't have that luxury.
>
> But how am I supposed to compute the virtual address?
> Can I set DEBUG_UART_VIRT to 0xdeadbeef? :-)

Add 0xf0000000.

> Also is it expected that setting DEBUG_LL forces make to recompile
> every source file in the source tree?

Apparently. :)

-- 
Måns Rullgård
mans at mansr.com



More information about the linux-arm-kernel mailing list