diff options
author | eb | 2008-09-10 23:50:19 +0000 |
---|---|---|
committer | eb | 2008-09-10 23:50:19 +0000 |
commit | 8cb024901c66ff487f2724199d31b8acfde71078 (patch) | |
tree | 19b4320420b883a1d082957dc8f97389a940b39d /usrp2 | |
parent | 924831afcdb187b3de670be6fd1f6147d62be5cf (diff) | |
download | gnuradio-8cb024901c66ff487f2724199d31b8acfde71078.tar.gz gnuradio-8cb024901c66ff487f2724199d31b8acfde71078.tar.bz2 gnuradio-8cb024901c66ff487f2724199d31b8acfde71078.zip |
now reads h/w rev from eeprom. f/w app set_hw_rev sets it
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@9554 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'usrp2')
-rw-r--r-- | usrp2/firmware/apps/Makefile.am | 1 | ||||
-rw-r--r-- | usrp2/firmware/apps/app_common_v2.c | 3 | ||||
-rw-r--r-- | usrp2/firmware/apps/set_hw_rev.c | 43 | ||||
-rw-r--r-- | usrp2/firmware/lib/u2_init.c | 14 | ||||
-rw-r--r-- | usrp2/firmware/lib/u2_init.h | 3 |
5 files changed, 63 insertions, 1 deletions
diff --git a/usrp2/firmware/apps/Makefile.am b/usrp2/firmware/apps/Makefile.am index 092dd9441..c538c6e95 100644 --- a/usrp2/firmware/apps/Makefile.am +++ b/usrp2/firmware/apps/Makefile.am @@ -33,6 +33,7 @@ noinst_PROGRAMS = \ rcv_eth_packets \ rx_only_v2 \ read_dbids \ + set_hw_rev \ test1 \ test_db_spi \ test_i2c \ diff --git a/usrp2/firmware/apps/app_common_v2.c b/usrp2/firmware/apps/app_common_v2.c index 4dc254f85..e267401a9 100644 --- a/usrp2/firmware/apps/app_common_v2.c +++ b/usrp2/firmware/apps/app_common_v2.c @@ -28,6 +28,7 @@ #include "print_rmon_regs.h" #include "db.h" #include "clocks.h" +#include "u2_init.h" #include <string.h> volatile bool link_is_up = false; // eth handler sets this @@ -117,7 +118,7 @@ op_id_cmd(const op_generic_t *p, r->len = sizeof(op_id_reply_t); r->rid = p->rid; r->addr = *ethernet_mac_addr(); - r->hw_rev = 0x0000; // FIXME + r->hw_rev = (u2_hw_rev_major << 8) | u2_hw_rev_minor; // r->fpga_md5sum = ; // FIXME // r->sw_md5sum = ; // FIXME diff --git a/usrp2/firmware/apps/set_hw_rev.c b/usrp2/firmware/apps/set_hw_rev.c new file mode 100644 index 000000000..0d7adbd34 --- /dev/null +++ b/usrp2/firmware/apps/set_hw_rev.c @@ -0,0 +1,43 @@ +/* -*- c++ -*- */ +/* + * Copyright 2008 Free Software Foundation, Inc. + * + * 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 3 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, see <http://www.gnu.org/licenses/>. + */ +#include <u2_init.h> +#include <nonstdio.h> +#include <i2c.h> +#include <usrp2_i2c_addr.h> + +#define HW_REV_MAJOR 0 +#define HW_REV_MINOR 3 + +int +main(void) +{ + u2_init(); + + putstr("\nset_hw_rev\n"); + + bool ok = true; + unsigned char maj = HW_REV_MAJOR; + unsigned char min = HW_REV_MINOR; + ok = eeprom_write(I2C_ADDR_MBOARD, MBOARD_REV_MSB, &maj, 1); + ok &= eeprom_write(I2C_ADDR_MBOARD, MBOARD_REV_LSB, &min, 1); + + if (ok) + printf("OK: set h/w rev to %d.%d\n", HW_REV_MAJOR, HW_REV_MINOR); + else + printf("FAILED to set h/w rev to %d.%d\n", HW_REV_MAJOR, HW_REV_MINOR); +} diff --git a/usrp2/firmware/lib/u2_init.c b/usrp2/firmware/lib/u2_init.c index cb4b679c4..8ecba3497 100644 --- a/usrp2/firmware/lib/u2_init.c +++ b/usrp2/firmware/lib/u2_init.c @@ -30,9 +30,21 @@ #include "ad9777.h" #include "clocks.h" #include "db.h" +#include "usrp2_i2c_addr.h" //#include "nonstdio.h" +unsigned char u2_hw_rev_major; +unsigned char u2_hw_rev_minor; + +static inline void +get_hw_rev(void) +{ + bool ok = eeprom_read(I2C_ADDR_MBOARD, MBOARD_REV_LSB, &u2_hw_rev_minor, 1); + ok &= eeprom_read(I2C_ADDR_MBOARD, MBOARD_REV_MSB, &u2_hw_rev_major, 1); +} + + /* * We ought to arrange for this to be called before main, but for now, * we require that the user's main call u2_init as the first thing... @@ -85,6 +97,8 @@ u2_init(void) lsdac_init(); // low-speed DACs db_init(); // daughterboard init + get_hw_rev(); + hal_enable_ints(); // flash all leds to let us know board is alive diff --git a/usrp2/firmware/lib/u2_init.h b/usrp2/firmware/lib/u2_init.h index 901e61250..91654dac8 100644 --- a/usrp2/firmware/lib/u2_init.h +++ b/usrp2/firmware/lib/u2_init.h @@ -18,6 +18,9 @@ #ifndef INCLUDED_U2_INIT_H #define INCLUDED_U2_INIT_H +extern unsigned char u2_hw_rev_major; +extern unsigned char u2_hw_rev_minor; + /*! * one-time init */ |