diff options
-rw-r--r-- | host/lib/usrp/x300/x300_impl.cpp | 18 | ||||
-rw-r--r-- | host/lib/usrp/x300/x300_impl.hpp | 2 | ||||
-rw-r--r-- | host/lib/usrp/x300/x300_regs.hpp | 1 |
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; |