]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Initial revision
authorwdenk <wdenk>
Sat, 27 Apr 2002 11:09:31 +0000 (11:09 +0000)
committerwdenk <wdenk>
Sat, 27 Apr 2002 11:09:31 +0000 (11:09 +0000)
examples/Makefile [new file with mode: 0644]
include/ns16550.h [new file with mode: 0644]

diff --git a/examples/Makefile b/examples/Makefile
new file mode 100644 (file)
index 0000000..b7d6f94
--- /dev/null
@@ -0,0 +1,66 @@
+#
+# (C) Copyright 2000
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# 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
+#
+
+LOAD_ADDR = 0x40000
+
+include $(TOPDIR)/config.mk
+
+SREC   = hello_world.srec
+
+# The following example is pretty 8xx specific...
+ifeq ($(CPU),mpc8xx)
+SREC   += timer.srec
+endif
+
+# Utility for resetting i82559 EEPROM
+ifeq ($(BOARD),oxc)
+SREC   += eepro100_eeprom.srec
+endif
+
+OBJS   = $(SREC:.srec=.o)
+
+LIB            = libsyscall.a
+LIBAOBJS= syscall.o
+LIBCOBJS=
+LIBOBJS        = $(LIBAOBJS) $(LIBCOBJS)
+
+CPPFLAGS += -I..
+
+all:   .depend $(LIB) $(SREC)
+
+#########################################################################
+$(LIB): .depend $(LIBOBJS)
+       $(AR) crv $@ $(LIBOBJS)
+
+%.srec:        %.o $(LIB)
+       $(LD) -g -Ttext $(LOAD_ADDR) -o $(<:.o=) -e $(<:.o=) $< $(LIB)
+       $(OBJCOPY) -O srec $(<:.o=) $@
+
+#########################################################################
+
+.depend:       Makefile $(OBJS:.o=.c) $(LIBCOBJS:.o=.c) $(LIBAOBJS:.o=.S)
+               $(CC) -M $(CFLAGS) $(OBJS:.o=.c) $(LIBCOBJS:.o=.c) $(LIBAOBJS:.o=.S) > $@
+
+sinclude .depend
+
+#########################################################################
diff --git a/include/ns16550.h b/include/ns16550.h
new file mode 100644 (file)
index 0000000..b2e791a
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * NS16550 Serial Port
+ * originally from linux source (arch/ppc/boot/ns16550.h)
+ * modified slightly to
+ * have addresses as offsets from CFG_ISA_BASE
+ * added a few more definitions
+ * added prototypes for ns16550.c
+ * reduced no of com ports to 2
+ * modifications (c) Rob Taylor, Flying Pig Systems. 2000.
+ */
+
+#if (CFG_NS16550_REG_SIZE == 1)
+struct NS16550 {
+       unsigned char rbr;              /* 0 */
+       unsigned char ier;              /* 1 */
+       unsigned char fcr;              /* 2 */
+       unsigned char lcr;              /* 3 */
+       unsigned char mcr;              /* 4 */
+       unsigned char lsr;              /* 5 */
+       unsigned char msr;              /* 6 */
+       unsigned char scr;              /* 7 */
+} __attribute__ ((packed));
+#elif (CFG_NS16550_REG_SIZE == 2)
+struct NS16550 {
+       unsigned short rbr;             /* 0 */
+       unsigned short ier;             /* 1 */
+       unsigned short fcr;             /* 2 */
+       unsigned short lcr;             /* 3 */
+       unsigned short mcr;             /* 4 */
+       unsigned short lsr;             /* 5 */
+       unsigned short msr;             /* 6 */
+       unsigned short scr;             /* 7 */
+} __attribute__ ((packed));
+#elif (CFG_NS16550_REG_SIZE == 4)
+struct NS16550 {
+       unsigned long rbr;              /* 0 */
+       unsigned long ier;              /* 1 */
+       unsigned long fcr;              /* 2 */
+       unsigned long lcr;              /* 3 */
+       unsigned long mcr;              /* 4 */
+       unsigned long lsr;              /* 5 */
+       unsigned long msr;              /* 6 */
+       unsigned long scr;              /* 7 */
+} __attribute__ ((packed));
+#elif (CFG_NS16550_REG_SIZE == -4)
+struct NS16550 {
+       unsigned char rbr;              /* 0 */
+       int pad1:24;
+       unsigned char ier;              /* 1 */
+       int pad2:24;
+       unsigned char fcr;              /* 2 */
+       int pad3:24;
+       unsigned char lcr;              /* 3 */
+       int pad4:24;
+       unsigned char mcr;              /* 4 */
+       int pad5:24;
+       unsigned char lsr;              /* 5 */
+       int pad6:24;
+       unsigned char msr;              /* 6 */
+       int pad7:24;
+       unsigned char scr;              /* 7 */
+       int pad8:24;
+} __attribute__ ((packed));
+#else
+#error "Please define NS16550 registers size."
+#endif
+
+#define thr rbr
+#define iir fcr
+#define dll rbr
+#define dlm ier
+
+typedef volatile struct NS16550 *NS16550_t;
+
+#define FCR_FIFO_EN     0x01           /* Fifo enable */
+#define FCR_RXSR        0x02           /* Receiver soft reset */
+#define FCR_TXSR        0x04           /* Transmitter soft reset */
+
+#define MCR_DTR         0x01
+#define MCR_RTS         0x02
+#define MCR_DMA_EN      0x04
+#define MCR_TX_DFR      0x08
+
+#define LCR_WLS_MSK    0x03            /* character length slect mask */
+#define LCR_WLS_5      0x00            /* 5 bit character length */
+#define LCR_WLS_6      0x01            /* 6 bit character length */
+#define LCR_WLS_7      0x02            /* 7 bit character length */
+#define LCR_WLS_8      0x03            /* 8 bit character length */
+#define LCR_STB                0x04            /* Number of stop Bits, off = 1, on = 1.5 or 2) */
+#define LCR_PEN                0x08            /* Parity eneble */
+#define LCR_EPS                0x10            /* Even Parity Select */
+#define LCR_STKP       0x20            /* Stick Parity */
+#define LCR_SBRK       0x40            /* Set Break */
+#define LCR_BKSE       0x80            /* Bank select enable */
+
+#define LSR_DR         0x01            /* Data ready */
+#define LSR_OE         0x02            /* Overrun */
+#define LSR_PE         0x04            /* Parity error */
+#define LSR_FE         0x08            /* Framing error */
+#define LSR_BI         0x10            /* Break */
+#define LSR_THRE       0x20            /* Xmit holding register empty */
+#define LSR_TEMT       0x40            /* Xmitter empty */
+#define LSR_ERR                0x80            /* Error */
+
+/* useful defaults for LCR */
+#define LCR_8N1                0x03
+
+void   NS16550_init   (NS16550_t com_port, int baud_divisor);
+void   NS16550_putc   (NS16550_t com_port, char c);
+char   NS16550_getc   (NS16550_t com_port);
+int    NS16550_tstc   (NS16550_t com_port);
+void   NS16550_reinit (NS16550_t com_port, int baud_divisor);