From 8cb024901c66ff487f2724199d31b8acfde71078 Mon Sep 17 00:00:00 2001 From: eb Date: Wed, 10 Sep 2008 23:50:19 +0000 Subject: [PATCH] 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 --- usrp2/firmware/apps/Makefile.am | 1 + usrp2/firmware/apps/app_common_v2.c | 3 +- usrp2/firmware/apps/set_hw_rev.c | 43 +++++++++++++++++++++++++++++ usrp2/firmware/lib/u2_init.c | 14 ++++++++++ usrp2/firmware/lib/u2_init.h | 3 ++ 5 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 usrp2/firmware/apps/set_hw_rev.c diff --git a/usrp2/firmware/apps/Makefile.am b/usrp2/firmware/apps/Makefile.am index 092dd944..c538c6e9 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 4dc254f8..e267401a 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 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 00000000..0d7adbd3 --- /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 . + */ +#include +#include +#include +#include + +#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 cb4b679c..8ecba349 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 901e6125..91654dac 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 */ -- 2.30.2