Commit Graph

6778 Commits

Author SHA1 Message Date
Martin Braun
8815098747 mpm: Harmonize all license header
Now uses SPDX headers everywhere.
2017-12-22 15:05:58 -08:00
Trung N Tran
d899f160d8 mpm: n310: add fpga compat number check
Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
Reviewed-By: Sugandha Gupta <sugandha.gupta@ettus.com>
Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:58 -08:00
Martin Braun
8210fc9b17 mpm: xport: Let UDP manager re-enumerate available CHDR ifaces on init()
This will enumerate CHDR interfaces as late as possible, so that the
user changing the IP address will not affect operations. Note that IP
is considered static during a UHD session.
2017-12-22 15:05:58 -08:00
Brent Stapleton
0bf22a3e57 mpm: UIOs now open only when necessary
Refactoring to use the C++-based UIO objects. The Liberio and Ethernet
objects now open the UIO before using it, and close it once done.

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:58 -08:00
Martin Braun
3cff6298ce mpm: Add mmap_regs_iface
This is a C++-based peek/poke interface into mmaped objects. Useful for
better control over UIO devices.

Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
2017-12-22 15:05:58 -08:00
Brent Stapleton
cb6d78d9e8 mpm: adding GPS sensor functions
Adding GPS TPV and SKY sensors to MPM, and their respective getters.

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:58 -08:00
Martin Braun
124b0ef3e9 mpmd: Allow to connect via addr or mgmt_addr
Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
2017-12-22 15:05:58 -08:00
Martin Braun
d3e6dd1140 mpm: Harmonize imports, tidy + sort modules
- Moved nijesdcore to cores/
- Moved udev, net, dtoverlay, uio to sys_utils/
- Made all imports non-relative (except in __init__.py files)
- Removed some unnecessary imports
- Reordered some imports for Python conventions
2017-12-22 15:05:58 -08:00
Trung N Tran
ea7cc7f825 mg: external LO need update correct freq
Need to update rf freq to half of ad9371
2017-12-22 15:05:58 -08:00
Martin Braun
9051301033 mg: Fix reading back output sampling rate
Reviewed-By: Trung Tran <trung.tran@ettus.com>
2017-12-22 15:05:58 -08:00
Martin Braun
b5404ef75f mpm: Fix floating-point errors in MCR configuration
Use fuzzy comparisons for setting the MCR.

Reviewed-By: Trung Tran <trung.tran@ettus.com>
2017-12-22 15:05:58 -08:00
djepson1
66af893e43 n3xx: enable DRP access to DB MGTS & QPLLs
- re-structured Magnesium.init_jesd() sequence to accomodate the reconfiguration
 - added DRP access protocols to nijesdcore.py
 - cleaned up a few comments and log statements in nijesdcore.py for flow

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:58 -08:00
Martin Braun
58a096dbb6 mpm: bfrfs: Assert reference buffer is a byte string
Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
2017-12-22 15:05:58 -08:00
Martin Braun
a568e1d58c types: Change eeprom_map_to to uint8_t vectors
mpmd_impl was already using this type, fixed conversion from
std::string to std::vector<uint8_t> there too.

Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
2017-12-22 15:05:58 -08:00
Trung N Tran
7df29f6ee6 mg: Add LO specific properties and methods
This change adds extra hooks to the property tree to make LOs accessible
thru the property tree.
These can be used by multi_usrp api.

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:57 -08:00
Trung N Tran
b9a0cf1467 mpm: Enable TX external LO set through args, simplify code
Simplify the process of setting external LO without calling through many API
layers.

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:57 -08:00
Trung N Tran
73eb899e53 n3xx: fix TX power loss
Need to  set RF frequency after set_tx_frequency done.
2017-12-22 15:05:57 -08:00
Daniel Jepson
7766d5ef39 tdc: fix bug in pps capture reporting
Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:57 -08:00
Daniel Jepson
d7c6c35216 mpm: add all time_source options and complete MB clk control
- complete time_source options to match updates to fpga registers
 - add methods for each of the bitfields in the clock control register
 - add init sequences for the meas_clk MMCM and PPS output

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:57 -08:00
sugandhagupta
b0a045f069 mpm: added uio for motherboard regs
Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:57 -08:00
Martin Braun
58e7022062 mpm: Factor out xport managers as own objects
- Move XportMgr classes out of n310.py
- Subclass them there and apply N310-specific settings
- Remove chdr_interfaces option from PeriphManagerBase
2017-12-22 15:05:57 -08:00
Trung N Tran
2db171798e mg: Update gain immediately after setting frequency
We want to have set frequency and set gain atomic. i.e if user set gain and
tune to different frequency, they expect the gain won't change.

Reviewed-By: Martin Braun <martin.braun@ettus.com>
2017-12-22 15:05:57 -08:00
Martin Braun
b4d8ef709c mg: Lock access to setters
Magnesium APIs are not thread-safe and can take a while to execute in
some cases. Adding a mutex to setters avoids invalid states of the
hardware from API calls.

Note that the lock applies to one block at a time. With the
two-radios-per-dboard approach, two locks need to be applied and race
conditions are still possible.

Reviewed-By: Trung Tran <trung.tran@ettus.com>
2017-12-22 15:05:57 -08:00
Martin Braun
06f6156f85 mpm: utils: Add string conversion utilities
Adds conversions for:
- Any-to-binary
- Any-to-UTF8
- Any-to-native
2017-12-22 15:05:57 -08:00
Trung N Tran
73334b188a mpm: close unused pyroute objects
Current code have couple places that open pyroute2 without closing it.
That seems to cause the file descriptor leakage.
This change effectively fix the issue #1964
2017-12-22 15:05:57 -08:00
Martin Braun
f357dee69c mpm: Return correct value for usrp_hwd.py --init-only
Before, it would always return success even if that failed.
2017-12-22 15:05:57 -08:00
Trung Tran
6fa0db94f1 mg: Fix gain setting on channels 1 and 3
Updated channel param:
-modify radio_ctrl_cpld the param for channel has to be more concrete type of chan_sel_t
-fix _update_rx_freq_switches and _update_tx_freq_switches to get correct
frequency by NOT using radio base class
2017-12-22 15:05:57 -08:00
Steven Bingler
0cb800e001 mpm: Fix python2 vs python3 zlib.crc32 output difference
Zlib's crc32 outputs signed values in python2 and unsigned values in
python3. As per this page (https://docs.python.org/2/library/zlib.html)
0xffffffff can be AND'd to the result to get the same value between
Python versions
2017-12-22 15:05:57 -08:00
Trung N Tran
e98a7159be mg: fix rx gain on channel 1 2017-12-22 15:05:57 -08:00
Martin Braun
1e4e90d240 mpm: n310: Compile .dts files to .dtbo on update
Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
2017-12-22 15:05:57 -08:00
Martin Braun
d5d7b84ac8 mpm: mg: Refactor init(), limit object scopes
- ClockSynchronizer object has no more permanent lifetime
- DboardClockControl object lives within `with' statement
- dboard_ctrl_regs are limited to init()
2017-12-22 15:05:57 -08:00
Trung N Tran
de7ed3081b mg: Fix TX power issues
- Fixed incorrect register address for channel 1 lowband mixer select
- Fixed enabling of bypass path
2017-12-22 15:05:57 -08:00
Martin Braun
8bccbf8564 mpmd: More gracefully quite the reclaim loop on failure 2017-12-22 15:05:57 -08:00
Martin Braun
b3662efeb3 mpm: Add temporary failure for FPGA reload
Note: This is subject to removal, but makes the FPGA reloading code
available to all until we fix the reload bug.
2017-12-22 15:05:57 -08:00
Brent Stapleton
19cdfb4148 mpm: Reset periph manager on update
Upon updating certain components (the FPGA, for example), the
Peripheral Manager is restarted, and the overlay is reapplied. In order
to facilitate this, the RPC server intercepts and handles the
update_component function.

Tested on the RJ45 ethernet connection. It probably won't work as well
if the SFP connection goes down when the overlay is removed.
2017-12-22 15:05:57 -08:00
Brent Stapleton
48d5d72fd7 mpm: adding destructor for UIO
UIO object now has an explicit destructor to properly tear down.
2017-12-22 15:05:57 -08:00
Brent Stapleton
d0cb6de410 mpm: PeriphManager decides and applies overlay
Previously, the daughterboard requested an overlay file based on SFP
preference using magic values. This commit moves the decision making to
the peripheral manager, which uses our singular name (ie 'n3xx' for the
N310).
2017-12-22 15:05:57 -08:00
Brent Stapleton
2eb1a5cfc3 fpga load: Components file paths in component dict
Paths to the component files is now stored in the updateable_components
dictionary. This makes them accessible in the base class, and generally cleans
up the member variables.
2017-12-22 15:05:57 -08:00
Brent Stapleton
a2029b0439 fpga load: Atomic updating of multiple components
- The MPM function update_component now accepts multiple components to
  be updated in one RPC call.
- Updated the property tree and image loader to match this change.
- Also added DTS loading to the image loader.
2017-12-22 15:05:43 -08:00
Trung N Tran
61774a0961 mg: fix TX dsa bug
DSA value was set at wrong value since it is at upper 6 bits of DSA register.
Added comment.
2017-12-22 15:05:07 -08:00
Martin Braun
44b117be95 mpm: mg: Add ref lock sensor
Note: The sensor API for this lives in n310, but it queries the dboards
for a ref lock status, which is now no longer a stub.
2017-12-22 15:05:07 -08:00
Martin Braun
c22ba82562 mpm: lmk04828: Fix docstring
Says check_plls_locked() would throw an exception. That's not true.
2017-12-22 15:05:07 -08:00
Trung N Tran
2926439e1e legacy_compat: extend radio index and radio slot
We need more radio index and radio slot for N310.
2017-12-22 15:05:07 -08:00
Martin Braun
d2594f9a92 mpm: mg: Add flag to see if master clock rate is being changed
Note: On the first run, this flag will always assert.
2017-12-22 15:05:07 -08:00
Martin Braun
064faf09c3 mpm: mg: Fix linter errors, compacted SPI factories 2017-12-22 15:05:07 -08:00
Martin Braun
ee00c0384e mpm: mg: Move some class attributes to local scopes
The clock_synchronizer, jesdcore, and dboard_clk_control objects don't
need to exist for the full lifetime of the Magnesium class. Having them
around complicates management of UIO file descriptors.
2017-12-22 15:05:07 -08:00
Martin Braun
4205c7b3da mpm: n310: Remove unused imports (linter warnings) 2017-12-22 15:05:07 -08:00
Trung N Tran
d66736953c mpm: mykonos: Increase SPI speed to 20 MHz 2017-12-22 15:05:07 -08:00
Trung N Tran
d8ebabaa12 mpm: mg: Remove unused spi_factories key 2017-12-22 15:05:07 -08:00
Trung Tran
201761cfa6 mpm: mg: Set default master_clock_rate to 125 MHz at every init 2017-12-22 15:05:07 -08:00