aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/lib/usrp/x300/x300_impl.cpp18
-rw-r--r--host/lib/usrp/x300/x300_impl.hpp2
-rw-r--r--host/lib/usrp/x300/x300_regs.hpp1
3 files changed, 19 insertions, 2 deletions
diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp
index d3eeeef10..2e1450efa 100644
--- a/host/lib/usrp/x300/x300_impl.cpp
+++ b/host/lib/usrp/x300/x300_impl.cpp
@@ -131,6 +131,9 @@ static device_addrs_t x300_find_with_addr(const device_addr_t &hint)
case x300_impl::USRP_X310_MB:
new_addr["product"] = "X310";
break;
+ case x300_impl::USRP_X310_MB_NI_2974:
+ new_addr["product"] = "NI-2974";
+ break;
default:
break;
}
@@ -188,6 +191,10 @@ static device_addrs_t x300_find_pcie(const device_addr_t &hint, bool explicit_qu
case x300_impl::USRP_X310_MB:
new_addr["product"] = "X310";
break;
+ case x300_impl::USRP_X310_MB_NI_2974:
+ new_addr["product"] = "NI-2974";
+ break;
+
default:
continue;
}
@@ -598,11 +605,12 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)
lvbitx.reset(new x300_lvbitx(dev_addr["fpga"]));
break;
case USRP_X310_MB:
+ case USRP_X310_MB_NI_2974:
lvbitx.reset(new x310_lvbitx(dev_addr["fpga"]));
break;
default:
nirio_status_to_exception(status, "Motherboard detection error. Please ensure that you \
- have a valid USRP X3x0, NI USRP-294xR or NI USRP-295xR device and that all the device \
+ have a valid USRP X3x0, NI USRP-294xR, NI USRP-295xR or NI USRP-2974 device and that all the device \
drivers have loaded successfully.");
}
//Load the lvbitx onto the device
@@ -734,6 +742,9 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)
case USRP_X310_MB:
product_name = "X310";
break;
+ case USRP_X310_MB_NI_2974:
+ product_name = "NI-2974";
+ break;
default:
if (not mb.args.get_recover_mb_eeprom())
throw uhd::runtime_error("Unrecognized product type.\n"
@@ -1870,6 +1881,8 @@ x300_impl::x300_mboard_t x300_impl::get_mb_type_from_pcie(const std::string& res
case X310_2954R_40MHz_PCIE_SSID_ADC_18:
case X310_2955R_PCIE_SSID_ADC_18:
mb_type = USRP_X310_MB; break;
+ case X310_2974_PCIE_SSID_ADC_18:
+ mb_type = USRP_X310_MB_NI_2974; break;
default:
mb_type = UNKNOWN; break;
}
@@ -1929,6 +1942,9 @@ x300_impl::x300_mboard_t x300_impl::get_mb_type_from_eeprom(const uhd::usrp::mbo
case X310_2954R_40MHz_PCIE_SSID_ADC_18:
case X310_2955R_PCIE_SSID_ADC_18:
mb_type = USRP_X310_MB; break;
+ case X310_2974_PCIE_SSID_ADC_18:
+ mb_type = USRP_X310_MB_NI_2974; break;
+
default:
UHD_LOGGER_WARNING("X300") << "X300 unknown product code in EEPROM: " << product_num ;
mb_type = UNKNOWN; break;
diff --git a/host/lib/usrp/x300/x300_impl.hpp b/host/lib/usrp/x300/x300_impl.hpp
index 20c54c6a7..e05aea32e 100644
--- a/host/lib/usrp/x300/x300_impl.hpp
+++ b/host/lib/usrp/x300/x300_impl.hpp
@@ -74,7 +74,7 @@ public:
static void release(uhd::wb_iface::sptr iface);
enum x300_mboard_t {
- USRP_X300_MB, USRP_X310_MB, UNKNOWN
+ USRP_X300_MB, USRP_X310_MB, USRP_X310_MB_NI_2974, UNKNOWN
};
static x300_mboard_t get_mb_type_from_pcie(const std::string& resource, const std::string& rpc_port);
static x300_mboard_t get_mb_type_from_eeprom(const uhd::usrp::mboard_eeprom_t& mb_eeprom);
diff --git a/host/lib/usrp/x300/x300_regs.hpp b/host/lib/usrp/x300/x300_regs.hpp
index b54c5c2bb..5fdc89979 100644
--- a/host/lib/usrp/x300/x300_regs.hpp
+++ b/host/lib/usrp/x300/x300_regs.hpp
@@ -107,6 +107,7 @@ static const uint32_t X310_2953R_40MHz_PCIE_SSID_ADC_18 = 0x7859;
static const uint32_t X310_2953R_120MHz_PCIE_SSID_ADC_18 = 0x7860;
static const uint32_t X310_2954R_40MHz_PCIE_SSID_ADC_18 = 0x785A;
static const uint32_t X310_2955R_PCIE_SSID_ADC_18 = 0x78F0;
+static const uint32_t X310_2974_PCIE_SSID_ADC_18 = 0x799B;
static const uint32_t FPGA_X3xx_SIG_VALUE = 0x58333030;