mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
sparc: leon3: Add debug_uart support to LEON3 serial driver.
Signed-off-by: Francois Retief <fgretief@spaceteq.co.za>
This commit is contained in:
parent
5786071e4a
commit
e43ce3fca7
4 changed files with 42 additions and 2 deletions
|
@ -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,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue