diff options
Diffstat (limited to 'board/cogent/serial.c')
| -rw-r--r-- | board/cogent/serial.c | 66 | 
1 files changed, 60 insertions, 6 deletions
| diff --git a/board/cogent/serial.c b/board/cogent/serial.c index d9c27beee..18a9dbf35 100644 --- a/board/cogent/serial.c +++ b/board/cogent/serial.c @@ -5,6 +5,8 @@  #include <common.h>  #include <board/cogent/serial.h> +#include <serial.h> +#include <linux/compiler.h>  DECLARE_GLOBAL_DATA_PTR; @@ -25,7 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;  #error CONFIG_CONS_INDEX must be configured for Cogent motherboard serial  #endif -int serial_init (void) +static int cogent_serial_init(void)  {  	cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE; @@ -38,7 +40,7 @@ int serial_init (void)  	return (0);  } -void serial_setbrg (void) +static void cogent_serial_setbrg(void)  {  	cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;  	unsigned int divisor; @@ -54,7 +56,7 @@ void serial_setbrg (void)  	cma_mb_reg_write (&mbsp->ser_lcr, lcr);	/* unset DLAB */  } -void serial_putc (const char c) +static void cogent_serial_putc(const char c)  {  	cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE; @@ -66,13 +68,13 @@ void serial_putc (const char c)  	cma_mb_reg_write (&mbsp->ser_thr, c);  } -void serial_puts (const char *s) +static void cogent_serial_puts(const char *s)  {  	while (*s != '\0')  		serial_putc (*s++);  } -int serial_getc (void) +static int cogent_serial_getc(void)  {  	cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE; @@ -81,13 +83,65 @@ int serial_getc (void)  	return ((int) cma_mb_reg_read (&mbsp->ser_rhr) & 0x7f);  } -int serial_tstc (void) +static int cogent_serial_tstc(void)  {  	cma_mb_serial *mbsp = (cma_mb_serial *) CMA_MB_SERIAL_BASE;  	return ((cma_mb_reg_read (&mbsp->ser_lsr) & LSR_DR) != 0);  } +#ifdef CONFIG_SERIAL_MULTI +static struct serial_device cogent_serial_drv = { +	.name	= "cogent_serial", +	.start	= cogent_serial_init, +	.stop	= NULL, +	.setbrg	= cogent_serial_setbrg, +	.putc	= cogent_serial_putc, +	.puts	= cogent_serial_puts, +	.getc	= cogent_serial_getc, +	.tstc	= cogent_serial_tstc, +}; + +void cogent_serial_initialize(void) +{ +	serial_register(&cogent_serial_drv); +} + +__weak struct serial_device *default_serial_console(void) +{ +	return &cogent_serial_drv; +} +#else +int serial_init(void) +{ +	return cogent_serial_init(); +} + +void serial_setbrg(void) +{ +	cogent_serial_setbrg(); +} + +void serial_putc(const char c) +{ +	cogent_serial_putc(c); +} + +void serial_puts(const char *s) +{ +	cogent_serial_puts(s); +} + +int serial_getc(void) +{ +	return cogent_serial_getc(); +} + +int serial_tstc(void) +{ +	return cogent_serial_tstc(); +} +#endif  #endif /* CONS_NONE */  #if defined(CONFIG_CMD_KGDB) && \ |