diff options
Diffstat (limited to 'drivers/serial/serial_max3100.c')
| -rw-r--r-- | drivers/serial/serial_max3100.c | 72 | 
1 files changed, 58 insertions, 14 deletions
| diff --git a/drivers/serial/serial_max3100.c b/drivers/serial/serial_max3100.c index 4abc27109..b21fba069 100644 --- a/drivers/serial/serial_max3100.c +++ b/drivers/serial/serial_max3100.c @@ -25,6 +25,8 @@  #include <common.h>  #include <watchdog.h> +#include <serial.h> +#include <linux/compiler.h>  DECLARE_GLOBAL_DATA_PTR; @@ -149,7 +151,7 @@ static int rxfifo_in;  static int rxfifo_out;  static unsigned char rxfifo_buf[16]; -static void max3100_putc(int c) +static void max3100_serial_putc_raw(int c)  {  	unsigned int rx; @@ -164,7 +166,7 @@ static void max3100_putc(int c)  	}  } -static int max3100_getc(void) +static int max3100_serial_getc(void)  {  	int c;  	unsigned int rx; @@ -190,7 +192,7 @@ static int max3100_getc(void)  	return c;  } -static int max3100_tstc(void) +static int max3100_serial_tstc(void)  {  	unsigned int rx; @@ -213,7 +215,7 @@ static int max3100_tstc(void)  	return 1;  } -int serial_init(void) +static int max3100_serial_init(void)  {  	unsigned int wconf, rconf;  	int i; @@ -268,31 +270,73 @@ int serial_init(void)  	return (0);  } -void serial_putc(const char c) +static void max3100_serial_putc(const char c)  {  	if (c == '\n') -		max3100_putc('\r'); +		max3100_serial_putc_raw('\r'); -	max3100_putc(c); +	max3100_serial_putc_raw(c);  } -void serial_puts(const char *s) +static void max3100_serial_puts(const char *s)  {  	while (*s) -		serial_putc (*s++); +		max3100_serial_putc_raw(*s++);  } -int serial_getc(void) +static void max3100_serial_setbrg(void)  { -	return max3100_getc();  } -int serial_tstc(void) +#ifdef CONFIG_SERIAL_MULTI +static struct serial_device max3100_serial_drv = { +	.name	= "max3100_serial", +	.start	= max3100_serial_init, +	.stop	= NULL, +	.setbrg	= max3100_serial_setbrg, +	.putc	= max3100_serial_putc, +	.puts	= max3100_serial_puts, +	.getc	= max3100_serial_getc, +	.tstc	= max3100_serial_tstc, +}; + +void max3100_serial_initialize(void) +{ +	serial_register(&max3100_serial_drv); +} + +__weak struct serial_device *default_serial_console(void)  { -	return max3100_tstc(); +	return &max3100_serial_drv; +} +#else +int serial_init(void) +{ +	return max3100_serial_init();  } -/* XXX WTF? */  void serial_setbrg(void)  { +	max3100_serial_setbrg(); +} + +void serial_putc(const char c) +{ +	max3100_serial_putc(c); +} + +void serial_puts(const char *s) +{ +	max3100_serial_puts(s); +} + +int serial_getc(void) +{ +	return max3100_serial_getc(); +} + +int serial_tstc(void) +{ +	return max3100_serial_tstc();  } +#endif |