From 2df1b69dcc38effa5ba66eab86341df9a7a04733 Mon Sep 17 00:00:00 2001 From: Marcus Müller Date: Sun, 29 Mar 2015 22:52:43 +0200 Subject: db_tvrx2: fixed boost::format bug --- host/lib/usrp/dboard/db_tvrx2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'host/lib') diff --git a/host/lib/usrp/dboard/db_tvrx2.cpp b/host/lib/usrp/dboard/db_tvrx2.cpp index 9300483d1..00c2fef50 100644 --- a/host/lib/usrp/dboard/db_tvrx2.cpp +++ b/host/lib/usrp/dboard/db_tvrx2.cpp @@ -1014,7 +1014,7 @@ tvrx2::tvrx2(ctor_args_t args) : rx_dboard_base(args){ _freq_scalar = (6*16.0e6)/this->get_iface()->get_clock_rate(dboard_iface::UNIT_RX); } else if (ref_clock == 200e6) { - UHD_MSG(warning) << boost::format("ref_clock was 200e6, setting ref_clock divider for 100e6.") % ref_clock << std::endl; + UHD_MSG(warning) << boost::format("ref_clock was 200e6, setting ref_clock divider for 100e6.") << std::endl; this->get_iface()->set_clock_rate(dboard_iface::UNIT_RX, 100e6); this->get_iface()->set_gpio_out(dboard_iface::UNIT_RX, REFCLOCK_DIV6); -- cgit v1.2.3 From 1fe6a3a8aa4ae6af023552786a190f2d98de8a87 Mon Sep 17 00:00:00 2001 From: Neel Pandeya Date: Mon, 23 Mar 2015 16:10:04 -0700 Subject: x300: Fix for Bug #714: Phase wobble across four channels on two devices - Increased filter loop bandwith on clock control chip --- host/lib/usrp/x300/x300_clock_ctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'host/lib') diff --git a/host/lib/usrp/x300/x300_clock_ctrl.cpp b/host/lib/usrp/x300/x300_clock_ctrl.cpp index 247c10ac4..b59247d53 100644 --- a/host/lib/usrp/x300/x300_clock_ctrl.cpp +++ b/host/lib/usrp/x300/x300_clock_ctrl.cpp @@ -190,7 +190,7 @@ void set_master_clock_rate(double clock_rate) { // PLL1 - 2 MHz compare frequency _lmk04816_regs.PLL1_N_28 = 100; _lmk04816_regs.PLL1_R_27 = 5; - _lmk04816_regs.PLL1_CP_GAIN_27 = lmk04816_regs_t::PLL1_CP_GAIN_27_100UA; + _lmk04816_regs.PLL1_CP_GAIN_27 = lmk04816_regs_t::PLL1_CP_GAIN_27_1600UA; // PLL2 - 96 MHz compare frequency _lmk04816_regs.PLL2_N_30 = 5; -- cgit v1.2.3 From 949eebc0e456db83bb44da24197a038ea695b65b Mon Sep 17 00:00:00 2001 From: Ashish Chaudhari Date: Thu, 2 Apr 2015 16:57:29 -0700 Subject: b200: Bumped FPGA compat number to 5 --- host/lib/usrp/b200/b200_impl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'host/lib') diff --git a/host/lib/usrp/b200/b200_impl.hpp b/host/lib/usrp/b200/b200_impl.hpp index cff767b4b..b68293109 100644 --- a/host/lib/usrp/b200/b200_impl.hpp +++ b/host/lib/usrp/b200/b200_impl.hpp @@ -47,7 +47,7 @@ #include "recv_packet_demuxer_3000.hpp" static const boost::uint8_t B200_FW_COMPAT_NUM_MAJOR = 7; static const boost::uint8_t B200_FW_COMPAT_NUM_MINOR = 0; -static const boost::uint16_t B200_FPGA_COMPAT_NUM = 4; +static const boost::uint16_t B200_FPGA_COMPAT_NUM = 5; static const double B200_BUS_CLOCK_RATE = 100e6; static const double B200_DEFAULT_TICK_RATE = 32e6; static const double B200_DEFAULT_FREQ = 100e6; // Hz -- cgit v1.2.3 From ccf1d5c5e5f5c20ff77f45da3295b9dd5bdb6272 Mon Sep 17 00:00:00 2001 From: michael-west Date: Thu, 2 Apr 2015 10:51:27 -0700 Subject: uhd: Add ability to get and set command time through dboard_iface. This creates a wb_iface child class called timed_wb_iface, which adds support for timed commands. --- host/include/uhd/types/wb_iface.hpp | 20 +++++++++++++++++++- host/include/uhd/usrp/dboard_iface.hpp | 13 +++++++++++++ host/lib/types/wb_iface.cpp | 2 +- host/lib/usrp/b100/b100_impl.hpp | 2 +- host/lib/usrp/b100/dboard_iface.cpp | 18 +++++++++++++++--- host/lib/usrp/common/fifo_ctrl_excelsior.cpp | 8 +++++++- host/lib/usrp/common/fifo_ctrl_excelsior.hpp | 7 ++----- host/lib/usrp/cores/radio_ctrl_core_3000.cpp | 8 +++++++- host/lib/usrp/cores/radio_ctrl_core_3000.hpp | 7 +++++-- host/lib/usrp/dboard_iface.cpp | 12 +++++++++++- host/lib/usrp/e100/dboard_iface.cpp | 12 ++++++++++++ host/lib/usrp/usrp2/dboard_iface.cpp | 25 ++++++++++++++++++++----- host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp | 6 ++++++ host/lib/usrp/usrp2/usrp2_fifo_ctrl.hpp | 7 ++----- host/lib/usrp/usrp2/usrp2_iface.cpp | 12 +++++++++++- host/lib/usrp/usrp2/usrp2_iface.hpp | 2 +- host/lib/usrp/usrp2/usrp2_impl.hpp | 4 ++-- host/lib/usrp/x300/x300_dboard_iface.cpp | 15 ++++++++++++++- host/lib/usrp/x300/x300_impl.cpp | 3 ++- host/lib/usrp/x300/x300_impl.hpp | 1 + 20 files changed, 152 insertions(+), 32 deletions(-) (limited to 'host/lib') diff --git a/host/include/uhd/types/wb_iface.hpp b/host/include/uhd/types/wb_iface.hpp index c508062e4..e24e9363e 100644 --- a/host/include/uhd/types/wb_iface.hpp +++ b/host/include/uhd/types/wb_iface.hpp @@ -1,5 +1,5 @@ // -// Copyright 2011-2013 Ettus Research LLC +// Copyright 2011-2013,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -19,6 +19,7 @@ #define INCLUDED_UHD_TYPES_WB_IFACE_HPP #include +#include #include #include @@ -74,7 +75,24 @@ public: * \return the 16bit data */ virtual boost::uint16_t peek16(const wb_addr_type addr); +}; +class UHD_API timed_wb_iface : public wb_iface +{ +public: + typedef boost::shared_ptr sptr; + + /*! + * Get the command time. + * \return the command time + */ + virtual time_spec_t get_time(void) = 0; + + /*! + * Set the command time. + * \param t the command time + */ + virtual void set_time(const time_spec_t& t) = 0; }; } //namespace uhd diff --git a/host/include/uhd/usrp/dboard_iface.hpp b/host/include/uhd/usrp/dboard_iface.hpp index b0f92e2ab..f8f318a40 100644 --- a/host/include/uhd/usrp/dboard_iface.hpp +++ b/host/include/uhd/usrp/dboard_iface.hpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -280,6 +281,18 @@ public: */ virtual double get_codec_rate(unit_t unit) = 0; + /*! + * Get the command time. + * \return the command time + */ + virtual uhd::time_spec_t get_command_time(void); + + /*! + * Set the command time. + * \param t the time + */ + virtual void set_command_time(const uhd::time_spec_t& t); + private: UHD_PIMPL_DECL(impl) _impl; diff --git a/host/lib/types/wb_iface.cpp b/host/lib/types/wb_iface.cpp index 6edfdfe2f..dc8d2a83e 100644 --- a/host/lib/types/wb_iface.cpp +++ b/host/lib/types/wb_iface.cpp @@ -1,5 +1,5 @@ // -// Copyright 2013 Ettus Research LLC +// Copyright 2013,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by diff --git a/host/lib/usrp/b100/b100_impl.hpp b/host/lib/usrp/b100/b100_impl.hpp index dbca543be..5a8f70d73 100644 --- a/host/lib/usrp/b100/b100_impl.hpp +++ b/host/lib/usrp/b100/b100_impl.hpp @@ -68,7 +68,7 @@ static const size_t B100_MAX_RATE_USB2 = 32000000; // bytes/s //! Make a b100 dboard interface uhd::usrp::dboard_iface::sptr make_b100_dboard_iface( - uhd::wb_iface::sptr wb_iface, + uhd::timed_wb_iface::sptr wb_iface, uhd::i2c_iface::sptr i2c_iface, uhd::spi_iface::sptr spi_iface, b100_clock_ctrl::sptr clock, diff --git a/host/lib/usrp/b100/dboard_iface.cpp b/host/lib/usrp/b100/dboard_iface.cpp index efbba1c4c..325efeec1 100644 --- a/host/lib/usrp/b100/dboard_iface.cpp +++ b/host/lib/usrp/b100/dboard_iface.cpp @@ -34,7 +34,7 @@ class b100_dboard_iface : public dboard_iface{ public: b100_dboard_iface( - wb_iface::sptr wb_iface, + timed_wb_iface::sptr wb_iface, i2c_iface::sptr i2c_iface, spi_iface::sptr spi_iface, b100_clock_ctrl::sptr clock, @@ -72,6 +72,8 @@ public: void _set_gpio_out(unit_t, boost::uint16_t); void set_gpio_debug(unit_t, int); boost::uint16_t read_gpio(unit_t); + void set_command_time(const uhd::time_spec_t& t); + uhd::time_spec_t get_command_time(void); void write_i2c(boost::uint16_t, const byte_vector_t &); byte_vector_t read_i2c(boost::uint16_t, size_t); @@ -97,7 +99,7 @@ public: double get_codec_rate(unit_t); private: - wb_iface::sptr _wb_iface; + timed_wb_iface::sptr _wb_iface; i2c_iface::sptr _i2c_iface; spi_iface::sptr _spi_iface; b100_clock_ctrl::sptr _clock; @@ -109,7 +111,7 @@ private: * Make Function **********************************************************************/ dboard_iface::sptr make_b100_dboard_iface( - wb_iface::sptr wb_iface, + timed_wb_iface::sptr wb_iface, i2c_iface::sptr i2c_iface, spi_iface::sptr spi_iface, b100_clock_ctrl::sptr clock, @@ -256,3 +258,13 @@ double b100_dboard_iface::read_aux_adc(dboard_iface::unit_t unit, aux_adc_t whic ; return _codec->read_aux_adc(unit_to_which_to_aux_adc[unit][which]); } + +void b100_dboard_iface::set_command_time(const uhd::time_spec_t& t) +{ + _wb_iface->set_time(t); +} + +uhd::time_spec_t b100_dboard_iface::get_command_time(void) +{ + return _wb_iface->get_time(); +} diff --git a/host/lib/usrp/common/fifo_ctrl_excelsior.cpp b/host/lib/usrp/common/fifo_ctrl_excelsior.cpp index 2ea5b66da..f55d1ef41 100644 --- a/host/lib/usrp/common/fifo_ctrl_excelsior.cpp +++ b/host/lib/usrp/common/fifo_ctrl_excelsior.cpp @@ -1,5 +1,5 @@ // -// Copyright 2012 Ettus Research LLC +// Copyright 2012,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -207,6 +207,12 @@ public: if (_use_time) _timeout = MASSIVE_TIMEOUT; //permanently sets larger timeout } + uhd::time_spec_t get_time(void) + { + boost::mutex::scoped_lock lock(_mutex); + return _time; + } + void set_tick_rate(const double rate){ boost::mutex::scoped_lock lock(_mutex); _tick_rate = rate; diff --git a/host/lib/usrp/common/fifo_ctrl_excelsior.hpp b/host/lib/usrp/common/fifo_ctrl_excelsior.hpp index bd7777ffa..759e2ccc9 100644 --- a/host/lib/usrp/common/fifo_ctrl_excelsior.hpp +++ b/host/lib/usrp/common/fifo_ctrl_excelsior.hpp @@ -1,5 +1,5 @@ // -// Copyright 2012 Ettus Research LLC +// Copyright 2012,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -40,7 +40,7 @@ struct fifo_ctrl_excelsior_config /*! * Provide access to peek, poke, spi, and async messages. */ -class fifo_ctrl_excelsior : public uhd::wb_iface, public uhd::spi_iface +class fifo_ctrl_excelsior : public uhd::timed_wb_iface, public uhd::spi_iface { public: typedef boost::shared_ptr sptr; @@ -51,9 +51,6 @@ public: const fifo_ctrl_excelsior_config &config ); - //! Set the command time that will activate - virtual void set_time(const uhd::time_spec_t &time) = 0; - //! Set the tick rate (converting time into ticks) virtual void set_tick_rate(const double rate) = 0; diff --git a/host/lib/usrp/cores/radio_ctrl_core_3000.cpp b/host/lib/usrp/cores/radio_ctrl_core_3000.cpp index 1c9b5c4fa..47cfaf3ca 100644 --- a/host/lib/usrp/cores/radio_ctrl_core_3000.cpp +++ b/host/lib/usrp/cores/radio_ctrl_core_3000.cpp @@ -1,5 +1,5 @@ // -// Copyright 2012-2014 Ettus Research LLC +// Copyright 2012-2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -111,6 +111,12 @@ public: if (_use_time) _timeout = MASSIVE_TIMEOUT; //permanently sets larger timeout } + uhd::time_spec_t get_time(void) + { + boost::mutex::scoped_lock lock(_mutex); + return _time; + } + void set_tick_rate(const double rate) { boost::mutex::scoped_lock lock(_mutex); diff --git a/host/lib/usrp/cores/radio_ctrl_core_3000.hpp b/host/lib/usrp/cores/radio_ctrl_core_3000.hpp index 1c25ceb2c..c1cc1d372 100644 --- a/host/lib/usrp/cores/radio_ctrl_core_3000.hpp +++ b/host/lib/usrp/cores/radio_ctrl_core_3000.hpp @@ -1,5 +1,5 @@ // -// Copyright 2012-2014 Ettus Research LLC +// Copyright 2012-2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ /*! * Provide access to peek, poke for the radio ctrl module */ -class radio_ctrl_core_3000 : public uhd::wb_iface +class radio_ctrl_core_3000 : public uhd::timed_wb_iface { public: typedef boost::shared_ptr sptr; @@ -54,6 +54,9 @@ public: //! Set the command time that will activate virtual void set_time(const uhd::time_spec_t &time) = 0; + //! Get the command time that will activate + virtual uhd::time_spec_t get_time(void) = 0; + //! Set the tick rate (converting time into ticks) virtual void set_tick_rate(const double rate) = 0; }; diff --git a/host/lib/usrp/dboard_iface.cpp b/host/lib/usrp/dboard_iface.cpp index 6be50130a..092e005f0 100644 --- a/host/lib/usrp/dboard_iface.cpp +++ b/host/lib/usrp/dboard_iface.cpp @@ -1,5 +1,5 @@ // -// Copyright 2010-2013 Ettus Research LLC +// Copyright 2010-2013,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -81,3 +81,13 @@ void dboard_iface::set_gpio_out( boost::uint16_t dboard_iface::get_gpio_out(unit_t unit){ return _impl->gpio_out_shadow[unit]; } + +void dboard_iface::set_command_time(const uhd::time_spec_t&) +{ + throw uhd::not_implemented_error("timed command feature not implemented on this hardware"); +} + +uhd::time_spec_t dboard_iface::get_command_time() +{ + return uhd::time_spec_t(0.0); +} diff --git a/host/lib/usrp/e100/dboard_iface.cpp b/host/lib/usrp/e100/dboard_iface.cpp index 07d0049c8..42d1733ab 100644 --- a/host/lib/usrp/e100/dboard_iface.cpp +++ b/host/lib/usrp/e100/dboard_iface.cpp @@ -72,6 +72,8 @@ public: void _set_gpio_out(unit_t, boost::uint16_t); void set_gpio_debug(unit_t, int); boost::uint16_t read_gpio(unit_t); + void set_command_time(const uhd::time_spec_t& t); + uhd::time_spec_t get_command_time(void); void write_i2c(boost::uint16_t, const byte_vector_t &); byte_vector_t read_i2c(boost::uint16_t, size_t); @@ -256,3 +258,13 @@ double e100_dboard_iface::read_aux_adc(dboard_iface::unit_t unit, aux_adc_t whic ; return _codec->read_aux_adc(unit_to_which_to_aux_adc[unit][which]); } + +uhd::time_spec_t e100_dboard_iface::get_command_time() +{ + return _wb_iface->get_time(); +} + +void e100_dboard_iface::set_command_time(const uhd::time_spec_t& t) +{ + _wb_iface->set_time(t); +} diff --git a/host/lib/usrp/usrp2/dboard_iface.cpp b/host/lib/usrp/usrp2/dboard_iface.cpp index 8f2d0f0dc..7bb69c7b7 100644 --- a/host/lib/usrp/usrp2/dboard_iface.cpp +++ b/host/lib/usrp/usrp2/dboard_iface.cpp @@ -1,5 +1,5 @@ // -// Copyright 2010-2012 Ettus Research LLC +// Copyright 2010-2012,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -19,6 +19,7 @@ #include #include "clock_ctrl.hpp" #include "usrp2_regs.hpp" //wishbone address constants +#include "usrp2_fifo_ctrl.hpp" #include #include #include @@ -36,7 +37,7 @@ using namespace boost::assign; class usrp2_dboard_iface : public dboard_iface{ public: usrp2_dboard_iface( - wb_iface::sptr wb_iface, + timed_wb_iface::sptr wb_iface, uhd::i2c_iface::sptr i2c_iface, uhd::spi_iface::sptr spi_iface, usrp2_clock_ctrl::sptr clock_ctrl @@ -59,6 +60,8 @@ public: void _set_gpio_out(unit_t, boost::uint16_t); void set_gpio_debug(unit_t, int); boost::uint16_t read_gpio(unit_t); + void set_command_time(const uhd::time_spec_t& t); + uhd::time_spec_t get_command_time(void); void write_i2c(boost::uint16_t, const byte_vector_t &); byte_vector_t read_i2c(boost::uint16_t, size_t); @@ -84,6 +87,7 @@ public: ); private: + timed_wb_iface::sptr _wb_iface; uhd::i2c_iface::sptr _i2c_iface; uhd::spi_iface::sptr _spi_iface; usrp2_clock_ctrl::sptr _clock_ctrl; @@ -98,7 +102,7 @@ private: * Make Function **********************************************************************/ dboard_iface::sptr make_usrp2_dboard_iface( - wb_iface::sptr wb_iface, + timed_wb_iface::sptr wb_iface, uhd::i2c_iface::sptr i2c_iface, uhd::spi_iface::sptr spi_iface, usrp2_clock_ctrl::sptr clock_ctrl @@ -110,11 +114,12 @@ dboard_iface::sptr make_usrp2_dboard_iface( * Structors **********************************************************************/ usrp2_dboard_iface::usrp2_dboard_iface( - wb_iface::sptr wb_iface, + timed_wb_iface::sptr wb_iface, uhd::i2c_iface::sptr i2c_iface, uhd::spi_iface::sptr spi_iface, usrp2_clock_ctrl::sptr clock_ctrl ): + _wb_iface(wb_iface), _i2c_iface(i2c_iface), _spi_iface(spi_iface), _clock_ctrl(clock_ctrl) @@ -246,7 +251,7 @@ void usrp2_dboard_iface::_write_aux_dac(unit_t unit){ (UNIT_TX, SPI_SS_TX_DAC) ; _spi_iface->write_spi( - unit_to_spi_dac[unit], spi_config_t::EDGE_FALL, + unit_to_spi_dac[unit], spi_config_t::EDGE_FALL, _dac_regs[unit].get_reg(), 24 ); } @@ -305,3 +310,13 @@ double usrp2_dboard_iface::read_aux_adc(unit_t unit, aux_adc_t which){ //convert to voltage and return return 3.3*ad7922_regs.result/4095; } + +uhd::time_spec_t usrp2_dboard_iface::get_command_time() +{ + return _wb_iface->get_time(); +} + +void usrp2_dboard_iface::set_command_time(const uhd::time_spec_t& t) +{ + _wb_iface->set_time(t); +} diff --git a/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp b/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp index 9e8687b94..0276a7a66 100644 --- a/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp +++ b/host/lib/usrp/usrp2/usrp2_fifo_ctrl.cpp @@ -155,6 +155,12 @@ public: if (_use_time) _timeout = MASSIVE_TIMEOUT; //permanently sets larger timeout } + uhd::time_spec_t get_time() + { + boost::mutex::scoped_lock lock(_mutex); + return _time; + } + void set_tick_rate(const double rate){ boost::mutex::scoped_lock lock(_mutex); _tick_rate = rate; diff --git a/host/lib/usrp/usrp2/usrp2_fifo_ctrl.hpp b/host/lib/usrp/usrp2/usrp2_fifo_ctrl.hpp index 13dfb5b46..5bc7f6676 100644 --- a/host/lib/usrp/usrp2/usrp2_fifo_ctrl.hpp +++ b/host/lib/usrp/usrp2/usrp2_fifo_ctrl.hpp @@ -1,5 +1,5 @@ // -// Copyright 2012 Ettus Research LLC +// Copyright 2012,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -30,7 +30,7 @@ * The usrp2 FIFO control class: * Provide high-speed peek/poke interface. */ -class usrp2_fifo_ctrl : public uhd::wb_iface, public uhd::spi_iface +class usrp2_fifo_ctrl : public uhd::timed_wb_iface, public uhd::spi_iface { public: typedef boost::shared_ptr sptr; @@ -38,9 +38,6 @@ public: //! Make a new FIFO control object static sptr make(uhd::transport::zero_copy_if::sptr xport); - //! Set the command time that will activate - virtual void set_time(const uhd::time_spec_t &time) = 0; - //! Set the tick rate (converting time into ticks) virtual void set_tick_rate(const double rate) = 0; }; diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp index 3ffbf9aac..1d41173f8 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.cpp +++ b/host/lib/usrp/usrp2/usrp2_iface.cpp @@ -1,5 +1,5 @@ // -// Copyright 2010-2012,2014 Ettus Research LLC +// Copyright 2010-2012,2014-2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -399,6 +399,16 @@ public: } } + void set_time(const time_spec_t&) + { + throw uhd::not_implemented_error("Timed commands not supported"); + } + + time_spec_t get_time(void) + { + return (0.0); + } + private: //this lovely lady makes it all possible udp_simple::sptr _ctrl_transport; diff --git a/host/lib/usrp/usrp2/usrp2_iface.hpp b/host/lib/usrp/usrp2/usrp2_iface.hpp index a01f2ccfa..833016b7c 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.hpp +++ b/host/lib/usrp/usrp2/usrp2_iface.hpp @@ -33,7 +33,7 @@ * Provides a set of functions to implementation layer. * Including spi, peek, poke, control... */ -class usrp2_iface : public uhd::wb_iface, public uhd::spi_iface, public uhd::i2c_iface +class usrp2_iface : public uhd::timed_wb_iface, public uhd::spi_iface, public uhd::i2c_iface { public: typedef boost::shared_ptr sptr; diff --git a/host/lib/usrp/usrp2/usrp2_impl.hpp b/host/lib/usrp/usrp2/usrp2_impl.hpp index fac4b3907..701403029 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.hpp +++ b/host/lib/usrp/usrp2/usrp2_impl.hpp @@ -57,7 +57,7 @@ static const std::string USRP2_EEPROM_MAP_KEY = "N100"; //! Make a usrp2 dboard interface. uhd::usrp::dboard_iface::sptr make_usrp2_dboard_iface( - uhd::wb_iface::sptr wb_iface, + uhd::timed_wb_iface::sptr wb_iface, uhd::i2c_iface::sptr i2c_iface, uhd::spi_iface::sptr spi_iface, usrp2_clock_ctrl::sptr clk_ctrl @@ -83,7 +83,7 @@ private: usrp2_iface::sptr iface; usrp2_fifo_ctrl::sptr fifo_ctrl; uhd::spi_iface::sptr spiface; - uhd::wb_iface::sptr wbiface; + uhd::timed_wb_iface::sptr wbiface; usrp2_clock_ctrl::sptr clock; usrp2_codec_ctrl::sptr codec; uhd::gps_ctrl::sptr gps; diff --git a/host/lib/usrp/x300/x300_dboard_iface.cpp b/host/lib/usrp/x300/x300_dboard_iface.cpp index eff5183e0..c286e805a 100644 --- a/host/lib/usrp/x300/x300_dboard_iface.cpp +++ b/host/lib/usrp/x300/x300_dboard_iface.cpp @@ -1,5 +1,5 @@ // -// Copyright 2013 Ettus Research LLC +// Copyright 2013,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -50,6 +50,9 @@ public: void _set_gpio_ddr(unit_t, boost::uint16_t); void _set_gpio_out(unit_t, boost::uint16_t); + void set_command_time(const uhd::time_spec_t& t); + uhd::time_spec_t get_command_time(void); + void set_gpio_debug(unit_t, int); boost::uint16_t read_gpio(unit_t); @@ -331,3 +334,13 @@ double x300_dboard_iface::read_aux_adc(unit_t unit, aux_adc_t which) //convert to voltage and return return 3.3*ad7922_regs.result/4095; } + +uhd::time_spec_t x300_dboard_iface::get_command_time() +{ + return _config.cmd_time_ctrl->get_time(); +} + +void x300_dboard_iface::set_command_time(const uhd::time_spec_t& t) +{ + _config.cmd_time_ctrl->set_time(t); +} diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp index 2de44a99d..809a56765 100644 --- a/host/lib/usrp/x300/x300_impl.cpp +++ b/host/lib/usrp/x300/x300_impl.cpp @@ -1014,6 +1014,7 @@ void x300_impl::setup_radio(const size_t mb_i, const std::string &slot_name) db_config.which_rx_clk = (slot_name == "A")? X300_CLOCK_WHICH_DB0_RX : X300_CLOCK_WHICH_DB1_RX; db_config.which_tx_clk = (slot_name == "A")? X300_CLOCK_WHICH_DB0_TX : X300_CLOCK_WHICH_DB1_TX; db_config.dboard_slot = (slot_name == "A")? 0 : 1; + db_config.cmd_time_ctrl = perif.ctrl; _dboard_ifaces[db_path] = x300_make_dboard_iface(db_config); //create a new dboard manager @@ -1353,7 +1354,7 @@ void x300_impl::set_time_source_out(mboard_members_t &mb, const bool enb) void x300_impl::update_clock_source(mboard_members_t &mb, const std::string &source) { //Optimize for the case when the current source is internal and we are trying - //to set it to internal. This is the only case where we are guaranteed that + //to set it to internal. This is the only case where we are guaranteed that //the clock has not gone away so we can skip setting the MUX and reseting the LMK. if (not (mb.current_refclk_src == "internal" and source == "internal")) { //Update the clock MUX on the motherboard to select the requested source diff --git a/host/lib/usrp/x300/x300_impl.hpp b/host/lib/usrp/x300/x300_impl.hpp index 70c5dccb4..342664ece 100644 --- a/host/lib/usrp/x300/x300_impl.hpp +++ b/host/lib/usrp/x300/x300_impl.hpp @@ -131,6 +131,7 @@ struct x300_dboard_iface_config_t x300_clock_which_t which_rx_clk; x300_clock_which_t which_tx_clk; boost::uint8_t dboard_slot; + uhd::timed_wb_iface::sptr cmd_time_ctrl; }; uhd::usrp::dboard_iface::sptr x300_make_dboard_iface(const x300_dboard_iface_config_t &); -- cgit v1.2.3 From 65a1b6d7f422a657d828f2080347ffebc4a99ead Mon Sep 17 00:00:00 2001 From: michael-west Date: Thu, 2 Apr 2015 14:57:19 -0700 Subject: e100: Support command time access through dboard_iface. --- host/lib/usrp/e100/dboard_iface.cpp | 8 ++++---- host/lib/usrp/e100/e100_impl.hpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'host/lib') diff --git a/host/lib/usrp/e100/dboard_iface.cpp b/host/lib/usrp/e100/dboard_iface.cpp index 42d1733ab..b5baf6c56 100644 --- a/host/lib/usrp/e100/dboard_iface.cpp +++ b/host/lib/usrp/e100/dboard_iface.cpp @@ -1,5 +1,5 @@ // -// Copyright 2010-2011 Ettus Research LLC +// Copyright 2010-2011,2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -34,7 +34,7 @@ class e100_dboard_iface : public dboard_iface{ public: e100_dboard_iface( - wb_iface::sptr wb_iface, + timed_wb_iface::sptr wb_iface, i2c_iface::sptr i2c_iface, spi_iface::sptr spi_iface, e100_clock_ctrl::sptr clock, @@ -99,7 +99,7 @@ public: double get_codec_rate(unit_t); private: - wb_iface::sptr _wb_iface; + timed_wb_iface::sptr _wb_iface; i2c_iface::sptr _i2c_iface; spi_iface::sptr _spi_iface; e100_clock_ctrl::sptr _clock; @@ -111,7 +111,7 @@ private: * Make Function **********************************************************************/ dboard_iface::sptr make_e100_dboard_iface( - wb_iface::sptr wb_iface, + timed_wb_iface::sptr wb_iface, i2c_iface::sptr i2c_iface, spi_iface::sptr spi_iface, e100_clock_ctrl::sptr clock, diff --git a/host/lib/usrp/e100/e100_impl.hpp b/host/lib/usrp/e100/e100_impl.hpp index 0838bd8c4..4efc21427 100644 --- a/host/lib/usrp/e100/e100_impl.hpp +++ b/host/lib/usrp/e100/e100_impl.hpp @@ -1,5 +1,5 @@ // -// Copyright 2010-2012,2014 Ettus Research LLC +// Copyright 2010-2012,2014-2015 Ettus Research LLC // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -61,7 +61,7 @@ extern void e100_load_fpga(const std::string &bin_file); //! Make an e100 dboard interface uhd::usrp::dboard_iface::sptr make_e100_dboard_iface( - uhd::wb_iface::sptr wb_iface, + uhd::timed_wb_iface::sptr wb_iface, uhd::i2c_iface::sptr i2c_iface, uhd::spi_iface::sptr spi_iface, e100_clock_ctrl::sptr clock, -- cgit v1.2.3 From 93d909e7c8c4053a05cdc9cb69c886183b4a7f09 Mon Sep 17 00:00:00 2001 From: Ian Buckley Date: Mon, 6 Apr 2015 14:01:03 -0700 Subject: B200: Change Catalina Reg 0x06 for RX data setup/hold timing issue @ 30.72MHz. Issue #726 --- host/lib/usrp/b200/b200_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'host/lib') diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp index eead07e85..e567ff434 100644 --- a/host/lib/usrp/b200/b200_impl.cpp +++ b/host/lib/usrp/b200/b200_impl.cpp @@ -67,7 +67,7 @@ public: digital_interface_delays_t get_digital_interface_timing() { digital_interface_delays_t delays; delays.rx_clk_delay = 0; - delays.rx_data_delay = 0xF; + delays.rx_data_delay = 0x6; delays.tx_clk_delay = 0; delays.tx_data_delay = 0xF; return delays; -- cgit v1.2.3 From 9b50f5ef896de0620beda6fbfb81e2871f17078c Mon Sep 17 00:00:00 2001 From: Moritz Fischer Date: Wed, 8 Apr 2015 10:15:33 -0700 Subject: e300: remote_codec_ctrl: Fixed typo in error message --- host/lib/usrp/e300/e300_remote_codec_ctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'host/lib') diff --git a/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp b/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp index ed8131e2f..d3942d587 100644 --- a/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp +++ b/host/lib/usrp/e300/e300_remote_codec_ctrl.cpp @@ -137,7 +137,7 @@ private: } if (_args.action != _retval.action) - throw std::runtime_error("e300_remote_codec_ctrl_impl trancation failed."); + throw std::runtime_error("e300_remote_codec_ctrl_impl transaction failed."); } void _clear() { -- cgit v1.2.3