aboutsummaryrefslogtreecommitdiffstats
path: root/mpm
Commit message (Collapse)AuthorAgeFilesLines
* mpm: add FPGA type to the info returned during discoveryMichael Dickens2021-05-203-0/+8
| | | | Also update this info upon server reset, such as when a new FPGA image is loaded
* mpm: remove unused argument infoMichael Dickens2021-05-201-2/+0
|
* MPM for N32x: Add 'XQ' image as valid when using sfp0 as time_sourceMichael Dickens2021-05-181-1/+1
|
* mpm: lmk04832: Clean up driverMartin Braun2021-05-101-12/+23
| | | | Mostly cosmetic and Pylint fixes.
* mpm: PeriphManagerBase: Add _add_public_methods()Martin Braun2021-04-291-0/+41
| | | | This allows conditionally adding public API methods.
* mpm: Fix minor log formatting issueMartin Braun2021-04-271-1/+1
|
* mpm: db_flash: Check mount status before mountingMartin Braun2021-04-261-7/+13
| | | | | This will make sure the flash partition is not already mounted before trying to re-mount.
* fixup! mpm: rpc: don't expose reset_mgr call via RPCGrant Meyerhoff2021-04-221-1/+1
|
* mpm: sysutils: mount: Check both mount point and data pathMartin Braun2021-04-211-4/+5
| | | | | This will return False on ismounted() if a Mount class is mounted, but in the wrong spot.
* mpm: mount: Demote already-mounted warningMartin Braun2021-04-211-1/+1
| | | | | | | | The class Mount defines a mount point and device path. It currently warns if mount() is called twice, but that warning is at odds with the contract of that API. It even returns 'True' (== success) after printing the warning, and the outcome is the desired one. For that reason, we demote the warning to a debug statement.
* mpm: periph_mgr: Demote "no SPI nodes" warningMartin Braun2021-04-211-1/+1
| | | | | | | | | When there are SPI nodes declared for a daughterboard, MPM will emit a warning: "No SPI nodes for dboard". The warning is misleading, because this only occurs when no SPI nodes where *declared*, not when they were declared but not found. This is entirely normal for USRPs where the daughterboards do not have SPI nodes, and thus, not even worth a debug statement.
* mpm: mg: periphs: Read lowband lo lock status from cpldmattprost2021-04-191-1/+2
| | | | | | | Fix the issue where N310 did not correctly read the lo lock status from the cpld. Signed-off-by: mattprost <matt.prost@ni.com>
* mpm: Remove references to rfnoc_num_blocksMartin Braun2021-04-122-4/+4
| | | | | | | | | | | rfnoc_num_blocks is a device arg that could be used in UHD 3.15 (and below) to artificially skip enumeration of RFNoC blocks. Since the block enumeration works very differently in UHD 4, this arg was never supported there. This removes references to this arg in some BIST files. It is not harmful, but also serves no purpose, and could be construed as being useful upon lecture of these codes.
* mpm: Remove logging for mmap_regs_ifaceMartin Braun2021-04-121-2/+0
| | | | | These are very noisy, and the signal-to-noise ratio suffers when these are enabled.
* mpm: periph manager: Fix get_mb_eeprom() return value formattingMartin Braun2021-03-251-1/+4
| | | | | | | | | | The get_mb_eeprom() RPC call is supposed to return a string -> string map and thus converts all EEPROM entries to strings. However, for raw strings, the existing conversion (using str()) was not correct (we need to decode raw strings first). This would lead to things like the serial being returned as b'ABCD123' instead of just ABCD123.
* mpm: rpc: don't expose reset_mgr call via RPCThomas Vogel2021-03-111-2/+2
|
* mpm: Add i2c_dev lookup using sys_nameToni Jones2021-03-081-7/+51
| | | | | | | | | | | Add i2c_dev adapter device lookup which uses a the sys_name value instead of OF_NAME to find the adapter. OF_NAME is not unique for some i2c device nodes. The logic for finding the adapter from the parent node was pulled into a helper function and is shared across both lookup functions. Co-authored-by: Michael Auchter <michael.auchter@ni.com> Co-authored-by: Toni Jones <toni.jones@ni.com>
* mpm: rpc: Use contextmanager for claim timeoutsToni Jones2021-03-041-13/+12
| | | | | Modify the RPC claim timeout mechanism to use a contextmanager helper function when enabling/disabling timeouts.
* mpm: add helper for symbol lookupCiro Nishiguchi2021-03-041-0/+81
| | | | | | | Add a helper that can lookup a device via a device tree symbol. Co-authored-by: Lars Amsel <lars.amsel@ni.com> Co-authored-by: Michael Auchter <michael.auchter@ni.com>
* mpm: Implement 32 bit register interface with SPIToni Jones2021-03-048-14/+120
| | | | | | | | | Implement SPI transfers which are 12 bytes in length to support access for 32 bit register interfaces. 12 byte transactions are necessary for Titanium MB PS CPLD SPI transactions. This implementation supports 48 bits of TX data per transfer and offsets all flags and data shifts from the end of the TX data portion of the transfer buffer rather than the end of the entire transfer buffer.
* mpm: Add DboardIface for MB DB driver controlToni Jones2021-03-044-0/+111
| | | | | | | | Add DboardIface class which will act as an interface to bridge the gap between MB and DB drivers in MPM. The DboardIface will be implemented by each Motherboard with MB specific information. Dboard objects will then instantiate the class in order to utilize the implemented control functions.
* ic_reg_maps: Add SPCC reg mapToni Jones2021-03-011-0/+4
| | | | Add SPCC reg map for reference and testing.
* cmake: Add RegMaps build component to MPMToni Jones2021-03-016-0/+75
| | | | | | | | | | Add RegMaps build component to MPM. The PYTHON_CHECK_MODULE is included from UHDPython in order to look up the presence of Mako. Mako is required for generating the regmaps and RegMap will be disabled without it. The RegMaps component creates custom commands for generating all regmaps, creates a Python submodule "ic_reg_maps" with a custom __init__.py file, and creates a target "ic_reg_maps" which gets installed with usrp_mpm.
* mpm: Add an LMK03328 base chip driverToni Jones2021-02-223-0/+86
| | | | | | | | | Added an LMK03328 base chip driver which does basic register access, ID validation, and PLL lock validation. This will act as the base class for device specific drivers which control the chip. The code it similar to the LMK04828 and LMK04832 base driver classes but has a different register map structure. Register bitfield definitions were omitted and will be added on an as needed basis.
* mpm: Add an LMK04832 base chip driverToni Jones2021-02-223-0/+165
| | | | | | | | Added an LMK04832 base chip driver which does basic register access, ID validation, and PLL lock validation. This will act as the base class for device specific drivers which control the chip. The code is similar to the LMK04828 base driver class, but has a different register map structure.
* MPM: prevent dead lock in timer kill during unclaimLars Amsel2021-02-181-1/+1
| | | | | | | | | | | | MPM server needs to be reclaimed in regular intervals. This is monitored by the server using a timer. If the timer hits, the server unclaims itself assuming the client process died for whatever reason. In previous versions of `gevent.greenlet` the timer was killed in a non blocking manner. This changed in version 0.13.0 (see http://www.gevent.org/api/gevent.greenlet.html#gevent.Greenlet.kill) which now leads to a dead lock in `timer.kill`. The kill command is therefore now called explicitly with `block=False`.
* mpm: Add support to safely reset peripheral manager from uhdVirendra Kakade2021-02-181-0/+29
| | | | | | | Provide a way to safely reset the peripheral manager from uhd and as a result, a mechanism to reload the fpga/dts components. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* mpm: Create Mock classes for unit testingToni Jones2021-02-181-0/+113
| | | | | Create Mock classes which mimic the behavior of a register interface and logger to facilitate unit testing needs.
* mpm: deduplicate dboard eeprom handlingMichael Auchter2021-02-112-39/+29
| | | | | | | | | | | | The _get_dboard_eeprom_info implementations are the same with the exception of how the dboard eeprom is actually read. Break that out into a _read_dboard_eeprom method to reduce code duplication. The base class now defines a lambda expression for the eeprom reader which can be changed in subclasses. Co-authored-by: Lars Amsel <lars.amsel@ni.com> Co-authored-by: Michael Auchter <michael.auchter@ni.com>
* mpm: added DBFlash classJoerg Hofrichter2021-02-111-0/+87
| | | | Class for accessing (mounting) the daughterboard flash
* mpm: added Mount classJoerg Hofrichter2021-02-111-0/+96
| | | | Class for creating a mount point
* mpm: systemd: create udev rules files for each MPM_DEVICEJoerg Hofrichter2021-02-113-15/+6
| | | | | Simplify installation of udev rules by creating folders for each MPM_DEVICE.
* mpm: filesystem_status: tolerate absence of menderMichael Auchter2021-02-092-6/+10
| | | | | | If the mender utility is not installed or exits with a failure, return NULL for the artifact rather than raising an exception (and disrupting device initialization).
* mpm: Implement get_sync_source and get_sync_sources.Lane Kolbly2021-01-252-0/+21
|
* sim: Ignore mender artifact file on sim devicesAaron Rossetto2021-01-212-2/+13
|
* mpmd: Add support to delay and trigger fpga/dts load after updateVirendra Kakade2021-01-111-2/+3
| | | | | | | | | Add a new image_loader argument delay_reload to provide a way to update components but optionally delay the actual load. Similarly add a new argument, just_reload, to enable uhd to reload the fpga/dts components. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* mpm: rpc server: Fix unclaim sequenceMartin Braun2020-12-211-8/+19
| | | | | | | | | | | | | | | | | | | Sequence is now: 1. Get _state lock 2. Kill reclaim timeout 3. Run deinit sequence 4. Clear claim token and session ID 5. Release _state lock Before, we were not locking the mutex, and the timer was killed after the deinit sequence. If the deinit sequence stalls for whatever reason, that doesn't have to cause a claimer loss to be reported. UHD will already have stopped the reclaim loop before unclaim() is called. In the stall case, it would also have been possible the to acquire a new claim while the deinit() is still running. This is prevented with the combination of actually acquiring the mutex (like claim() and reclaim() do) and moving the token/session ID clearing to the end.
* mpm: rpc server: Remove Python2 compat codeMartin Braun2020-12-081-4/+1
| | | | | | | | MPM is Python3-only, but contains some remaining compatibility code for Python2. Because this code requires extra dependencies (like six) and could become obsolete in the future, we remove it to preempt that. No functional changes.
* mpm: rpc_server: fix get_log_buf for MPM ShellJoerg Hofrichter2020-12-041-1/+2
| | | | | Fix the issue that the method 'get_log_buf' was not accessible from MPM Shell.
* fixup! mpm: Use prefs API in logging moduleJoerg Hofrichter2020-12-041-2/+2
|
* mpm: Fix issue with check-filesystem test executionJoerg Hofrichter2020-11-111-6/+6
| | | | | | | | | | This fixes tests that are invoked with arguments `--dt-overlays-loaded`, `--dt-overlays-available`, `--systemd-init-successful`, and `--mpm-init-successful`. Without this fix, the following error is generated: `ERROR: test_mpm_init_successful (name '_assert_filesystem_root_is_not_set' is not defined)`
* sim: Check for unit test prereqs and disable if unsatisfiedAaron Rossetto2020-10-281-1/+45
|
* sim: Move SelectableQueue and SendWrapperSamuel O'Brien2020-10-282-45/+45
| | | | | | | | | | | | This commit moves these two classes from chdr_stream.py to chdr_endpoint.py. ChdrEndpoint needs to be aware of the specific implementation of these classes, while ChdrInputStream and ChdrOutputStream treats them like black boxes. Therefore, it makes more sense to have these classes together with ChdrEndpoint Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support Out of Tree Sources and SinksSamuel O'Brien2020-10-282-2/+24
| | | | | | | | This commit adds the ability to specify a path to an arbitrary python file in a simulator config file, which will be imported and used to construct a SampleSink or SampleSource for use with data streaming. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Implement Sim > UHD Flow ControlSamuel O'Brien2020-10-283-34/+85
| | | | | | | This commit adds flow control support when streaming data from the Simulator to UHD. It no longer ignores STRS packets. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Move Hardware Specific to Config FileSamuel O'Brien2020-10-288-66/+149
| | | | | | | | This commit moves various magic numbers and hardware specific settings into the configuration file. It also provides default presets for said configuration files which can be inherited from. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Implement UHD > Simulator Flow ControlSamuel O'Brien2020-10-281-18/+47
| | | | | | | | | When sending data to the simulator, python simply cannot process the data as fast as UHD can send it. Flow control ensures that uhd doesn't overwhelm the simulator. Simulator > UHD flow control isn't implemented yet. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support Timed StreamsSamuel O'Brien2020-10-282-1/+10
| | | | | | | | The only difference between a standard and timed stream is that the first data packet of a timed stream contains a timestamp. This commit adds the necessary fields to StreamSpec to accomplish this. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Integrate simulator into UHDSamuel O'Brien2020-10-283-2/+75
| | | | | | | | | This commit adds a device::register_device which allows uhd to start up a simulator when uhd is called with the arguments type=sim. Creating the device object creates a subprocess using pybind and an embedded interpreter, and destroying the object cleans up those subprocesses. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support Configuration FilesSamuel O'Brien2020-10-285-9/+68
| | | | | | | | This commit adds support for configuration files to the simulator. As of now, these files only change the source and sink of data samples, but they are easily extensible to add more configuration to the simulator. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>