@ -25,6 +25,8 @@
# include <watchdog.h>
# include <asm/io.h>
# include <nios2-io.h>
# include <linux/compiler.h>
# include <serial.h>
DECLARE_GLOBAL_DATA_PTR ;
@ -33,10 +35,16 @@ DECLARE_GLOBAL_DATA_PTR;
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
static nios_jtag_t * jtag = ( nios_jtag_t * ) CONFIG_SYS_NIOS_CONSOLE ;
void serial_setbrg ( void ) { return ; }
int serial_init ( void ) { return ( 0 ) ; }
static void altera_jtag_serial_setbrg ( void )
{
}
static int altera_jtag_serial_init ( void )
{
return 0 ;
}
void serial_putc ( char c )
static void altera_jtag_ serial_putc( char c )
{
while ( 1 ) {
unsigned st = readl ( & jtag - > control ) ;
@ -51,18 +59,18 @@ void serial_putc (char c)
writel ( ( unsigned char ) c , & jtag - > data ) ;
}
void serial_puts ( const char * s )
static void altera_jtag_ serial_puts( const char * s )
{
while ( * s ! = 0 )
serial_putc ( * s + + ) ;
}
int serial_tstc ( void )
static int altera_jtag_ serial_tstc( void )
{
return ( readl ( & jtag - > control ) & NIOS_JTAG_RRDY ) ;
}
int serial_getc ( void )
static int altera_jtag_ serial_getc( void )
{
int c ;
unsigned val ;
@ -76,3 +84,56 @@ int serial_getc (void)
c = val & 0x0ff ;
return ( c ) ;
}
# ifdef CONFIG_SERIAL_MULTI
static struct serial_device altera_jtag_serial_drv = {
. name = " altera_jtag_uart " ,
. start = altera_jtag_serial_init ,
. stop = NULL ,
. setbrg = altera_jtag_serial_setbrg ,
. putc = altera_jtag_serial_putc ,
. puts = altera_jtag_serial_puts ,
. getc = altera_jtag_serial_getc ,
. tstc = altera_jtag_serial_tstc ,
} ;
void altera_jtag_serial_initialize ( void )
{
serial_register ( & altera_jtag_serial_drv ) ;
}
__weak struct serial_device * default_serial_console ( void )
{
return & altera_jtag_serial_drv ;
}
# else
int serial_init ( void )
{
return altera_jtag_serial_init ( ) ;
}
void serial_setbrg ( void )
{
altera_jtag_serial_setbrg ( ) ;
}
void serial_putc ( const char c )
{
altera_jtag_serial_putc ( c ) ;
}
void serial_puts ( const char * s )
{
altera_jtag_serial_puts ( s ) ;
}
int serial_getc ( void )
{
return altera_jtag_serial_getc ( ) ;
}
int serial_tstc ( void )
{
return altera_jtag_serial_tstc ( ) ;
}
# endif