@ -26,6 +26,8 @@
# include <common.h>
# include <asm/processor.h>
# include <asm/leon.h>
# include <serial.h>
# include <linux/compiler.h>
DECLARE_GLOBAL_DATA_PTR ;
@ -39,7 +41,7 @@ DECLARE_GLOBAL_DATA_PTR;
# define READ_DWORD(var) SPARC_NOCACHE_READ_DWORD((unsigned int)&(var))
# endif
int serial_init ( void )
static int leon2_ serial_init( void )
{
LEON2_regs * leon2 = ( LEON2_regs * ) LEON2_PREGS ;
LEON2_Uart_regs * regs ;
@ -72,15 +74,7 @@ int serial_init(void)
return 0 ;
}
void serial_putc ( const char c )
{
if ( c = = ' \n ' )
serial_putc_raw ( ' \r ' ) ;
serial_putc_raw ( c ) ;
}
void serial_putc_raw ( const char c )
static void leon2_serial_putc_raw ( const char c )
{
LEON2_regs * leon2 = ( LEON2_regs * ) LEON2_PREGS ;
LEON2_Uart_regs * regs ;
@ -103,14 +97,22 @@ void serial_putc_raw(const char c)
# endif
}
void serial_puts ( const char * s )
static void leon2_serial_putc ( const char c )
{
if ( c = = ' \n ' )
leon2_serial_putc_raw ( ' \r ' ) ;
leon2_serial_putc_raw ( c ) ;
}
static void leon2_serial_puts ( const char * s )
{
while ( * s ) {
serial_putc ( * s + + ) ;
}
}
int serial_getc ( void )
static int leon2_ serial_getc( void )
{
LEON2_regs * leon2 = ( LEON2_regs * ) LEON2_PREGS ;
LEON2_Uart_regs * regs ;
@ -128,7 +130,7 @@ int serial_getc(void)
return READ_WORD ( regs - > UART_Channel ) ;
}
int serial_tstc ( void )
static int leon2_ serial_tstc( void )
{
LEON2_regs * leon2 = ( LEON2_regs * ) LEON2_PREGS ;
LEON2_Uart_regs * regs ;
@ -143,7 +145,7 @@ int serial_tstc(void)
}
/* set baud rate for uart */
void serial_setbrg ( void )
static void leon2_ serial_setbrg( void )
{
/* update baud rate settings, read it from gd->baudrate */
unsigned int scaler ;
@ -163,3 +165,56 @@ void serial_setbrg(void)
regs - > UART_Scaler = scaler ;
}
}
# ifdef CONFIG_SERIAL_MULTI
static struct serial_device leon2_serial_drv = {
. name = " leon2_serial " ,
. start = leon2_serial_init ,
. stop = NULL ,
. setbrg = leon2_serial_setbrg ,
. putc = leon2_serial_putc ,
. puts = leon2_serial_puts ,
. getc = leon2_serial_getc ,
. tstc = leon2_serial_tstc ,
} ;
void leon2_serial_initialize ( void )
{
serial_register ( & leon2_serial_drv ) ;
}
__weak struct serial_device * default_serial_console ( void )
{
return & leon2_serial_drv ;
}
# else
int serial_init ( void )
{
return leon2_serial_init ( ) ;
}
void serial_setbrg ( void )
{
leon2_serial_setbrg ( ) ;
}
void serial_putc ( const char c )
{
leon2_serial_putc ( c ) ;
}
void serial_puts ( const char * s )
{
leon2_serial_puts ( s ) ;
}
int serial_getc ( void )
{
return leon2_serial_getc ( ) ;
}
int serial_tstc ( void )
{
return leon2_serial_tstc ( ) ;
}
# endif