summaryrefslogtreecommitdiffstats
path: root/firmware/microblaze/lib
diff options
context:
space:
mode:
authorNick Foster <nick@nerdnetworks.org>2010-11-22 16:50:14 -0800
committerNick Foster <nick@nerdnetworks.org>2010-11-22 16:50:14 -0800
commita2dfa1988c6f624c3c45bd55ca7a7af9c10eb041 (patch)
treeeca7163356bc9dda13cd9af937d399ff41c6a3f1 /firmware/microblaze/lib
parente7b98030eb3ea7e42bd8d6fa5f115b0219ae2685 (diff)
downloaduhd-a2dfa1988c6f624c3c45bd55ca7a7af9c10eb041.tar.gz
uhd-a2dfa1988c6f624c3c45bd55ca7a7af9c10eb041.tar.bz2
uhd-a2dfa1988c6f624c3c45bd55ca7a7af9c10eb041.zip
N200 comes up with default IP and MAC when booted in safe mode (button pushed).
Diffstat (limited to 'firmware/microblaze/lib')
-rw-r--r--firmware/microblaze/lib/eeprom.c12
-rw-r--r--firmware/microblaze/lib/eth_addrs.c21
-rw-r--r--firmware/microblaze/lib/ethernet.h6
-rw-r--r--firmware/microblaze/lib/i2c.h3
4 files changed, 42 insertions, 0 deletions
diff --git a/firmware/microblaze/lib/eeprom.c b/firmware/microblaze/lib/eeprom.c
index b12ffe082..d4e170046 100644
--- a/firmware/microblaze/lib/eeprom.c
+++ b/firmware/microblaze/lib/eeprom.c
@@ -17,9 +17,21 @@
#include "i2c.h"
#include "mdelay.h"
+#include "usrp2/fw_common.h"
static const int EEPROM_PAGESIZE = 16;
+bool find_safe_booted_flag(void) {
+ unsigned char flag_byte;
+ eeprom_read(USRP2_I2C_ADDR_MBOARD, USRP2_EE_MBOARD_BOOTLOADER_FLAGS, &flag_byte, 1);
+ return (flag_byte == 0x5E);
+}
+
+void set_safe_booted_flag(bool flag) {
+ unsigned char flag_byte = flag ? 0x5E : 0xDC;
+ eeprom_write(USRP2_I2C_ADDR_MBOARD, USRP2_EE_MBOARD_BOOTLOADER_FLAGS, &flag_byte, 1);
+}
+
bool
eeprom_write (int i2c_addr, int eeprom_offset, const void *buf, int len)
{
diff --git a/firmware/microblaze/lib/eth_addrs.c b/firmware/microblaze/lib/eth_addrs.c
index c6320e4fa..ff5d04f4d 100644
--- a/firmware/microblaze/lib/eth_addrs.c
+++ b/firmware/microblaze/lib/eth_addrs.c
@@ -46,9 +46,20 @@ unprogrammed(const void *t, size_t len)
//////////////////// MAC Addr Stuff ///////////////////////
static int8_t src_mac_addr_initialized = false;
+
+static const eth_mac_addr_t default_mac_addr = {{
+ 0x00, 0x50, 0xC2, 0x85, 0x3f, 0xff
+ }};
+
static eth_mac_addr_t src_mac_addr = {{
0x00, 0x50, 0xC2, 0x85, 0x3f, 0xff
}};
+
+void set_default_mac_addr(void)
+{
+ src_mac_addr_initialized = true;
+ src_mac_addr = default_mac_addr;
+}
const eth_mac_addr_t *
ethernet_mac_addr(void)
@@ -88,10 +99,20 @@ ethernet_set_mac_addr(const eth_mac_addr_t *t)
//////////////////// IP Addr Stuff ///////////////////////
static int8_t src_ip_addr_initialized = false;
+
+static const struct ip_addr default_ip_addr = {
+ (192 << 24 | 168 << 16 | 10 << 8 | 2 << 0)
+};
+
static struct ip_addr src_ip_addr = {
(192 << 24 | 168 << 16 | 10 << 8 | 2 << 0)
};
+void set_default_ip_addr(void)
+{
+ src_ip_addr_initialized = true;
+ src_ip_addr = default_ip_addr;
+}
const struct ip_addr *get_ip_addr(void)
{
diff --git a/firmware/microblaze/lib/ethernet.h b/firmware/microblaze/lib/ethernet.h
index 8c6d8b567..52b297349 100644
--- a/firmware/microblaze/lib/ethernet.h
+++ b/firmware/microblaze/lib/ethernet.h
@@ -44,6 +44,9 @@ void ethernet_register_link_changed_callback(ethernet_link_changed_callback_t cb
*/
const eth_mac_addr_t *ethernet_mac_addr(void);
+/*!set mac addr to default*/
+void set_default_mac_addr(void);
+
/*!
* \brief write mac address to eeprom and begin using it
*/
@@ -54,6 +57,9 @@ bool ethernet_set_mac_addr(const eth_mac_addr_t *t);
*/
const struct ip_addr *get_ip_addr(void);
+/*!set ip addr to default*/
+void set_default_ip_addr(void);
+
/*!
* \brief write ip address to eeprom and begin using it
*/
diff --git a/firmware/microblaze/lib/i2c.h b/firmware/microblaze/lib/i2c.h
index 6ff0e6982..1af4d72df 100644
--- a/firmware/microblaze/lib/i2c.h
+++ b/firmware/microblaze/lib/i2c.h
@@ -33,4 +33,7 @@ bool eeprom_write (int i2c_addr, int eeprom_offset, const void *buf, int len);
bool eeprom_read (int i2c_addr, int eeprom_offset, void *buf, int len);
+bool find_safe_booted_flag(void);
+void set_safe_booted_flag(bool flag);
+
#endif /* INCLUDED_I2C_H */