nios2: Move serial drivers to individual files in drivers/serial
The standard Altera UART & JTAG UART as well as the OpenCores YANU driver are now in individual files in drivers/serial rather than a single file uner cpu/nios2. Signed-off-by: Scott McNutt <smcnutt@psyent.com>
This commit is contained in:
parent
ffa37fc98d
commit
c9d4f46b5d
@ -27,7 +27,7 @@ LIB = $(obj)lib$(CPU).a
|
||||
|
||||
START = start.o
|
||||
SOBJS = exceptions.o
|
||||
COBJS = cpu.o interrupts.o serial.o sysid.o traps.o epcs.o
|
||||
COBJS = cpu.o interrupts.o sysid.o traps.o epcs.o
|
||||
|
||||
SRCS := $(START:.o=.S) $(SOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS))
|
||||
|
@ -25,11 +25,14 @@ include $(TOPDIR)/config.mk
|
||||
|
||||
LIB := $(obj)libserial.a
|
||||
|
||||
COBJS-$(CONFIG_ALTERA_UART) += altera_uart.o
|
||||
COBJS-$(CONFIG_ALTERA_JTAG_UART) += altera_jtag_uart.o
|
||||
COBJS-$(CONFIG_ARM_DCC) += arm_dcc.o
|
||||
COBJS-$(CONFIG_AT91RM9200_USART) += at91rm9200_usart.o
|
||||
COBJS-$(CONFIG_ATMEL_USART) += atmel_usart.o
|
||||
COBJS-$(CONFIG_MCFUART) += mcfuart.o
|
||||
COBJS-$(CONFIG_NS9750_UART) += ns9750_serial.o
|
||||
COBJS-$(CONFIG_OPENCORES_YANU) += opencores_yanu.o
|
||||
COBJS-$(CONFIG_SYS_NS16550) += ns16550.o
|
||||
COBJS-$(CONFIG_DRIVER_S3C4510_UART) += s3c4510b_uart.o
|
||||
COBJS-$(CONFIG_S3C64XX) += s3c64xx.o
|
||||
|
70
drivers/serial/altera_jtag_uart.c
Normal file
70
drivers/serial/altera_jtag_uart.c
Normal file
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* (C) Copyright 2004, Psyent Corporation <www.psyent.com>
|
||||
* Scott McNutt <smcnutt@psyent.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <watchdog.h>
|
||||
#include <asm/io.h>
|
||||
#include <nios2-io.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
/*------------------------------------------------------------------
|
||||
* JTAG acts as the serial port
|
||||
*-----------------------------------------------------------------*/
|
||||
static nios_jtag_t *jtag = (nios_jtag_t *)CONFIG_SYS_NIOS_CONSOLE;
|
||||
|
||||
void serial_setbrg( void ){ return; }
|
||||
int serial_init( void ) { return(0);}
|
||||
|
||||
void serial_putc (char c)
|
||||
{
|
||||
while (NIOS_JTAG_WSPACE ( readl (&jtag->control)) == 0)
|
||||
WATCHDOG_RESET ();
|
||||
writel (&jtag->data, (unsigned char)c);
|
||||
}
|
||||
|
||||
void serial_puts (const char *s)
|
||||
{
|
||||
while (*s != 0)
|
||||
serial_putc (*s++);
|
||||
}
|
||||
|
||||
int serial_tstc (void)
|
||||
{
|
||||
return ( readl (&jtag->control) & NIOS_JTAG_RRDY);
|
||||
}
|
||||
|
||||
int serial_getc (void)
|
||||
{
|
||||
int c;
|
||||
unsigned val;
|
||||
|
||||
while (1) {
|
||||
WATCHDOG_RESET ();
|
||||
val = readl (&jtag->data);
|
||||
if (val & NIOS_JTAG_RVALID)
|
||||
break;
|
||||
}
|
||||
c = val & 0x0ff;
|
||||
return (c);
|
||||
}
|
94
drivers/serial/altera_uart.c
Normal file
94
drivers/serial/altera_uart.c
Normal file
@ -0,0 +1,94 @@
|
||||
/*
|
||||
* (C) Copyright 2004, Psyent Corporation <www.psyent.com>
|
||||
* Scott McNutt <smcnutt@psyent.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#include <common.h>
|
||||
#include <watchdog.h>
|
||||
#include <asm/io.h>
|
||||
#include <nios2-io.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
/*------------------------------------------------------------------
|
||||
* UART the serial port
|
||||
*-----------------------------------------------------------------*/
|
||||
|
||||
static nios_uart_t *uart = (nios_uart_t *) CONFIG_SYS_NIOS_CONSOLE;
|
||||
|
||||
#if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
|
||||
|
||||
/* Everything's already setup for fixed-baud PTF
|
||||
* assignment
|
||||
*/
|
||||
void serial_setbrg (void){ return; }
|
||||
int serial_init (void) { return (0);}
|
||||
|
||||
#else
|
||||
|
||||
void serial_setbrg (void)
|
||||
{
|
||||
unsigned div;
|
||||
|
||||
div = (CONFIG_SYS_CLK_FREQ/gd->baudrate)-1;
|
||||
writel (&uart->divisor,div);
|
||||
return;
|
||||
}
|
||||
|
||||
int serial_init (void)
|
||||
{
|
||||
serial_setbrg ();
|
||||
return (0);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SYS_NIOS_FIXEDBAUD */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* UART CONSOLE
|
||||
*---------------------------------------------------------------------*/
|
||||
void serial_putc (char c)
|
||||
{
|
||||
if (c == '\n')
|
||||
serial_putc ('\r');
|
||||
while ((readl (&uart->status) & NIOS_UART_TRDY) == 0)
|
||||
WATCHDOG_RESET ();
|
||||
writel (&uart->txdata,(unsigned char)c);
|
||||
}
|
||||
|
||||
void serial_puts (const char *s)
|
||||
{
|
||||
while (*s != 0) {
|
||||
serial_putc (*s++);
|
||||
}
|
||||
}
|
||||
|
||||
int serial_tstc (void)
|
||||
{
|
||||
return (readl (&uart->status) & NIOS_UART_RRDY);
|
||||
}
|
||||
|
||||
int serial_getc (void)
|
||||
{
|
||||
while (serial_tstc () == 0)
|
||||
WATCHDOG_RESET ();
|
||||
return (readl (&uart->rxdata) & 0x00ff );
|
||||
}
|
@ -1,8 +1,4 @@
|
||||
/*
|
||||
* (C) Copyright 2004, Psyent Corporation <www.psyent.com>
|
||||
* Scott McNutt <smcnutt@psyent.com>
|
||||
*
|
||||
* YANU Support:
|
||||
* Copyright 2010, Renato Andreola <renato.andreola@imagos.it>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
@ -24,61 +20,13 @@
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#include <common.h>
|
||||
#include <watchdog.h>
|
||||
#include <asm/io.h>
|
||||
#include <nios2-io.h>
|
||||
#include <nios2-yanu.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
/*------------------------------------------------------------------
|
||||
* JTAG acts as the serial port
|
||||
*-----------------------------------------------------------------*/
|
||||
#if defined(CONFIG_CONSOLE_JTAG)
|
||||
|
||||
static nios_jtag_t *jtag = (nios_jtag_t *)CONFIG_SYS_NIOS_CONSOLE;
|
||||
|
||||
void serial_setbrg( void ){ return; }
|
||||
int serial_init( void ) { return(0);}
|
||||
|
||||
void serial_putc (char c)
|
||||
{
|
||||
unsigned val;
|
||||
|
||||
while (NIOS_JTAG_WSPACE ( readl (&jtag->control)) == 0)
|
||||
WATCHDOG_RESET ();
|
||||
writel (&jtag->data, (unsigned char)c);
|
||||
}
|
||||
|
||||
void serial_puts (const char *s)
|
||||
{
|
||||
while (*s != 0)
|
||||
serial_putc (*s++);
|
||||
}
|
||||
|
||||
int serial_tstc (void)
|
||||
{
|
||||
return ( readl (&jtag->control) & NIOS_JTAG_RRDY);
|
||||
}
|
||||
|
||||
int serial_getc (void)
|
||||
{
|
||||
int c;
|
||||
unsigned val;
|
||||
|
||||
while (1) {
|
||||
WATCHDOG_RESET ();
|
||||
val = readl (&jtag->data);
|
||||
if (val & NIOS_JTAG_RVALID)
|
||||
break;
|
||||
}
|
||||
c = val & 0x0ff;
|
||||
return (c);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_CONSOLE_YANU)
|
||||
/*-----------------------------------------------------------------*/
|
||||
/* YANU Imagos serial port */
|
||||
/*-----------------------------------------------------------------*/
|
||||
@ -238,72 +186,3 @@ int serial_getc (void)
|
||||
|
||||
return(readl(&uart->data) & YANU_DATA_CHAR_MASK);
|
||||
}
|
||||
|
||||
#else /*CONFIG_CONSOLE_YANU*/
|
||||
|
||||
/*------------------------------------------------------------------
|
||||
* UART the serial port
|
||||
*-----------------------------------------------------------------*/
|
||||
|
||||
static nios_uart_t *uart = (nios_uart_t *) CONFIG_SYS_NIOS_CONSOLE;
|
||||
|
||||
#if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
|
||||
|
||||
/* Everything's already setup for fixed-baud PTF
|
||||
* assignment
|
||||
*/
|
||||
void serial_setbrg (void){ return; }
|
||||
int serial_init (void) { return (0);}
|
||||
|
||||
#else
|
||||
|
||||
void serial_setbrg (void)
|
||||
{
|
||||
unsigned div;
|
||||
|
||||
div = (CONFIG_SYS_CLK_FREQ/gd->baudrate)-1;
|
||||
writel (&uart->divisor,div);
|
||||
return;
|
||||
}
|
||||
|
||||
int serial_init (void)
|
||||
{
|
||||
serial_setbrg ();
|
||||
return (0);
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SYS_NIOS_FIXEDBAUD */
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* UART CONSOLE
|
||||
*---------------------------------------------------------------------*/
|
||||
void serial_putc (char c)
|
||||
{
|
||||
if (c == '\n')
|
||||
serial_putc ('\r');
|
||||
while ((readl (&uart->status) & NIOS_UART_TRDY) == 0)
|
||||
WATCHDOG_RESET ();
|
||||
writel (&uart->txdata,(unsigned char)c);
|
||||
}
|
||||
|
||||
void serial_puts (const char *s)
|
||||
{
|
||||
while (*s != 0) {
|
||||
serial_putc (*s++);
|
||||
}
|
||||
}
|
||||
|
||||
int serial_tstc (void)
|
||||
{
|
||||
return (readl (&uart->status) & NIOS_UART_RRDY);
|
||||
}
|
||||
|
||||
int serial_getc (void)
|
||||
{
|
||||
while (serial_tstc () == 0)
|
||||
WATCHDOG_RESET ();
|
||||
return (readl (&uart->rxdata) & 0x00ff );
|
||||
}
|
||||
|
||||
#endif /* CONFIG_JTAG_CONSOLE */
|
@ -94,7 +94,8 @@
|
||||
/*------------------------------------------------------------------------
|
||||
* CONSOLE
|
||||
*----------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_CONSOLE_JTAG)
|
||||
#define CONFIG_ALTERA_UART 1 /* Use altera uart */
|
||||
#if defined(CONFIG_ALTERA_JTAG_UART)
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x021208b0 /* JTAG UART base addr */
|
||||
#else
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x02120840 /* UART base addr */
|
||||
|
@ -92,7 +92,8 @@
|
||||
/*------------------------------------------------------------------------
|
||||
* CONSOLE
|
||||
*----------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_CONSOLE_JTAG)
|
||||
#define CONFIG_ALTERA_UART 1 /* Use altera uart */
|
||||
#if defined(CONFIG_ALTERA_JTAG_UART)
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x021208b0 /* JTAG UART base addr */
|
||||
#else
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x02120840 /* UART base addr */
|
||||
|
@ -92,7 +92,8 @@
|
||||
/*------------------------------------------------------------------------
|
||||
* CONSOLE
|
||||
*----------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_CONSOLE_JTAG)
|
||||
#define CONFIG_ALTERA_UART 1 /* Use altera uart */
|
||||
#if defined(CONFIG_ALTERA_JTAG_UART)
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x021208b0 /* JTAG UART base addr */
|
||||
#else
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x02120840 /* UART base addr */
|
||||
|
@ -92,7 +92,8 @@
|
||||
/*------------------------------------------------------------------------
|
||||
* CONSOLE
|
||||
*----------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_CONSOLE_JTAG)
|
||||
#define CONFIG_ALTERA_UART 1 /* Use altera uart */
|
||||
#if defined(CONFIG_ALTERA_JTAG_UART)
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x00920820 /* JTAG UART base addr */
|
||||
#else
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x009208a0 /* UART base addr */
|
||||
|
@ -94,7 +94,8 @@
|
||||
/*------------------------------------------------------------------------
|
||||
* CONSOLE
|
||||
*----------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_CONSOLE_JTAG)
|
||||
#define CONFIG_ALTERA_UART 1 /* Use altera uart */
|
||||
#if defined(CONFIG_ALTERA_JTAG_UART)
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x021208b0 /* JTAG UART base addr */
|
||||
#else
|
||||
#define CONFIG_SYS_NIOS_CONSOLE 0x02120840 /* UART base addr */
|
||||
|
Loading…
Reference in New Issue
Block a user