summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2007-09-06 13:23:43 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2007-09-06 13:23:43 +0000
commit344ba65adb886658a9208fa5e4b8f4e5c6da985a (patch)
treedf95c2826341cca088b96d9aebcea15b4e483f80 /c
parent2007-09-06 Daniel Hellstrom <daniel@gaisler.com> (diff)
downloadrtems-344ba65adb886658a9208fa5e4b8f4e5c6da985a.tar.bz2
2007-09-06 Daniel Hellstrom <daniel@gaisler.com>
* Makefile.am, preinstall.am: New files, split of printk. * console/console.c, console/debugputs.c: Split printk support out. * include/spacewire.h: Removed. * Makefile.am, preinstall.am: Use the following new drivers from sparc/shared: PCI, b1553BRM, SpaceWire(GRSPW), CAN (GRCAN), Raw UART.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/sparc/leon3/ChangeLog8
-rw-r--r--c/src/lib/libbsp/sparc/leon3/Makefile.am50
-rw-r--r--c/src/lib/libbsp/sparc/leon3/console/console.c18
-rw-r--r--c/src/lib/libbsp/sparc/leon3/console/debugputs.c19
-rw-r--r--c/src/lib/libbsp/sparc/leon3/include/spacewire.h186
-rw-r--r--c/src/lib/libbsp/sparc/leon3/preinstall.am60
6 files changed, 128 insertions, 213 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/ChangeLog b/c/src/lib/libbsp/sparc/leon3/ChangeLog
index 6306c90f64..ef6e775e4e 100644
--- a/c/src/lib/libbsp/sparc/leon3/ChangeLog
+++ b/c/src/lib/libbsp/sparc/leon3/ChangeLog
@@ -1,5 +1,13 @@
2007-09-06 Daniel Hellstrom <daniel@gaisler.com>
+ * Makefile.am, preinstall.am: New files, split of printk.
+ * console/console.c, console/debugputs.c: Split printk support out.
+ * include/spacewire.h: Removed.
+ * Makefile.am, preinstall.am: Use the following new drivers from
+ sparc/shared: PCI, b1553BRM, SpaceWire(GRSPW), CAN (GRCAN), Raw UART.
+
+2007-09-06 Daniel Hellstrom <daniel@gaisler.com>
+
* console/debugputs.c: Now works on multi-CPU systems.
2007-09-05 Daniel Hellstrom <daniel@gaisler.com>
diff --git a/c/src/lib/libbsp/sparc/leon3/Makefile.am b/c/src/lib/libbsp/sparc/leon3/Makefile.am
index bbf4c7d3d2..8ae545780a 100644
--- a/c/src/lib/libbsp/sparc/leon3/Makefile.am
+++ b/c/src/lib/libbsp/sparc/leon3/Makefile.am
@@ -11,6 +11,7 @@ dist_project_lib_DATA = bsp_specs
include_HEADERS = include/bsp.h
include_HEADERS += include/tm27.h
+include_HEADERS += ../../sparc/shared/include/debug_defs.h
nodist_include_HEADERS = include/bspopts.h
DISTCLEANFILES = include/bspopts.h
@@ -23,7 +24,6 @@ SUBDIRS = . tools
include_HEADERS += include/leon.h
include_HEADERS += include/coverhd.h
-include_HEADERS += include/spacewire.h
EXTRA_DIST = ../../sparc/shared/start.S
start.$(OBJEXT): ../../sparc/shared/start.S
@@ -55,16 +55,56 @@ amba_rel_CPPFLAGS = $(AM_CPPFLAGS)
amba_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
noinst_PROGRAMS += console.rel
-console_rel_SOURCES = console/console.c console/consolereserveresources.c \
- console/debugputs.c
+console_rel_SOURCES = console/console.c console/consolereserveresources.c
console_rel_CPPFLAGS = $(AM_CPPFLAGS)
console_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+noinst_PROGRAMS += debugio.rel
+debugio_rel_SOURCES = console/debugputs.c
+debugio_rel_CPPFLAGS = $(AM_CPPFLAGS)
+debugio_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
noinst_PROGRAMS += clock.rel
clock_rel_SOURCES = clock/ckinit.c
clock_rel_CPPFLAGS = $(AM_CPPFLAGS)
clock_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+# PCI
+include_HEADERS += ../../sparc/shared/include/pci.h
+noinst_PROGRAMS += pci.rel
+pci_rel_SOURCES = pci/pci.c ../../sparc/shared/pci/pcifinddevice.c
+pci_rel_CPPFLAGS = $(AM_CPPFLAGS)
+pci_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+# B1553BRM
+include_HEADERS += ../../sparc/shared/include/b1553brm.h ../../sparc/shared/include/b1553brm_pci.h
+noinst_PROGRAMS += brm.rel
+brm_rel_SOURCES = ../../sparc/shared/1553/b1553brm.c ../../sparc/shared/1553/b1553brm_pci.c
+brm_rel_CPPFLAGS = $(AM_CPPFLAGS)
+brm_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+# CAN
+include_HEADERS += ../../sparc/shared/include/occan.h ../../sparc/shared/include/occan_pci.h ../../sparc/shared/include/grcan.h
+noinst_PROGRAMS += can.rel
+can_rel_SOURCES = ../../sparc/shared/can/occan.c ../../sparc/shared/can/occan_pci.c ../../sparc/shared/can/grcan.c
+can_rel_CPPFLAGS = $(AM_CPPFLAGS)
+can_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+# SpaceWire
+include_HEADERS += ../../sparc/shared/include/grspw.h ../../sparc/shared/include/grspw_pci.h
+noinst_PROGRAMS += spw.rel
+spw_rel_SOURCES = ../../sparc/shared/spw/grspw.c ../../sparc/shared/spw/grspw_pci.c
+spw_rel_CPPFLAGS = $(AM_CPPFLAGS)
+spw_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+# UART
+include_HEADERS += ../../sparc/shared/include/apbuart.h ../../sparc/shared/include/apbuart_pci.h
+noinst_PROGRAMS += uart.rel
+uart_rel_SOURCES = ../../sparc/shared/uart/apbuart.c ../../sparc/shared/uart/apbuart_pci.c
+uart_rel_CPPFLAGS = $(AM_CPPFLAGS)
+uart_rel_LDFLAGS = $(RTEMS_RELLDFLAGS)
+
+
if HAS_NETWORKING
noinst_PROGRAMS += leon_smc91111.rel
leon_smc91111_rel_SOURCES = leon_smc91111/leon_smc91111.c
@@ -96,8 +136,8 @@ endif
noinst_LIBRARIES = libbsp.a
libbsp_a_SOURCES =
-libbsp_a_LIBADD = startup.rel amba.rel console.rel clock.rel timer.rel \
- gnatsupp.rel
+libbsp_a_LIBADD = startup.rel amba.rel console.rel clock.rel debugio.rel \
+ timer.rel gnatsupp.rel brm.rel can.rel spw.rel uart.rel pci.rel
if HAS_NETWORKING
libbsp_a_LIBADD += leon_open_eth.rel
diff --git a/c/src/lib/libbsp/sparc/leon3/console/console.c b/c/src/lib/libbsp/sparc/leon3/console/console.c
index 01209503f8..bf59ddd018 100644
--- a/c/src/lib/libbsp/sparc/leon3/console/console.c
+++ b/c/src/lib/libbsp/sparc/leon3/console/console.c
@@ -227,21 +227,3 @@ rtems_device_driver console_control(
return rtems_termios_ioctl (arg);
}
-/* putchar/getchar for printk */
-
-static void bsp_out_char(char c)
-{
- console_outbyte_polled(0, c);
-}
-
-BSP_output_char_function_type BSP_output_char = bsp_out_char;
-
-static char bsp_in_char(void)
-{
- int tmp;
-
- while ((tmp = console_inbyte_nonblocking(0)) < 0);
- return (char) tmp;
-}
-
-BSP_polling_getchar_function_type BSP_poll_char = bsp_in_char;
diff --git a/c/src/lib/libbsp/sparc/leon3/console/debugputs.c b/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
index b9cfeaef78..255867bc95 100644
--- a/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
+++ b/c/src/lib/libbsp/sparc/leon3/console/debugputs.c
@@ -69,3 +69,22 @@ int console_inbyte_nonblocking( int port )
return -1;
}
+
+/* putchar/getchar for printk */
+
+static void bsp_out_char(char c)
+{
+ console_outbyte_polled(0, c);
+}
+
+BSP_output_char_function_type BSP_output_char = bsp_out_char;
+
+static char bsp_in_char(void)
+{
+ int tmp;
+
+ while ((tmp = console_inbyte_nonblocking(0)) < 0);
+ return (char) tmp;
+}
+
+BSP_polling_getchar_function_type BSP_poll_char = bsp_in_char;
diff --git a/c/src/lib/libbsp/sparc/leon3/include/spacewire.h b/c/src/lib/libbsp/sparc/leon3/include/spacewire.h
deleted file mode 100644
index 516cc93772..0000000000
--- a/c/src/lib/libbsp/sparc/leon3/include/spacewire.h
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Macros used for Spacewire bus
- *
- * COPYRIGHT (c) 2004.
- * Gaisler Research
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#ifndef __SPACEWIRE_h
-#define __SPACEWIRE_h
-
-typedef struct {
- volatile unsigned int ctrl;
- volatile unsigned int status;
- volatile unsigned int nodeaddr;
- volatile unsigned int clockdiv;
- volatile unsigned int destkey;
- volatile unsigned int pad1,pad2,pad3;
-
- volatile unsigned int dma0ctrl; /* 0x20 */
- volatile unsigned int dma0rxmax;
- volatile unsigned int dma0txdesc;
- volatile unsigned int dma0rxdesc;
-} LEON3_SPACEWIRE_Regs_Map;
-
-typedef struct {
- volatile unsigned int ctrl;
- volatile unsigned int addr;
-} SPACEWIRE_RXBD;
-
-typedef struct {
- volatile unsigned int ctrl;
- volatile unsigned int addr_header;
- volatile unsigned int len;
- volatile unsigned int addr_data;
-} SPACEWIRE_TXBD;
-
-#define SPACEWIRE_BDTABLE_SIZE 0x400
-#define SPACEWIRE_TXPCK_SIZE 1024
-#define SPACEWIRE_RXPCK_SIZE 1024
-#define SPACEWIRE_TXBUFS_NR 1
-#define SPACEWIRE_RXBUFS_NR 2
-#define SPW_BUFMALLOC 1
-
-#define SPW_ALIGN(p,c) ((((unsigned int)(p))+((c)-1))&~((c)-1))
-
-int spacewire_setattibutes(int minor, int nodeaddr, int proto, int dest);
-
-typedef struct {
- unsigned int nodeaddr;
- unsigned int destnodeaddr;
- unsigned int proto;
- unsigned int destkey;
- unsigned int maxfreq;
- unsigned int clkdiv;
- unsigned int rxmaxlen;
-
- unsigned int is_rmap,is_rxunaligned,is_rmapcrc;
-
- unsigned int txcur,rxcur,rxbufcur;
- unsigned int txbufsize,rxbufsize;
- unsigned int txbufcnt,rxbufcnt;
- char *ptr_rxbuf0,*ptr_txbuf0;
- unsigned int irq;
-
- SPACEWIRE_RXBD *rx;
- SPACEWIRE_TXBD *tx;
-
- char _rxtable[SPACEWIRE_BDTABLE_SIZE*2];
- char _txtable[SPACEWIRE_BDTABLE_SIZE*2];
-
-#ifndef SPW_BUFMALLOC
- char _rxbuf0[SPACEWIRE_RXPCK_SIZE*SPACEWIRE_RXBUFS_NR];
- char _txbuf0[SPACEWIRE_TXPCK_SIZE*SPACEWIRE_TXBUFS_NR];
-#endif
-
- volatile LEON3_SPACEWIRE_Regs_Map *regs;
-} SPACEWIRE_PARAM;
-
-int _SPW_READ(void *addr);
-#define SPW_READ(addr) _SPW_READ((void *)(addr))
-#define SPW_WRITE(addr,v) *addr=v
-
-#define SPACEWIRE_MAX_CORENR 2
-extern SPACEWIRE_PARAM LEON3_Spacewire[SPACEWIRE_MAX_CORENR];
-
-#define SPW_PARAM(c) (LEON3_Spacewire[c])
-#define SPW_REG(c,r) (SPW_PARAM(c).regs->r)
-#define SPW_REG_CTRL(c) SPW_REG(c,ctrl)
-#define SPW_REG_STATUS(c) SPW_REG(c,status)
-#define SPW_REG_NODEADDR(c) SPW_REG(c,nodeaddr)
-
-#define SPW_CTRL_READ(c) SPW_READ(&SPW_REG_CTRL(c))
-#define SPW_CTRL_WRITE(c,v) SPW_WRITE(&SPW_REG_CTRL(c),v)
-#define SPW_STATUS_READ(c) SPW_READ(&SPW_REG_STATUS(c))
-#define SPW_STATUS_WRITE(c,v) SPW_WRITE(&SPW_REG_STATUS(c),v)
-
-#define SPW_LINKSTATE(c) (((c) >> 21) & 0x7)
-
-#define SPW_NODEADDR_READ(c) SPW_BYPASSCACHE(&SPW_NODEADDR(c))
-#define SPW_NODEADDR_WRITE(c,v) SPW_NODEADDR(c) = v
-
-#define SPACEWIRE_RXNR(c) ((c&~(SPACEWIRE_BDTABLE_SIZE-1))>>3)
-#define SPACEWIRE_TXNR(c) ((c&~(SPACEWIRE_BDTABLE_SIZE-1))>>4)
-
-#define SPACEWIRE_RXBD_LENGTH 0x1ffffff
-#define SPACEWIRE_RXBD_EN (1<<25)
-#define SPACEWIRE_RXBD_WR (1<<26)
-#define SPACEWIRE_RXBD_IE (1<<27)
-
-#define SPACEWIRE_RXBD_EEP (1<<28)
-#define SPACEWIRE_RXBD_EHC (1<<29)
-#define SPACEWIRE_RXBD_EDC (1<<30)
-#define SPACEWIRE_RXBD_ETR (1<<31)
-
-#define SPACEWIRE_RXBD_ERROR (SPACEWIRE_RXBD_EEP | \
- SPACEWIRE_RXBD_EHC | \
- SPACEWIRE_RXBD_EDC | \
- SPACEWIRE_RXBD_ETR)
-
-#define SPACEWIRE_RXBD_RMAPERROR (SPACEWIRE_RXBD_EHC | SPACEWIRE_RXBD_EDC)
-
-#define SPACEWIRE_RXBD_LENGTH(c) ((c)&0xffffff)
-#define SPACEWIRE_PCKHEAD 2
-
-#define SPACEWIRE_TXBD_LENGTH 0xffffff
-
-#define SPACEWIRE_TXBD_EN (1<<12)
-#define SPACEWIRE_TXBD_WR (1<<13)
-#define SPACEWIRE_TXBD_IE (1<<14)
-
-#define SPACEWIRE_TXBD_LE (1<<15)
-
-#define SPACEWIRE_TXBD_ERROR (SPACEWIRE_TXBD_LE)
-
-#define SPACEWIRE_CTRL_RA (1<<31)
-#define SPACEWIRE_CTRL_RX (1<<30)
-#define SPACEWIRE_CTRL_RC (1<<29)
-
-#define SPACEWIRE_CTRL_RESET (1<<6)
-#define SPACEWIRE_CTRL_LINKSTART (1<<1)
-#define SPACEWIRE_CTRL_LINKDISABLE (1<<0)
-
-#define SPACEWIRE_DMACTRL_TXEN (1<<0)
-#define SPACEWIRE_DMACTRL_RXEN (1<<1)
-#define SPACEWIRE_DMACTRL_TXIE (1<<2)
-#define SPACEWIRE_DMACTRL_RXIE (1<<3)
-
-#define SPACEWIRE_DMACTRL_AI (1<<4)
-#define SPACEWIRE_DMACTRL_PS (1<<5)
-#define SPACEWIRE_DMACTRL_PR (1<<6)
-#define SPACEWIRE_DMACTRL_TA (1<<7)
-#define SPACEWIRE_DMACTRL_RA (1<<8)
-
-#define SPACEWIRE_DMACTRL_RD (1<<11)
-#define SPACEWIRE_DMACTRL_NS (1<<12)
-
-#define SPACEWIRE_PREPAREMASK_TX (SPACEWIRE_DMACTRL_RXEN | SPACEWIRE_DMACTRL_RXIE | SPACEWIRE_DMACTRL_PS | SPACEWIRE_DMACTRL_TA | SPACEWIRE_DMACTRL_RD)
-#define SPACEWIRE_PREPAREMASK_RX (SPACEWIRE_DMACTRL_TXEN | SPACEWIRE_DMACTRL_TXIE | SPACEWIRE_DMACTRL_AI | SPACEWIRE_DMACTRL_PR | SPACEWIRE_DMACTRL_RA)
-
-
-#define SPACEWIRE_IOCTRL_SET_NODEADDR 1
-#define SPACEWIRE_IOCTRL_SET_PROTOCOL 2
-#define SPACEWIRE_IOCTRL_SET_DESTNODEADDR 3
-#define SPACEWIRE_IOCTRL_GET_COREBASEADDR 4
-#define SPACEWIRE_IOCTRL_GET_COREIRQ 5
-#define SPACEWIRE_IOCTRL_SET_PACKETSIZE 6
-#define SPACEWIRE_IOCTRL_GETPACKET 7
-#define SPACEWIRE_IOCTRL_PUTPACKET 8
-
-typedef struct {
- unsigned int txsize, rxsize;
-} spw_ioctl_packetsize;
-
-typedef struct {
- char *buf;
- int buf_size;
- int ret_size;
-} spw_ioctl_packet;
-
-#endif
diff --git a/c/src/lib/libbsp/sparc/leon3/preinstall.am b/c/src/lib/libbsp/sparc/leon3/preinstall.am
index ccbc9a705b..614feec132 100644
--- a/c/src/lib/libbsp/sparc/leon3/preinstall.am
+++ b/c/src/lib/libbsp/sparc/leon3/preinstall.am
@@ -52,10 +52,6 @@ $(PROJECT_INCLUDE)/coverhd.h: include/coverhd.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/coverhd.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/coverhd.h
-$(PROJECT_INCLUDE)/spacewire.h: include/spacewire.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/spacewire.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/spacewire.h
-
$(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT)
TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT)
@@ -72,3 +68,59 @@ PREINSTALL_FILES += $(PROJECT_INCLUDE)/amba.h
$(PROJECT_INCLUDE)/ambapp.h: ../../sparc/shared/include/ambapp.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/ambapp.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/ambapp.h
+
+
+# PCI
+$(PROJECT_INCLUDE)/pci.h: ../../sparc/shared/include/pci.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/pci.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/pci.h
+
+
+# DEBUG
+$(PROJECT_INCLUDE)/debug_defs.h: ../../sparc/shared/include/debug_defs.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/debug_defs.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/debug_defs.h
+
+
+# SpaceWire
+$(PROJECT_INCLUDE)/grspw.h: ../../sparc/shared/include/grspw.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/grspw.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/grspw.h
+
+$(PROJECT_INCLUDE)/grspw_pci.h: ../../sparc/shared/include/grspw_pci.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/grspw_pci.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/grspw_pci.h
+
+
+# B1553BRM
+$(PROJECT_INCLUDE)/b1553brm_pci.h: ../../sparc/shared/include/b1553brm_pci.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/b1553brm_pci.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/b1553brm_pci.h
+
+$(PROJECT_INCLUDE)/b1553brm.h: ../../sparc/shared/include/b1553brm.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/b1553brm.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/b1553brm.h
+
+
+# CAN
+$(PROJECT_INCLUDE)/occan.h: ../../sparc/shared/include/occan.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/occan.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/occan.h
+
+$(PROJECT_INCLUDE)/occan_pci.h: ../../sparc/shared/include/occan_pci.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/occan_pci.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/occan_pci.h
+
+$(PROJECT_INCLUDE)/grcan.h: ../../sparc/shared/include/grcan.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/grcan.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/grcan.h
+
+
+# UART
+$(PROJECT_INCLUDE)/apbuart.h: ../../sparc/shared/include/apbuart.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/apbuart.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/apbuart.h
+
+$(PROJECT_INCLUDE)/apbuart_pci.h: ../../sparc/shared/include/apbuart_pci.h $(PROJECT_INCLUDE)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/apbuart_pci.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/apbuart_pci.h