[U-Boot] [PATCH v6 07/10] ns16550: map register base address for debug UART

Wills Wang
2016-01-06T02:50:33Z

On 01/06/2016 05:18 AM, Daniel Schwierzeck wrote:
> 2016-01-04 14:07 GMT+01:00 Thomas Chou <thomas@wytron.com.tw>:
>> Hi Wills,
>>
>>
>> On 2016?01?04? 19:14, Wills Wang wrote:
>>> MIPS need to use KSEG1 address for register operation, this patch
>>> add map_physmem to convert CONFIG_DEBUG_UART_BASE for debug UART.
>>>
>>> Signed-off-by: Wills Wang <wills.wang@live.com>
>>> ---
>>>
>>> Changes in v6: None
>>> Changes in v5: None
>>> Changes in v4: None
>>> Changes in v3: None
>>> Changes in v2: None
>>>
>>> drivers/serial/ns16550.c | 6 ++++--
>>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
>>> index 3b24af0..1e2538e 100644
>>> --- a/drivers/serial/ns16550.c
>>> +++ b/drivers/serial/ns16550.c
>>> @@ -270,7 +270,8 @@ int NS16550_tstc(NS16550_t com_port)
>>>
>>> static inline void _debug_uart_init(void)
>>> {
>>> - struct NS16550 *com_port = (struct NS16550
>>> *)CONFIG_DEBUG_UART_BASE;
>>> + struct NS16550 *com_port = (struct NS16550 *)map_physmem(
>>> + CONFIG_DEBUG_UART_BASE, 0, MAP_NOCACHE);
>>> int baud_divisor;
>>>
>>> /*
>>> @@ -293,7 +294,8 @@ static inline void _debug_uart_init(void)
>>>
>>> static inline void _debug_uart_putc(int ch)
>>> {
>>> - struct NS16550 *com_port = (struct NS16550
>>> *)CONFIG_DEBUG_UART_BASE;
>>> + struct NS16550 *com_port = (struct NS16550 *)map_physmem(
>>> + CONFIG_DEBUG_UART_BASE, 0, MAP_NOCACHE);
>>>
>>> while (!(serial_din(&com_port->lsr) & UART_LSR_THRE))
>>> ;
>>>
>> As debug uart may be used in very early stage and SPL, I would suggest the
>> CONFIG_DEBUG_UART_BASE here is mapped to uncached space already. So that we
>> can keep the code and stack usage minimal.
>>
>> My concern is that the uncache mapping in nios2 arch is different between
>> NOMMU and MMU core, which will be decoded from device tree. So it won't work
>> for nios2 until DM initialized.
>>
>> Naked-by: Thomas Chou <thomas@wytron.com.tw>
>>
> I agree with Thomas. Please set CONFIG_DEBUG_UART_BASE to a KSEG1
> address and discard this patch.
>
Ok.
I will correct this in the next patch.

--
Best Regards
Wills