aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2016-05-27 18:30:42 -0700
committerMartin Braun <martin.braun@ettus.com>2016-05-27 18:30:42 -0700
commitb1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357 (patch)
tree098298e7831f211dbb3c99f7d3452db5c3b9594e /host/lib/usrp
parent42b9b0691b08d51be2d756c9a0f9041305047b29 (diff)
parent3ed076048259cbb993e3989bf84726048478195c (diff)
downloaduhd-b1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357.tar.gz
uhd-b1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357.tar.bz2
uhd-b1c2d4bbb4e1ae3b085bb0ca84b2f53ce8bbd357.zip
Merge branch 'maint'
Diffstat (limited to 'host/lib/usrp')
-rw-r--r--host/lib/usrp/dboard/db_ubx.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/host/lib/usrp/dboard/db_ubx.cpp b/host/lib/usrp/dboard/db_ubx.cpp
index bf932a3a4..be3bdd17d 100644
--- a/host/lib/usrp/dboard/db_ubx.cpp
+++ b/host/lib/usrp/dboard/db_ubx.cpp
@@ -1112,6 +1112,18 @@ private:
boost::mutex::scoped_lock lock(_mutex);
if (mode == "performance")
{
+ // performance mode attempts to reduce tuning and settling time
+ // as much as possible without adding noise.
+
+ // RXLNA2 has a ~100ms warm up time, so the LNAs are forced on
+ // here to reduce the settling time as much as possible. The
+ // force on signals are gated by the LNA selection so the LNAs
+ // are turned on/off during tuning. Unfortunately, that means
+ // there is still a long settling time when tuning from the high
+ // band (>1.5 GHz) to the low band (<1.5 GHz).
+ set_cpld_field(RXLNA1_FORCEON, 1);
+ set_cpld_field(RXLNA2_FORCEON, 1);
+
/*
// Placeholders in case some components need to be forced on to
// reduce settling time. Note that some FORCEON lines are still gated
@@ -1123,36 +1135,43 @@ private:
set_cpld_field(RXMIXER_FORCEON, 0);
set_cpld_field(RXLO1_FORCEON, 0);
set_cpld_field(RXLO2_FORCEON, 0);
- set_cpld_field(RXLNA1_FORCEON, 0);
- set_cpld_field(RXLNA2_FORCEON, 0);
//set_cpld_field(TXDRV_FORCEON, 1); // controlled by RX antenna selection
set_cpld_field(TXMOD_FORCEON, 0);
set_cpld_field(TXMIXER_FORCEON, 0);
set_cpld_field(TXLO1_FORCEON, 0);
set_cpld_field(TXLO2_FORCEON, 0);
- write_cpld_reg();
*/
+ write_cpld_reg();
+
_power_mode = PERFORMANCE;
}
else if (mode == "powersave")
{
+ // powersave mode attempts to use the least amount of power possible
+ // by powering on components only when needed. Longer tuning and
+ // settling times are expected.
+
+ // Clear the LNA force on bits.
+ set_cpld_field(RXLNA1_FORCEON, 0);
+ set_cpld_field(RXLNA2_FORCEON, 0);
+
/*
- // Placeholders in case force on bits need to be set or cleared.
+ // Placeholders in case other force on bits need to be set or cleared.
set_cpld_field(RXAMP_FORCEON, 0);
set_cpld_field(RXDEMOD_FORCEON, 0);
set_cpld_field(RXDRV_FORCEON, 0);
set_cpld_field(RXMIXER_FORCEON, 0);
set_cpld_field(RXLO1_FORCEON, 0);
set_cpld_field(RXLO2_FORCEON, 0);
- set_cpld_field(RXLNA1_FORCEON, 0);
- set_cpld_field(RXLNA2_FORCEON, 0);
//set_cpld_field(TXDRV_FORCEON, 1); // controlled by RX antenna selection
set_cpld_field(TXMOD_FORCEON, 0);
set_cpld_field(TXMIXER_FORCEON, 0);
set_cpld_field(TXLO1_FORCEON, 0);
set_cpld_field(TXLO2_FORCEON, 0);
- write_cpld_reg();
*/
+
+ write_cpld_reg();
+
_power_mode = POWERSAVE;
}
}