aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/lib/usrp/common/ad9361_driver/ad9361_device.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp b/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp
index 0505343ab..c3bc2d32b 100644
--- a/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp
+++ b/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp
@@ -1717,7 +1717,6 @@ void ad9361_device_t::initialize()
_calibrate_baseband_dc_offset();
_calibrate_rf_dc_offset();
- _calibrate_tx_quadrature();
_calibrate_rx_quadrature();
/*
@@ -1855,7 +1854,6 @@ double ad9361_device_t::set_clock_rate(const double req_rate)
_calibrate_baseband_dc_offset();
_calibrate_rf_dc_offset();
- _calibrate_tx_quadrature();
_calibrate_rx_quadrature();
/*
@@ -1970,6 +1968,14 @@ void ad9361_device_t::set_active_chains(bool tx1, bool tx2, bool rx1, bool rx2)
_io_iface->poke8(0x002, _regs.txfilt);
_io_iface->poke8(0x003, _regs.rxfilt);
+ /*
+ * Last unconditional Tx calibration point. Any later Tx calibration will
+ * require user intervention (currently triggered by tuning difference that
+ * is > 100 MHz). Late calibration provides better performance.
+ */
+ if (tx1 | tx2)
+ _calibrate_tx_quadrature();
+
/* Put back into FDD state if necessary */
if (set_back_to_fdd)
_io_iface->poke8(0x014, 0x21);