diff options
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/cpu/leon2/serial.c | 51 | ||||
-rw-r--r-- | arch/sparc/cpu/leon3/serial.c | 51 | ||||
-rw-r--r-- | arch/sparc/cpu/leon3/usb_uhci.c | 4 | ||||
-rw-r--r-- | arch/sparc/lib/bootm.c | 2 |
4 files changed, 77 insertions, 31 deletions
diff --git a/arch/sparc/cpu/leon2/serial.c b/arch/sparc/cpu/leon2/serial.c index 4f41b8e6aa3..16fffb621dd 100644 --- a/arch/sparc/cpu/leon2/serial.c +++ b/arch/sparc/cpu/leon2/serial.c @@ -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,24 @@ void serial_setbrg(void) regs->UART_Scaler = scaler; } } + +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; +} diff --git a/arch/sparc/cpu/leon3/serial.c b/arch/sparc/cpu/leon3/serial.c index 4b2fcb8667c..c4f3ee83c33 100644 --- a/arch/sparc/cpu/leon3/serial.c +++ b/arch/sparc/cpu/leon3/serial.c @@ -27,6 +27,8 @@ #include <asm/processor.h> #include <asm/leon.h> #include <ambapp.h> +#include <serial.h> +#include <linux/compiler.h> DECLARE_GLOBAL_DATA_PTR; @@ -42,7 +44,7 @@ DECLARE_GLOBAL_DATA_PTR; ambapp_dev_apbuart *leon3_apbuart = NULL; -int serial_init(void) +static int leon3_serial_init(void) { ambapp_apbdev apbdev; unsigned int tmp; @@ -72,15 +74,7 @@ int serial_init(void) return -1; /* didn't find hardware */ } -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 leon3_serial_putc_raw(const char c) { if (!leon3_apbuart) return; @@ -97,14 +91,22 @@ void serial_putc_raw(const char c) #endif } -void serial_puts(const char *s) +static void leon3_serial_putc(const char c) +{ + if (c == '\n') + leon3_serial_putc_raw('\r'); + + leon3_serial_putc_raw(c); +} + +static void leon3_serial_puts(const char *s) { while (*s) { serial_putc(*s++); } } -int serial_getc(void) +static int leon3_serial_getc(void) { if (!leon3_apbuart) return 0; @@ -116,7 +118,7 @@ int serial_getc(void) return READ_WORD(leon3_apbuart->data); } -int serial_tstc(void) +static int leon3_serial_tstc(void) { if (leon3_apbuart) return (READ_WORD(leon3_apbuart->status) & @@ -125,7 +127,7 @@ int serial_tstc(void) } /* set baud rate for uart */ -void serial_setbrg(void) +static void leon3_serial_setbrg(void) { /* update baud rate settings, read it from gd->baudrate */ unsigned int scaler; @@ -137,3 +139,24 @@ void serial_setbrg(void) } return; } + +static struct serial_device leon3_serial_drv = { + .name = "leon3_serial", + .start = leon3_serial_init, + .stop = NULL, + .setbrg = leon3_serial_setbrg, + .putc = leon3_serial_putc, + .puts = leon3_serial_puts, + .getc = leon3_serial_getc, + .tstc = leon3_serial_tstc, +}; + +void leon3_serial_initialize(void) +{ + serial_register(&leon3_serial_drv); +} + +__weak struct serial_device *default_serial_console(void) +{ + return &leon3_serial_drv; +} diff --git a/arch/sparc/cpu/leon3/usb_uhci.c b/arch/sparc/cpu/leon3/usb_uhci.c index 62cc25dc929..b3b8a4d0bbe 100644 --- a/arch/sparc/cpu/leon3/usb_uhci.c +++ b/arch/sparc/cpu/leon3/usb_uhci.c @@ -706,7 +706,7 @@ void handle_usb_interrupt(void) /* init uhci */ -int usb_lowlevel_init(void) +int usb_lowlevel_init(int index, void **controller) { unsigned char temp; ambapp_ahbdev ahbdev; @@ -745,7 +745,7 @@ int usb_lowlevel_init(void) /* stop uhci */ -int usb_lowlevel_stop(void) +int usb_lowlevel_stop(int index) { if (grusb_irq == -1) return 1; diff --git a/arch/sparc/lib/bootm.c b/arch/sparc/lib/bootm.c index e5b933d1d6b..bcc63584bfe 100644 --- a/arch/sparc/lib/bootm.c +++ b/arch/sparc/lib/bootm.c @@ -36,7 +36,7 @@ extern void srmmu_init_cpu(unsigned int entry); extern void prepare_bootargs(char *bootargs); #ifdef CONFIG_USB_UHCI -extern int usb_lowlevel_stop(void); +extern int usb_lowlevel_stop(int index); #endif /* sparc kernel argument (the ROM vector) */ |