summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2007-12-22 08:28:57 +0000
committerChris Johns <chrisj@rtems.org>2007-12-22 08:28:57 +0000
commite85eb70bc7d23e5bc8ad55f5739791a8298bd87f (patch)
tree899b555e7264f1e2aafd1ab61d61d2974483ef14 /c/src/lib/libbsp
parent2007-12-22 Chris Johns <chrisj@rtems.org> (diff)
downloadrtems-e85eb70bc7d23e5bc8ad55f5739791a8298bd87f.tar.bz2
2007-12-14 Chris Johns <chrisj@rtems.org>
* gdb-init: Make the first hb temporary. * network/network.c: Add support for reading the MAC address from the FEC if set by the boot monitor. dBug does not do this unless the network is used which is a shame.
Diffstat (limited to 'c/src/lib/libbsp')
-rw-r--r--c/src/lib/libbsp/m68k/mcf5235/ChangeLog7
-rw-r--r--c/src/lib/libbsp/m68k/mcf5235/gdb-init2
-rw-r--r--c/src/lib/libbsp/m68k/mcf5235/network/network.c44
3 files changed, 43 insertions, 10 deletions
diff --git a/c/src/lib/libbsp/m68k/mcf5235/ChangeLog b/c/src/lib/libbsp/m68k/mcf5235/ChangeLog
index 7e7786baeb..bea5c4886d 100644
--- a/c/src/lib/libbsp/m68k/mcf5235/ChangeLog
+++ b/c/src/lib/libbsp/m68k/mcf5235/ChangeLog
@@ -1,5 +1,12 @@
2007-12-14 Chris Johns <chrisj@rtems.org>
+ * gdb-init: Make the first hb temporary.
+ * network/network.c: Add support for reading the MAC address from
+ the FEC if set by the boot monitor. dBug does not do this unless
+ the network is used which is a shame.
+
+2007-12-14 Chris Johns <chrisj@rtems.org>
+
* gdb-init: Add the show-exception.
2007-12-11 Joel Sherrill <joel.sherrill@OARcorp.com>
diff --git a/c/src/lib/libbsp/m68k/mcf5235/gdb-init b/c/src/lib/libbsp/m68k/mcf5235/gdb-init
index 23fa2abe67..ec0628ad46 100644
--- a/c/src/lib/libbsp/m68k/mcf5235/gdb-init
+++ b/c/src/lib/libbsp/m68k/mcf5235/gdb-init
@@ -7,7 +7,7 @@ target remote | m68k-bdm-gdbserver pipe /dev/bdmcf0
# The console loop in the Axman dbug monitor. Found by trial and error
# with the debugger.
#
-hb *0xffe254c0
+thb *0xffe254c0
#
# Show the exception stack frame.
diff --git a/c/src/lib/libbsp/m68k/mcf5235/network/network.c b/c/src/lib/libbsp/m68k/mcf5235/network/network.c
index b75345d6a3..d09d5a03e8 100644
--- a/c/src/lib/libbsp/m68k/mcf5235/network/network.c
+++ b/c/src/lib/libbsp/m68k/mcf5235/network/network.c
@@ -308,6 +308,28 @@ mcf5235_fec_initialize_hardware(struct mcf5235_enet_struct *sc)
}
/*
+ * Get the MAC address from the hardware.
+ */
+static void
+fec_get_mac_address(volatile struct mcf5235_enet_struct *sc, unsigned char* hwaddr)
+{
+ unsigned long addr;
+
+ addr = MCF5235_FEC_PALR;
+
+ hwaddr[0] = (addr >> 24) & 0xff;
+ hwaddr[1] = (addr >> 16) & 0xff;
+ hwaddr[2] = (addr >> 8) & 0xff;
+ hwaddr[3] = (addr >> 0) & 0xff;
+
+ addr = MCF5235_FEC_PAUR;
+
+ hwaddr[4] = (addr >> 24) & 0xff;
+ hwaddr[5] = (addr >> 16) & 0xff;
+}
+
+
+/*
* Soak up buffer descriptors that have been sent.
*/
static void
@@ -789,26 +811,30 @@ rtems_fec_driver_attach(struct rtems_bsdnet_ifconfig *config, int attaching )
/*
* Is driver free?
*/
- if ((unitNumber <= 0) || (unitNumber > NIFACES)) {
- printf("Bad FEC unit number.\n");
+ if ((unitNumber < 0) || (unitNumber >= NIFACES)) {
+ printf("mcf5235: bad FEC unit number.\n");
return 0;
}
- sc = &enet_driver[unitNumber - 1];
+ sc = &enet_driver[unitNumber];
ifp = &sc->arpcom.ac_if;
if (ifp->if_softc != NULL) {
- printf("Driver already in use.\n");
+ printf("mcf5235: driver already in use.\n");
return 0;
}
/*
* Process options
*/
+ if (config->hardware_address)
+ memcpy(sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN);
+ else
+ fec_get_mac_address(sc, sc->arpcom.ac_enaddr);
+
hwaddr = config->hardware_address;
- printf("%s%d: Ethernet address: %02x:%02x:%02x:%02x:%02x:%02x\n",
- unitName, unitNumber,
- hwaddr[0], hwaddr[1], hwaddr[2],
- hwaddr[3], hwaddr[4], hwaddr[5]);
- memcpy(sc->arpcom.ac_enaddr, hwaddr, ETHER_ADDR_LEN);
+ printf("%s%d: mac: %02x:%02x:%02x:%02x:%02x:%02x\n",
+ unitName, unitNumber,
+ hwaddr[0], hwaddr[1], hwaddr[2],
+ hwaddr[3], hwaddr[4], hwaddr[5]);
if (config->mtu)
mtu = config->mtu;