aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/common
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2016-07-15 11:43:17 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2016-07-15 11:43:17 +0200
commit7149658fbbee12114429183f8015effd5f59a5f6 (patch)
tree62e75341dc133dad46950be665fa603886d0415f /host/lib/usrp/common
parent416ac19e94d684111517df7f371810fbc469603c (diff)
downloaduhd-lea-m8f-003_009_004.tar.gz
uhd-lea-m8f-003_009_004.tar.bz2
uhd-lea-m8f-003_009_004.zip
Autoconfigure refclk frequency if LEA-M8F detectedlea-m8f-003_009_004
This should make this branch compatible with both Ettus GPSDO using 10MHz refclk and the LEA-M8F using 30.72MHz
Diffstat (limited to 'host/lib/usrp/common')
-rw-r--r--host/lib/usrp/common/adf4001_ctrl.cpp20
-rw-r--r--host/lib/usrp/common/adf4001_ctrl.hpp1
2 files changed, 19 insertions, 2 deletions
diff --git a/host/lib/usrp/common/adf4001_ctrl.cpp b/host/lib/usrp/common/adf4001_ctrl.cpp
index 076385050..e38142f93 100644
--- a/host/lib/usrp/common/adf4001_ctrl.cpp
+++ b/host/lib/usrp/common/adf4001_ctrl.cpp
@@ -101,8 +101,8 @@ adf4001_ctrl::adf4001_ctrl(uhd::spi_iface::sptr _spi, int slaveno):
spi_config.mosi_edge = spi_config_t::EDGE_RISE;
//set defaults
- adf4001_regs.ref_counter = 96;
- adf4001_regs.n = 125;
+ adf4001_regs.ref_counter = 1;
+ adf4001_regs.n = 4;
adf4001_regs.charge_pump_current_1 = 7;
adf4001_regs.charge_pump_current_2 = 7;
adf4001_regs.muxout = adf4001_regs_t::MUXOUT_DLD;
@@ -125,6 +125,22 @@ void adf4001_ctrl::set_lock_to_ext_ref(bool external) {
program_regs();
}
+bool adf4001_ctrl::set_refclk_frequency(int refclk_kHz)
+{
+ if (refclk_kHz == 30720) {
+ adf4001_regs.ref_counter = 96;
+ adf4001_regs.n = 125;
+ } else if (refclk_kHz == 10000) {
+ adf4001_regs.ref_counter = 1;
+ adf4001_regs.n = 4;
+ } else {
+ return false;
+ }
+
+ program_regs();
+ return true;
+}
+
void adf4001_ctrl::program_regs(void) {
//no control over CE, only LE, therefore we use the initialization latch method
write_reg(3);
diff --git a/host/lib/usrp/common/adf4001_ctrl.hpp b/host/lib/usrp/common/adf4001_ctrl.hpp
index e801ae0c4..66c289f7d 100644
--- a/host/lib/usrp/common/adf4001_ctrl.hpp
+++ b/host/lib/usrp/common/adf4001_ctrl.hpp
@@ -125,6 +125,7 @@ class adf4001_ctrl {
public:
adf4001_ctrl(uhd::spi_iface::sptr _spi, int slaveno);
virtual void set_lock_to_ext_ref(bool external);
+ virtual bool set_refclk_frequency(int refclk_kHz);
private:
uhd::spi_iface::sptr spi_iface;