summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/m68k/genmcf548x
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-12-14 14:57:55 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-12-14 14:57:55 +0000
commit5ea4e632dac1b002f9b155c4a2e0266ac4da8eee (patch)
treed1449d0880509511f1d041c4eefeab7c920b5de2 /c/src/lib/libbsp/m68k/genmcf548x
parentemoved ppc_exc_bspsupp.h include file (diff)
downloadrtems-5ea4e632dac1b002f9b155c4a2e0266ac4da8eee.tar.bz2
get vital data from dBUG monitor for COBRA5475 board
Diffstat (limited to 'c/src/lib/libbsp/m68k/genmcf548x')
-rw-r--r--c/src/lib/libbsp/m68k/genmcf548x/ChangeLog5
-rw-r--r--c/src/lib/libbsp/m68k/genmcf548x/console/console.c8
-rw-r--r--c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h15
-rw-r--r--c/src/lib/libbsp/m68k/genmcf548x/network/network.c11
4 files changed, 37 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog b/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog
index 85fd6b8eb6..680bc3ca04 100644
--- a/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog
+++ b/c/src/lib/libbsp/m68k/genmcf548x/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-14 Thomas Doerfler <Thomas.Doerfler@embedded-brains.de>
+
+ * console/console.c, include/bsp.h, network/network.c: get vital
+ data from dBUG for COBRA5475 board
+
2009-11-03 Ralf Corsépius <ralf.corsepius@rtems.org>
* startup/init548x.c: Comment out junk from end of #endif.
diff --git a/c/src/lib/libbsp/m68k/genmcf548x/console/console.c b/c/src/lib/libbsp/m68k/genmcf548x/console/console.c
index 43b1a96a9f..1cb1a57f9f 100644
--- a/c/src/lib/libbsp/m68k/genmcf548x/console/console.c
+++ b/c/src/lib/libbsp/m68k/genmcf548x/console/console.c
@@ -291,7 +291,11 @@ static int
IntUartSetAttributes(int minor, const struct termios *t)
{
/* set default index values */
+#ifdef HAS_DBUG
+ int baud = DBUG_SETTINGS.console_baudrate;
+#else
int baud = (int)BSP_CONSOLE_BAUD;
+#endif
int databits = (int)MCF548X_PSC_MR_BC_8;
int parity = (int)MCF548X_PSC_MR_PM_NONE;
int stopbits = (int)MCF548X_PSC_MR_SB_STOP_BITS_1;
@@ -387,7 +391,7 @@ IntUartInterruptHandler(rtems_vector_number v)
{
/* put data in rx buffer */
- info->rx_buffer[info->rx_in] = *((uint8_t *)&MCF548X_PSC_RB(chan));
+ info->rx_buffer[info->rx_in] = *((volatile uint8_t *)&MCF548X_PSC_RB(chan));
/* check for errors */
if ( MCF548X_PSC_SR(chan) & MCF548X_PSC_SR_ERROR )
@@ -529,7 +533,7 @@ IntUartInterruptWrite (int minor, const char *buf, int len)
rtems_interrupt_disable(level);
/* write out character */
- MCF548X_PSC_TB(minor) = *buf;
+ *(volatile uint8_t *)(&MCF548X_PSC_TB(minor)) = *buf;
/* enable tx interrupt */
IntUartInfo[minor].imr |= MCF548X_PSC_IMR_TXRDY;
diff --git a/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h b/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h
index 362d2dd209..948767e69f 100644
--- a/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h
+++ b/c/src/lib/libbsp/m68k/genmcf548x/include/bsp.h
@@ -116,6 +116,21 @@ extern int rtems_mcf548x_fec_driver_attach_detach(struct rtems_bsdnet_ifconfig *
#define RTEMS_BSP_NETWORK_DRIVER_NAME "fec1"
#define RTEMS_BSP_NETWORK_DRIVER_NAME2 "fec2"
+#ifdef HAS_DBUG
+ typedef struct {
+ uint32_t console_baudrate;
+ uint8_t server_ip [4];
+ uint8_t client_ip [4];
+ uint8_t gateway_ip[4];
+ uint8_t netmask [4];
+ uint8_t spare[4];
+ uint8_t macaddr [6];
+ uint32_t ethport; /* default fec port: 1 = fec1, 2 = fec2 */
+ uint32_t uartport; /* default fec port: 1 = psc0, 2 = psc1... */
+ } dbug_settings_t;
+
+#define DBUG_SETTINGS (*(const dbug_settings_t *)0xFC020000)
+#endif /* HAS_DBUG */
#ifdef __cplusplus
}
#endif
diff --git a/c/src/lib/libbsp/m68k/genmcf548x/network/network.c b/c/src/lib/libbsp/m68k/genmcf548x/network/network.c
index 859cee483b..797f3f9117 100644
--- a/c/src/lib/libbsp/m68k/genmcf548x/network/network.c
+++ b/c/src/lib/libbsp/m68k/genmcf548x/network/network.c
@@ -1759,6 +1759,17 @@ int rtems_mcf548x_fec_driver_attach(struct rtems_bsdnet_ifconfig *config)
);
}
#endif
+#ifdef HAS_DBUG
+ if ((sc->arpcom.ac_enaddr[0] == 0) &&
+ (sc->arpcom.ac_enaddr[1] == 0) &&
+ (sc->arpcom.ac_enaddr[2] == 0)) {
+ memcpy(
+ (void *)sc->arpcom.ac_enaddr,
+ DBUG_SETTINGS.macaddr,
+ ETHER_ADDR_LEN
+ );
+ }
+#endif
if(config->mtu)
mtu = config->mtu;
else