sparc: leon3: Add debug_uart support to LEON3 serial driver.

Signed-off-by: Francois Retief <fgretief@spaceteq.co.za>
This commit is contained in:
Francois Retief 2015-10-29 12:55:34 +02:00
parent 5786071e4a
commit e43ce3fca7
4 changed files with 42 additions and 2 deletions

View file

@ -13,6 +13,7 @@
#include <ambapp.h> #include <ambapp.h>
#include <grlib/irqmp.h> #include <grlib/irqmp.h>
#include <grlib/gptimer.h> #include <grlib/gptimer.h>
#include <debug_uart.h>
#include <config.h> #include <config.h>
@ -50,7 +51,9 @@ struct {
*/ */
void cpu_init_f(void) void cpu_init_f(void)
{ {
#ifdef CONFIG_DEBUG_UART
debug_uart_init();
#endif
} }
/* Routine called from start.S, /* Routine called from start.S,

View file

@ -28,8 +28,10 @@ static int leon3_serial_init(void)
/* find UART */ /* find UART */
if (ambapp_apb_find(&ambapp_plb, VENDOR_GAISLER, GAISLER_APBUART, if (ambapp_apb_find(&ambapp_plb, VENDOR_GAISLER, GAISLER_APBUART,
CONFIG_SYS_GRLIB_APBUART_INDEX, &apbdev) != 1) CONFIG_SYS_GRLIB_APBUART_INDEX, &apbdev) != 1) {
panic("%s: apbuart not found!\n", __func__);
return -1; /* didn't find hardware */ return -1; /* didn't find hardware */
}
/* found apbuart, let's init .. */ /* found apbuart, let's init .. */
uart = (ambapp_dev_apbuart *) apbdev.address; uart = (ambapp_dev_apbuart *) apbdev.address;
@ -145,3 +147,26 @@ __weak struct serial_device *default_serial_console(void)
{ {
return &leon3_serial_drv; return &leon3_serial_drv;
} }
#ifdef CONFIG_DEBUG_UART_APBUART
#include <debug_uart.h>
static inline void _debug_uart_init(void)
{
ambapp_dev_apbuart *uart = (ambapp_dev_apbuart *)CONFIG_DEBUG_UART_BASE;
uart->scaler = (((CONFIG_DEBUG_UART_CLOCK*10) / (CONFIG_BAUDRATE*8)) - 5)/10;
uart->ctrl = APBUART_CTRL_RE | APBUART_CTRL_TE;
}
static inline void _debug_uart_putc(int ch)
{
ambapp_dev_apbuart *uart = (ambapp_dev_apbuart *)CONFIG_DEBUG_UART_BASE;
while (!(readl(&uart->status) & APBUART_STATUS_THE))
WATCHDOG_RESET();
writel(ch, &uart->data);
}
DEBUG_UART_FUNCS
#endif

View file

@ -14,3 +14,7 @@ CONFIG_SYS_TEXT_BASE=0x00000000
# CONFIG_CMD_NET is not set # CONFIG_CMD_NET is not set
# CONFIG_CMD_NFS is not set # CONFIG_CMD_NFS is not set
CONFIG_SYS_AMBAPP_PRINT_ON_STARTUP=y CONFIG_SYS_AMBAPP_PRINT_ON_STARTUP=y
CONFIG_DEBUG_UART=y
CONFIG_DEBUG_UART_APBUART=y
CONFIG_DEBUG_UART_BASE=0x80000100
CONFIG_DEBUG_UART_CLOCK=40000000

View file

@ -98,6 +98,14 @@ config DEBUG_UART_ZYNQ
will need to provide parameters to make this work. The driver will will need to provide parameters to make this work. The driver will
be available until the real driver-model serial is running. be available until the real driver-model serial is running.
config DEBUG_UART_APBUART
depends on LEON3
bool "Gaisler APBUART"
help
Select this to enable a debug UART using the serial_leon3 driver. You
will need to provide parameters to make this work. The driver will
be available until the real driver model serial is running.
endchoice endchoice
config DEBUG_UART_BASE config DEBUG_UART_BASE