summaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-04-26 16:37:07 -0700
committerJosh Blum <josh@joshknows.com>2011-04-26 16:37:07 -0700
commit1a81e2a35ff1d288e87eb1e65911c1a97588217c (patch)
tree238d89bc96781531573e2932c23454ac9cef6a65 /host
parentf92821a275db90e7fa95d64831f4a3f33e533ad0 (diff)
downloaduhd-1a81e2a35ff1d288e87eb1e65911c1a97588217c.tar.gz
uhd-1a81e2a35ff1d288e87eb1e65911c1a97588217c.tar.bz2
uhd-1a81e2a35ff1d288e87eb1e65911c1a97588217c.zip
Enhance WBX IQ balance performance through LO drive
Diffstat (limited to 'host')
-rw-r--r--host/lib/usrp/dboard/db_wbx_common.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/host/lib/usrp/dboard/db_wbx_common.cpp b/host/lib/usrp/dboard/db_wbx_common.cpp
index 3ad2dac6a..eb239c305 100644
--- a/host/lib/usrp/dboard/db_wbx_common.cpp
+++ b/host/lib/usrp/dboard/db_wbx_common.cpp
@@ -329,6 +329,35 @@ double wbx_base::set_lo_freq(
UHD_ASSERT_THROW(rfdivsel_to_enum.has_key(RFdiv));
regs.rf_divider_select = rfdivsel_to_enum[RFdiv];
+ if (unit == dboard_iface::UNIT_RX) {
+ freq_range_t rx_lo_5dbm = list_of
+ (range_t(0.05e9, 1.4e9))
+ ;
+
+ freq_range_t rx_lo_2dbm = list_of
+ (range_t(1.4e9, 2.2e9))
+ ;
+
+ if (actual_freq == rx_lo_5dbm.clip(actual_freq)) regs.output_power = adf4350_regs_t::OUTPUT_POWER_5DBM;
+
+ if (actual_freq == rx_lo_2dbm.clip(actual_freq)) regs.output_power = adf4350_regs_t::OUTPUT_POWER_2DBM;
+
+ } else if (unit == dboard_iface::UNIT_TX) {
+ freq_range_t tx_lo_5dbm = list_of
+ (range_t(0.05e9, 1.7e9))
+ (range_t(1.9e9, 2.2e9))
+ ;
+
+ freq_range_t tx_lo_m1dbm = list_of
+ (range_t(1.7e9, 1.9e9))
+ ;
+
+ if (actual_freq == tx_lo_5dbm.clip(actual_freq)) regs.output_power = adf4350_regs_t::OUTPUT_POWER_5DBM;
+
+ if (actual_freq == tx_lo_m1dbm.clip(actual_freq)) regs.output_power = adf4350_regs_t::OUTPUT_POWER_M1DBM;
+
+ }
+
//write the registers
//correct power-up sequence to write registers (5, 4, 3, 2, 1, 0)
int addr;