The low-level debugging functions are useful to debug the early boot stage where the full UART driver is not available. UniPhier SoCs need to initialize the UART port 0 to use this feature. The initialization routine is called at the very entry of the lowlevel_init(). Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>master
parent
2661dfd004
commit
b4ad44baab
@ -0,0 +1,29 @@ |
|||||||
|
/* |
||||||
|
* On-chip UART initializaion for low-level debugging |
||||||
|
* |
||||||
|
* Copyright (C) 2014 Panasonic Corporation |
||||||
|
* Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||||
|
* |
||||||
|
* SPDX-License-Identifier: GPL-2.0+ |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <linux/linkage.h> |
||||||
|
#include <asm/arch/sg-regs.h> |
||||||
|
|
||||||
|
#define UART_CLK 36864000 |
||||||
|
#include <asm/arch/debug-uart.S> |
||||||
|
|
||||||
|
ENTRY(setup_lowlevel_debug) |
||||||
|
init_debug_uart r0, r1, r2 |
||||||
|
|
||||||
|
/* UART Port 0 */ |
||||||
|
set_pinsel 85, 1, r0, r1 |
||||||
|
set_pinsel 88, 1, r0, r1 |
||||||
|
|
||||||
|
ldr r0, =SG_IECTRL |
||||||
|
ldr r1, [r0] |
||||||
|
orr r1, r1, #1 |
||||||
|
str r1, [r0] |
||||||
|
|
||||||
|
mov pc, lr |
||||||
|
ENDPROC(setup_lowlevel_debug) |
@ -0,0 +1,39 @@ |
|||||||
|
/* |
||||||
|
* On-chip UART initializaion for low-level debugging |
||||||
|
* |
||||||
|
* Copyright (C) 2014 Panasonic Corporation |
||||||
|
* Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||||
|
* |
||||||
|
* SPDX-License-Identifier: GPL-2.0+ |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <linux/linkage.h> |
||||||
|
#include <asm/arch/sc-regs.h> |
||||||
|
#include <asm/arch/sg-regs.h> |
||||||
|
|
||||||
|
#define UART_CLK 73728000 |
||||||
|
#include <asm/arch/debug-uart.S> |
||||||
|
|
||||||
|
ENTRY(setup_lowlevel_debug) |
||||||
|
ldr r0, =SC_CLKCTRL |
||||||
|
ldr r1, [r0] |
||||||
|
orr r1, r1, #SC_CLKCTRL_CLK_PERI |
||||||
|
str r1, [r0] |
||||||
|
|
||||||
|
init_debug_uart r0, r1, r2 |
||||||
|
|
||||||
|
/* UART Port 0 */ |
||||||
|
set_pinsel 127, 0, r0, r1 |
||||||
|
set_pinsel 128, 0, r0, r1 |
||||||
|
|
||||||
|
ldr r0, =SG_LOADPINCTRL |
||||||
|
mov r1, #1 |
||||||
|
str r1, [r0] |
||||||
|
|
||||||
|
ldr r0, =SG_IECTRL |
||||||
|
ldr r1, [r0] |
||||||
|
orr r1, r1, #1 |
||||||
|
str r1, [r0] |
||||||
|
|
||||||
|
mov pc, lr |
||||||
|
ENDPROC(setup_lowlevel_debug) |
@ -0,0 +1,29 @@ |
|||||||
|
/* |
||||||
|
* On-chip UART initializaion for low-level debugging |
||||||
|
* |
||||||
|
* Copyright (C) 2014 Panasonic Corporation |
||||||
|
* Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||||
|
* |
||||||
|
* SPDX-License-Identifier: GPL-2.0+ |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <linux/linkage.h> |
||||||
|
#include <asm/arch/sg-regs.h> |
||||||
|
|
||||||
|
#define UART_CLK 80000000 |
||||||
|
#include <asm/arch/debug-uart.S> |
||||||
|
|
||||||
|
ENTRY(setup_lowlevel_debug) |
||||||
|
init_debug_uart r0, r1, r2 |
||||||
|
|
||||||
|
/* UART Port 0 */ |
||||||
|
set_pinsel 70, 3, r0, r1 |
||||||
|
set_pinsel 71, 3, r0, r1 |
||||||
|
|
||||||
|
ldr r0, =SG_IECTRL |
||||||
|
ldr r1, [r0] |
||||||
|
orr r1, r1, #1 |
||||||
|
str r1, [r0] |
||||||
|
|
||||||
|
mov pc, lr |
||||||
|
ENDPROC(setup_lowlevel_debug) |
@ -0,0 +1,24 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2014 Panasonic Corporation |
||||||
|
* Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
||||||
|
* |
||||||
|
* SPDX-License-Identifier: GPL-2.0+ |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <linux/serial_reg.h> |
||||||
|
|
||||||
|
#if !defined(CONFIG_DEBUG_SEMIHOSTING) |
||||||
|
#include CONFIG_DEBUG_LL_INCLUDE |
||||||
|
#endif |
||||||
|
|
||||||
|
#define BAUDRATE 115200 |
||||||
|
#define DIV_ROUND(x, d) (((x) + ((d) / 2)) / (d)) |
||||||
|
#define DIVISOR DIV_ROUND(UART_CLK, 16 * BAUDRATE) |
||||||
|
|
||||||
|
.macro init_debug_uart, ra, rb, rc |
||||||
|
addruart \ra, \rb, \rc |
||||||
|
mov \rb, #UART_LCR_WLEN8 |
||||||
|
strb \rb, [\ra, #0x11] |
||||||
|
ldr \rb, =DIVISOR |
||||||
|
str \rb, [\ra, #0x24] |
||||||
|
.endm |
Loading…
Reference in new issue