diff options
author | Brent Stapleton <brent.stapleton@ettus.com> | 2017-10-31 16:02:44 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:05:05 -0800 |
commit | d884d7af8e5e62a1650884a6ef5d255ff04708b8 (patch) | |
tree | f8b886524a9d31c557c3e4acf159bd15d10d6059 /host | |
parent | b4ba46cbf2eddc3c79bd10ea2e4cf9ebc8c6914b (diff) | |
download | uhd-d884d7af8e5e62a1650884a6ef5d255ff04708b8.tar.gz uhd-d884d7af8e5e62a1650884a6ef5d255ff04708b8.tar.bz2 uhd-d884d7af8e5e62a1650884a6ef5d255ff04708b8.zip |
mpmd: added support for the skip_init key in the device args
Adding skip_init to the device args makes it so rfnoc blocks, etc. are not initialized.
Diffstat (limited to 'host')
-rw-r--r-- | host/lib/usrp/mpmd/mpmd_impl.cpp | 41 | ||||
-rw-r--r-- | host/lib/usrp/mpmd/mpmd_mboard_impl.cpp | 5 |
2 files changed, 30 insertions, 16 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_impl.cpp b/host/lib/usrp/mpmd/mpmd_impl.cpp index 965ede6f5..fa10c74e8 100644 --- a/host/lib/usrp/mpmd/mpmd_impl.cpp +++ b/host/lib/usrp/mpmd/mpmd_impl.cpp @@ -246,24 +246,28 @@ mpmd_impl::mpmd_impl(const device_addr_t& device_args) init_property_tree(_tree, fs_path("/mboards") / mb_i, _mb[mb_i].get()); } - // This might be parallelized. std::tasks would probably be a good way to - // do that if we want to. - for (size_t mb_i = 0; mb_i < mb_args.size(); ++mb_i) { - setup_rfnoc_blocks(mb_i, mb_args[mb_i]); - } + if (not device_args.has_key("skip_init")) { + // This might be parallelized. std::tasks would probably be a good way to + // do that if we want to. + for (size_t mb_i = 0; mb_i < mb_args.size(); ++mb_i) { + setup_rfnoc_blocks(mb_i, mb_args[mb_i]); + } - // FIXME this section only makes sense for when the time source is external. - // So, check for that, or something similar. - // This section of code assumes that the prop tree is set and we have access - // to the timekeepers. So don't move it anywhere else. - if (device_args.has_key("sync_time")) { - reset_time_synchronized(_tree); - } + // FIXME this section only makes sense for when the time source is external. + // So, check for that, or something similar. + // This section of code assumes that the prop tree is set and we have access + // to the timekeepers. So don't move it anywhere else. + if (device_args.has_key("sync_time")) { + reset_time_synchronized(_tree); + } - auto filtered_block_args = device_args; // TODO actually filter - // Blocks will finalize their own setup in this function. They have (and - // might need) full access to the prop tree, the timekeepers, etc. - setup_rpc_blocks(filtered_block_args); + auto filtered_block_args = device_args; // TODO actually filter + // Blocks will finalize their own setup in this function. They have (and + // might need) full access to the prop tree, the timekeepers, etc. + setup_rpc_blocks(filtered_block_args); + } else { + UHD_LOG_INFO("MPMD", "Claimed device without full initialization."); + } } mpmd_impl::~mpmd_impl() @@ -287,6 +291,11 @@ mpmd_mboard_impl::uptr mpmd_impl::setup_mb( device_args, device_args["addr"] ); + + if (device_args.has_key("skip_init")) { + return mb; + } + for (size_t xbar_index = 0; xbar_index < mb->num_xbars; xbar_index++) { mb->set_xbar_local_addr(xbar_index, allocate_xbar_local_addr()); } diff --git a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp index 0c8e5911a..d06f25939 100644 --- a/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp +++ b/host/lib/usrp/mpmd/mpmd_mboard_impl.cpp @@ -85,6 +85,11 @@ mpmd_mboard_impl::mpmd_mboard_impl( _claimer_task = claim_device_and_make_task(rpc, mb_args); // No one else can now claim the device. + if (mb_args_.has_key("skip_init")) { + UHD_LOG_DEBUG("MPMD", "Claimed device, but skipped init."); + return; + } + init_device(rpc, mb_args); // RFNoC block clocks are now on. Noc-IDs can be read back. |