aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoritz Fischer <moritz.fischer@ettus.com>2015-11-24 14:59:24 -0800
committerMartin Braun <martin.braun@ettus.com>2015-12-16 15:40:18 -0800
commit789784fc7e8aeb12b8d8092d6874dee49712a156 (patch)
tree95d48e6cdc9b323b0106042d250ec0f021c4e6f2
parent10178875a154e58af6c14774621776d13e7e3daa (diff)
downloaduhd-789784fc7e8aeb12b8d8092d6874dee49712a156.tar.gz
uhd-789784fc7e8aeb12b8d8092d6874dee49712a156.tar.bz2
uhd-789784fc7e8aeb12b8d8092d6874dee49712a156.zip
e3xx: Added FPGA loading code for speedgrade 3 devices.
Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
-rw-r--r--host/lib/usrp/e300/e300_eeprom_manager.cpp10
-rw-r--r--host/lib/usrp/e300/e300_eeprom_manager.hpp5
-rw-r--r--host/lib/usrp/e300/e300_impl.cpp15
-rw-r--r--host/lib/usrp/e300/e300_impl.hpp7
-rw-r--r--host/lib/usrp/e300/e300_network.cpp7
5 files changed, 29 insertions, 15 deletions
diff --git a/host/lib/usrp/e300/e300_eeprom_manager.cpp b/host/lib/usrp/e300/e300_eeprom_manager.cpp
index 752bd3768..00200747d 100644
--- a/host/lib/usrp/e300/e300_eeprom_manager.cpp
+++ b/host/lib/usrp/e300/e300_eeprom_manager.cpp
@@ -210,8 +210,11 @@ e300_eeprom_manager::mboard_t e300_eeprom_manager::get_mb_type(
case E300_MB_PID:
return USRP_E300_MB;
- case E310_MB_PID:
- return USRP_E310_MB;
+ case E310_SG1_MB_PID:
+ return USRP_E310_SG1_MB;
+
+ case E310_SG3_MB_PID:
+ return USRP_E310_SG3_MB;
default:
return UNKNOWN;
@@ -228,7 +231,8 @@ std::string e300_eeprom_manager::get_mb_type_string(void) const
case E300_MB_PID:
return "E3XX";
- case E310_MB_PID:
+ case E310_SG1_MB_PID:
+ case E310_SG3_MB_PID:
return "E3XX";
default:
diff --git a/host/lib/usrp/e300/e300_eeprom_manager.hpp b/host/lib/usrp/e300/e300_eeprom_manager.hpp
index 86d7c3463..b06eeada9 100644
--- a/host/lib/usrp/e300/e300_eeprom_manager.hpp
+++ b/host/lib/usrp/e300/e300_eeprom_manager.hpp
@@ -29,7 +29,8 @@
namespace uhd { namespace usrp { namespace e300 {
static const boost::uint16_t E300_MB_PID = 0x77d1;
-static const boost::uint16_t E310_MB_PID = 0x77d2;
+static const boost::uint16_t E310_SG1_MB_PID = 0x77d2;
+static const boost::uint16_t E310_SG3_MB_PID = 0x77d3;
static const boost::uint16_t E300_DB_PID = 0x0100;
static const boost::uint16_t E310_DB_PID = 0x0110;
@@ -68,7 +69,7 @@ public:
i2c::sptr get_i2c_sptr(void);
- enum mboard_t {USRP_E300_MB, USRP_E310_MB, UNKNOWN};
+ enum mboard_t {USRP_E300_MB, USRP_E310_SG1_MB, USRP_E310_SG3_MB, UNKNOWN};
mboard_t get_mb_type(void) const;
static mboard_t get_mb_type(boost::uint16_t pid);
diff --git a/host/lib/usrp/e300/e300_impl.cpp b/host/lib/usrp/e300/e300_impl.cpp
index 0003dddb0..a57c86c1d 100644
--- a/host/lib/usrp/e300/e300_impl.cpp
+++ b/host/lib/usrp/e300/e300_impl.cpp
@@ -277,15 +277,20 @@ void get_e3x0_fpga_images(const uhd::device_addr_t &device_addr,
//extract the FPGA path for the e300
switch(e300_eeprom_manager::get_mb_type(pid)) {
- case e300_eeprom_manager::USRP_E310_MB:
+ case e300_eeprom_manager::USRP_E310_SG1_MB:
fpga_image = device_addr.cast<std::string>("fpga",
- find_image_path(E310_FPGA_FILE_NAME));
- idle_image = find_image_path(E310_FPGA_IDLE_FILE_NAME);
+ find_image_path(E310_SG1_FPGA_FILE_NAME));
+ idle_image = find_image_path(E3XX_SG1_FPGA_IDLE_FILE_NAME);
+ break;
+ case e300_eeprom_manager::USRP_E310_SG3_MB:
+ fpga_image = device_addr.cast<std::string>("fpga",
+ find_image_path(E310_SG3_FPGA_FILE_NAME));
+ idle_image = find_image_path(E3XX_SG3_FPGA_IDLE_FILE_NAME);
break;
case e300_eeprom_manager::USRP_E300_MB:
fpga_image = device_addr.cast<std::string>("fpga",
find_image_path(E300_FPGA_FILE_NAME));
- idle_image = find_image_path(E300_FPGA_IDLE_FILE_NAME);
+ idle_image = find_image_path(E3XX_SG1_FPGA_IDLE_FILE_NAME);
break;
case e300_eeprom_manager::UNKNOWN:
default:
@@ -293,7 +298,7 @@ void get_e3x0_fpga_images(const uhd::device_addr_t &device_addr,
<< std::endl;
fpga_image = device_addr.cast<std::string>("fpga",
find_image_path(E300_FPGA_FILE_NAME));
- idle_image = find_image_path(E300_FPGA_IDLE_FILE_NAME);
+ idle_image = find_image_path(E3XX_SG1_FPGA_IDLE_FILE_NAME);
break;
}
}
diff --git a/host/lib/usrp/e300/e300_impl.hpp b/host/lib/usrp/e300/e300_impl.hpp
index 764059c1b..595b42679 100644
--- a/host/lib/usrp/e300/e300_impl.hpp
+++ b/host/lib/usrp/e300/e300_impl.hpp
@@ -56,10 +56,11 @@
namespace uhd { namespace usrp { namespace e300 {
static const std::string E300_FPGA_FILE_NAME = "usrp_e300_fpga.bit";
-static const std::string E310_FPGA_FILE_NAME = "usrp_e310_fpga.bit";
+static const std::string E310_SG1_FPGA_FILE_NAME = "usrp_e310_fpga.bit";
+static const std::string E310_SG3_FPGA_FILE_NAME = "usrp_e310_fpga_sg3.bit";
-static const std::string E300_FPGA_IDLE_FILE_NAME = "usrp_e300_fpga_idle.bit";
-static const std::string E310_FPGA_IDLE_FILE_NAME = "usrp_e310_fpga_idle.bit";
+static const std::string E3XX_SG1_FPGA_IDLE_FILE_NAME = "usrp_e3xx_fpga_idle.bit";
+static const std::string E3XX_SG3_FPGA_IDLE_FILE_NAME = "usrp_e3xx_fpga_idle_sg3.bit";
static const std::string E300_TEMP_SYSFS = "iio:device0";
static const std::string E300_SPIDEV_DEVICE = "/dev/spidev0.1";
diff --git a/host/lib/usrp/e300/e300_network.cpp b/host/lib/usrp/e300/e300_network.cpp
index 96387d6f7..0aa5a21ae 100644
--- a/host/lib/usrp/e300/e300_network.cpp
+++ b/host/lib/usrp/e300/e300_network.cpp
@@ -575,8 +575,11 @@ network_server_impl::network_server_impl(const uhd::device_addr_t &device_addr)
_eeprom_manager->get_mb_eeprom()["product"]);
std::string fpga_image;
switch(e300_eeprom_manager::get_mb_type(pid)) {
- case e300_eeprom_manager::USRP_E310_MB:
- fpga_image = find_image_path(E310_FPGA_FILE_NAME);
+ case e300_eeprom_manager::USRP_E310_SG1_MB:
+ fpga_image = find_image_path(E310_SG1_FPGA_FILE_NAME);
+ break;
+ case e300_eeprom_manager::USRP_E310_SG3_MB:
+ fpga_image = find_image_path(E310_SG3_FPGA_FILE_NAME);
break;
case e300_eeprom_manager::USRP_E300_MB:
fpga_image = find_image_path(E300_FPGA_FILE_NAME);