aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
diff options
context:
space:
mode:
authorTrung Tran <trung.tran@ettus.com>2018-07-13 16:00:24 -0700
committerMartin Braun <martin.braun@ettus.com>2018-07-14 11:21:26 -0700
commit606d8fc36de0e1812da66e48f23eb7b840b28ebb (patch)
tree36f8623b0aaa36b13df922596291056941935afb /host/lib
parent8a3148eb25cfd26c4449e6e34c3cba1e41ebc500 (diff)
downloaduhd-606d8fc36de0e1812da66e48f23eb7b840b28ebb.tar.gz
uhd-606d8fc36de0e1812da66e48f23eb7b840b28ebb.tar.bz2
uhd-606d8fc36de0e1812da66e48f23eb7b840b28ebb.zip
mg: fix tx power issue
This commit will fix power issues with 2 radios configuration (UHD 3.12+). Removed unused _master boolean. CPLD path are now correct, each radio has its own CPLD object.
Diffstat (limited to 'host/lib')
-rw-r--r--host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_gain.cpp5
-rw-r--r--host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.cpp2
-rw-r--r--host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp4
-rw-r--r--host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_init.cpp20
4 files changed, 4 insertions, 27 deletions
diff --git a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_gain.cpp b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_gain.cpp
index 365082048..e58e1706e 100644
--- a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_gain.cpp
+++ b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_gain.cpp
@@ -25,9 +25,8 @@ double magnesium_radio_ctrl_impl::_set_all_gain(
"freq=" << freq << " Hz, "
"chan=" << chan << ", "
"dir=" << dir);
- const size_t ad9371_chan = _master ? 0 : 1; ;// FIXME: use chan when 2 radios
- const magnesium_cpld_ctrl::chan_sel_t chan_sel =
- _master ? magnesium_cpld_ctrl::CHAN1 : magnesium_cpld_ctrl::CHAN2;
+ const size_t ad9371_chan = chan;
+ auto chan_sel = static_cast<magnesium_cpld_ctrl::chan_sel_t>(chan);
gain_tuple_t gain_tuple = (dir == RX_DIRECTION) ?
get_rx_gain_tuple(gain, _map_freq_to_rx_band(freq)):
get_tx_gain_tuple(gain, _map_freq_to_tx_band(freq));
diff --git a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.cpp b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.cpp
index 578aa9640..04af0c7a4 100644
--- a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.cpp
+++ b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.cpp
@@ -171,7 +171,7 @@ void magnesium_radio_ctrl_impl::set_rx_antenna(
chan ? magnesium_cpld_ctrl::CHAN1 : magnesium_cpld_ctrl::CHAN2;
_update_atr_switches(chan_sel, RX_DIRECTION, ant);
- radio_ctrl_impl::set_rx_antenna(ant, chan); // we don't use _master here since each radio has one antenna.
+ radio_ctrl_impl::set_rx_antenna(ant, chan);
}
double magnesium_radio_ctrl_impl::set_tx_frequency(
diff --git a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
index c6fd1bee4..85c11f063 100644
--- a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
+++ b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_impl.hpp
@@ -299,10 +299,6 @@ private:
//! Prepended for all dboard RPC calls
std::string _rpc_prefix;
- //! If true, this is a master radio. This attribute will go away when we
- // move back to 1 radio block per dboard.
- bool _master;
-
//! Additional block args; gets set during set_rpc_client()
uhd::device_addr_t _block_args;
diff --git a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_init.cpp b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_init.cpp
index 4f47427b7..ba7d937aa 100644
--- a/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_init.cpp
+++ b/host/lib/usrp/dboard/magnesium/magnesium_radio_ctrl_init.cpp
@@ -111,25 +111,13 @@ void magnesium_radio_ctrl_impl::_init_defaults()
void magnesium_radio_ctrl_impl::_init_peripherals()
{
UHD_LOG_TRACE(unique_id(), "Initializing peripherals...");
- fs_path cpld_path = _root_path.branch_path()
- / str(boost::format("Radio_%d") % ((get_block_id().get_block_count()/2)*2))
- / "cpld";
- fs_path rx_lo_path = _root_path.branch_path()
- / str(boost::format("Radio_%d") % ((get_block_id().get_block_count()/2)*2))
- / "rx_lo";
- fs_path tx_lo_path = _root_path.branch_path()
- / str(boost::format("Radio_%d") % ((get_block_id().get_block_count()/2)*2))
- / "tx_lo";
UHD_LOG_TRACE(unique_id(), "Initializing SPI core...");
_spi = spi_core_3000::make(_get_ctrl(0),
regs::sr_addr(regs::SPI),
regs::rb_addr(regs::RB_SPI)
);
-
UHD_LOG_TRACE(unique_id(), "Initializing CPLD...");
- UHD_LOG_TRACE(unique_id(), "CPLD path: " << cpld_path);
- if (not _tree->exists(cpld_path)) {
- UHD_LOG_TRACE(unique_id(), "Creating new CPLD object...");
+ UHD_LOG_TRACE(unique_id(), "Creating new CPLD object...");
spi_config_t spi_config;
spi_config.use_custom_divider = true;
spi_config.divider = 125;
@@ -159,12 +147,6 @@ void magnesium_radio_ctrl_impl::_init_peripherals()
DX_DIRECTION,
radio_ctrl_impl::get_rx_antenna(0)
);
- _tree->create<magnesium_cpld_ctrl::sptr>(cpld_path).set(_cpld);
- } else {
- UHD_LOG_TRACE(unique_id(), "Reusing someone else's CPLD object...");
- _cpld = _tree->access<magnesium_cpld_ctrl::sptr>(cpld_path).get();
- }
-
UHD_LOG_TRACE(unique_id(), "Initializing TX LO...");
_tx_lo = adf435x_iface::make_adf4351(
[this](const std::vector<uint32_t> transactions){