diff options
Diffstat (limited to 'arch/powerpc/cpu/mpc8260/serial_scc.c')
| -rw-r--r-- | arch/powerpc/cpu/mpc8260/serial_scc.c | 39 | 
1 files changed, 28 insertions, 11 deletions
diff --git a/arch/powerpc/cpu/mpc8260/serial_scc.c b/arch/powerpc/cpu/mpc8260/serial_scc.c index 4ab6a2864..ab7755824 100644 --- a/arch/powerpc/cpu/mpc8260/serial_scc.c +++ b/arch/powerpc/cpu/mpc8260/serial_scc.c @@ -31,6 +31,8 @@  #include <common.h>  #include <mpc8260.h>  #include <asm/cpm_8260.h> +#include <serial.h> +#include <linux/compiler.h>  DECLARE_GLOBAL_DATA_PTR; @@ -82,7 +84,7 @@ DECLARE_GLOBAL_DATA_PTR;  #endif -int serial_init (void) +static int mpc8260_scc_serial_init(void)  {  	volatile immap_t *im = (immap_t *)CONFIG_SYS_IMMR;  	volatile scc_t *sp; @@ -180,8 +182,7 @@ int serial_init (void)  	return (0);  } -void -serial_setbrg (void) +static void mpc8260_scc_serial_setbrg(void)  {  #if defined(CONFIG_CONS_USE_EXTC)  	m8260_cpm_extcbrg(SCC_INDEX, gd->baudrate, @@ -191,8 +192,7 @@ serial_setbrg (void)  #endif  } -void -serial_putc(const char c) +static void mpc8260_scc_serial_putc(const char c)  {  	volatile scc_uart_t	*up;  	volatile cbd_t		*tbdf; @@ -217,16 +217,14 @@ serial_putc(const char c)  	tbdf->cbd_sc |= BD_SC_READY;  } -void -serial_puts (const char *s) +static void mpc8260_scc_serial_puts(const char *s)  {  	while (*s) {  		serial_putc (*s++);  	}  } -int -serial_getc(void) +static int mpc8260_scc_serial_getc(void)  {  	volatile cbd_t		*rbdf;  	volatile scc_uart_t	*up; @@ -250,8 +248,7 @@ serial_getc(void)  	return (c);  } -int -serial_tstc() +static int mpc8260_scc_serial_tstc(void)  {  	volatile cbd_t		*rbdf;  	volatile scc_uart_t	*up; @@ -264,6 +261,26 @@ serial_tstc()  	return ((rbdf->cbd_sc & BD_SC_EMPTY) == 0);  } +static struct serial_device mpc8260_scc_serial_drv = { +	.name	= "mpc8260_scc_uart", +	.start	= mpc8260_scc_serial_init, +	.stop	= NULL, +	.setbrg	= mpc8260_scc_serial_setbrg, +	.putc	= mpc8260_scc_serial_putc, +	.puts	= mpc8260_scc_serial_puts, +	.getc	= mpc8260_scc_serial_getc, +	.tstc	= mpc8260_scc_serial_tstc, +}; + +void mpc8260_scc_serial_initialize(void) +{ +	serial_register(&mpc8260_scc_serial_drv); +} + +__weak struct serial_device *default_serial_console(void) +{ +	return &mpc8260_scc_serial_drv; +}  #endif	/* CONFIG_CONS_ON_SCC */  #if defined(CONFIG_KGDB_ON_SCC)  |