aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/periph_manager/base.py
Commit message (Collapse)AuthorAgeFilesLines
* uhd: Add support for the USRP X410Lars Amsel2021-06-101-7/+47
| | | | | | | | | | | | | | | | Co-authored-by: Lars Amsel <lars.amsel@ni.com> Co-authored-by: Michael Auchter <michael.auchter@ni.com> Co-authored-by: Martin Braun <martin.braun@ettus.com> Co-authored-by: Paul Butler <paul.butler@ni.com> Co-authored-by: Cristina Fuentes <cristina.fuentes-curiel@ni.com> Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com> Co-authored-by: Virendra Kakade <virendra.kakade@ni.com> Co-authored-by: Lane Kolbly <lane.kolbly@ni.com> Co-authored-by: Max Köhler <max.koehler@ni.com> Co-authored-by: Andrew Lynch <andrew.lynch@ni.com> Co-authored-by: Grant Meyerhoff <grant.meyerhoff@ni.com> Co-authored-by: Ciro Nishiguchi <ciro.nishiguchi@ni.com> Co-authored-by: Thomas Vogel <thomas.vogel@ni.com>
* mpm: Remove helper classes from RPC APILars Amsel2021-06-031-9/+9
| | | | | | | | All public callables are exported as part of the RPC API. Because classes are callable in Python they are now protected to prevent export. Having theses inner helper classes marked as protected also matches better their purpose as the are not meant to be used outside the class.
* mpm: Add symbol name based EEPROM read, cleanup EEPROM handlingLars Amsel2021-05-311-66/+212
| | | | | | | | | | | | Handling of EEPROM read was cleanup in PeriphManagerBase such that EEPROM reading for mother and daugther board have similar names and signatures. Base class supports symbol names for the nvmem files which make it easy to find them by name such as db0_eeprom instead of addresses like ff020000.i2c:cros-ec@3c:db0-i2c-tunnel. Base class furthermore reads out all available auxiliary board EEPROM files and stores them in a dictionary member.
* mpm: PeriphManagerBase: Add _add_public_methods()Martin Braun2021-04-291-0/+41
| | | | This allows conditionally adding public API methods.
* 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: 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: Add DboardIface for MB DB driver controlToni Jones2021-03-041-0/+8
| | | | | | | | 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.
* mpm: deduplicate dboard eeprom handlingMichael Auchter2021-02-111-15/+27
| | | | | | | | | | | | 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: filesystem_status: tolerate absence of menderMichael Auchter2021-02-091-1/+3
| | | | | | 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-251-0/+12
|
* sim: Ignore mender artifact file on sim devicesAaron Rossetto2021-01-211-1/+11
|
* mpm: use filesystem_status from sys_utilsJoerg Hofrichter2020-10-061-13/+4
| | | | | | Use the utility functions for getting the filesystem version string and for getting the Mender artifact which are now available in usrp_mpm.sys_utils.
* uhd: remove liberioRobertWalstab2020-07-201-6/+1
|
* mpm: Return filesystem info from get_device_infoLane Kolbly2020-06-051-0/+14
| | | | | This commit returns information on the filesystem and mender artifact versions to clients of the MPM RPC connection.
* mpm: Return dboard_info in get_device_infoLane Kolbly2020-06-051-0/+5
| | | | | | | | | Though this information is also returned via usrp_probe, it can be useful to provide this information to trackers which scrape the get_device_info RPC call. The dboard information is split up and cast to string just to simplify parsing on the receiving end.
* mpm: Return build info in mpm_sw_versionLane Kolbly2020-05-271-1/+1
| | | | | The mpm_version key was being overridden by the MPM_COMPAT field in rpc_server::get_device_info.
* mpm/mpmd: Expose APIs to drive GPIO sourcesMartin Braun2020-01-231-0/+38
| | | | | | | | | | | | | | | | | | | The N310 has a feature that allows the front panel GPIOs to be driven by various sources: The PS, or any of the radio channels. The MPM-based APIs did not expose any way to change that. Changes: - Add MPM APIs to PeripheralManagerBase and n3xx classes - Improve comments and explanations - Add host-side hooks into these new APIs in mpmd_mb_controller - Implement these APIs for N3xx The N3xx devices will have the option to set the GPIO source to "PS", or to one of "RF0", "RF1", "RF2", "RF3" (if there are four channels; the N300 and N320 can only go up to RF1). Note: The N310 radio does not have separate FP-GPIO banks for channels 0 and 1, which needs to be fixed in a separate commit.
* mpm: Clean up code, improve Pylint scoreMartin Braun2019-11-261-17/+23
| | | | | | | | | | | | | | | | Many small cleanups: - Fix copyright headers - Fix superfluous imports - Pull some constants out of classes where appropriate - Fix formatting - Improve/fix some docstrings - Disable specific Pylint warnings where appropriate - Global catches use BaseException instead of Exception - Don't use len() for empty checks - Make sure to declare all self attributes in __init__ (note: this is particularly of interest for E310, becuase its regular init happens outside of __init__) - Compacted some E310 code that had multi-DB checks
* mpm/mpmd: Remove token requirement for device infoMartin Braun2019-11-261-1/+2
| | | | | This removes the token requirement for get_proto_ver() and get_chdr_width().
* mpm: Move common mboard regs code to common locationMartin Braun2019-11-261-25/+30
| | | | | | | | | | | | | This assumes an existence of mboard_regs_control in PeriphManagerBase and implements most TK controls there. All the *_periphs.py files can now use a common class for registers, including the TK access, but also git hash, build date, and device ID access. This also fixes two issues: - set_timekeeper_time() and set_tick_period() had a bug that would incorrectly calculate the upper 32 bits of their respective registers. - N3xx had a bug that would swap around set time now and next PPS. This got auto-fixed because the common code never had this bug.
* x300/mpmd: Port all RFNoC devices to the new RFNoC frameworkMartin Braun2019-11-261-139/+125
| | | | | | | Co-Authored-By: Alex Williams <alex.williams@ni.com> Co-Authored-By: Sugandha Gupta <sugandha.gupta@ettus.com> Co-Authored-By: Brent Stapleton <brent.stapleton@ettus.com> Co-Authored-By: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
* MPM: Add check for valid EEPROM addressmichael-west2019-10-151-0/+3
| | | | | | | | Provides a more useful error message if the EEPROM cannot be found at the specified address. Without this change a generic index out of range error is raised. Signed-off-by: michael-west <michael.west@ettus.com>
* mpm: periph manager: Fix typo in docstring (update default args)Martin Braun2019-10-111-2/+3
|
* mpm: fixed mboard_max_revision valueMatthew Crymble2019-09-241-12/+7
| | | | | | | | This value should be 9 to correspond with the rev J motherboards. This property was renamed to mboard_last_rev_compat in a previous commit. But mboard_max_rev is actually a more accurate description, since it specifies the latest hardware revision that the software is aware of. I renamed all references back to mboard_max_rev.
* mpm: Change SW/HW compat check to use last_rev_compatTrung Tran2019-05-101-15/+30
| | | | | | | Newer revisions of the E320 and N3xx motherboards use EEPROM version 3, and store a rev_compat field. The rev_compat is the last revision that this hardware is compatible with. We now use that instead of simply the revision.
* e310/e320: Move E310 to MPM architecture and refactorSugandha Gupta2019-05-011-0/+6
| | | | | | | | | | | | - Turns the E310 into an MPM device (like N3xx, E320) - Factor out common code between E320 and E310, maximize sharing between the two devices - Remove all pre-MPM E310 code that is no longer needed - Modify MPM to remove all existing overlays before applying new ones (this is necessary to enable idle image mode for E310) Co-authored-by: Virendra Kakade <virendra.kakade@ni.com> Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* n3xx: init peripherals before loading FPGATrung Tran2019-02-011-20/+32
| | | | | | | | | Issue: Current code loads FPGA too early while many essential peripherals such as net clocks are not brought up. This change will make sure those are got init before FPGA loaded. Signed-off-by: Trung Tran<trung.tran@ettus.com>
* mpm: add Git hash, version to device infoBrent Stapleton2018-08-201-0/+9
| | | | | | | | Adding MPM Git hash and version to the MPM device info. This information is currently only available through logs when MPM starts (it is the first log message in usrp_hwd.py). Adding it to the device info makes it accessible to any application which checks that, such as uhd_usrp_probe.
* mpm: Remove unused _init_args from PeriphManagerBaseMartin Braun2018-07-171-4/+0
|
* mpm: n3xx: Factor out component updatingBrent Stapleton2018-07-111-1/+2
| | | | | | | | | - Refactoring component (FPGA, DTS) updating functions out of n3xx.py into their own components.py. The ZynqComponent class now defines the methods to update these two components. - Adding super().__init__() to the PeriphManagerBase class. This is needed to get the multiple inheritance used in N3XX now to work, and (apparently) good Python practice.
* mpm: n3xx: Overridable crossbar base portBrent Stapleton2018-07-061-1/+4
| | | | | | Moving the RFNoC crossbar base port to the class overridables. MPM devices may need to reserve different numbers of ports for non-blocks; this can now be done by overriding the crossbar_base_port.
* mpm: Use device_info to determine overlay listMartin Braun2018-06-081-7/+5
|
* mpm: n3xx: Derive product key programmaticallyMartin Braun2018-06-081-2/+6
| | | | | | Since there is no simple mapping from an arbitrary tuple of mboard- and dboard info dictionaries, we use generate_device_info() to figure out the product key.
* mpm: Distinguish mboard_info and device_infoMartin Braun2018-06-081-9/+22
| | | | | | In the N3xx series, the motherboard ID and the device ID can differ. For example, the N310 could share the same motherboard with a different device that uses different daughterboards.
* mpm: Refactor periph manager init; split EEPROM read from restMartin Braun2018-06-081-104/+135
| | | | | The readout of EEPROMs is moved to their own functions. This will allow us to read out EEPROM values before starting the initialization.
* mpm: Adding offset to EEPROM readsBrent Stapleton2018-03-201-0/+14
| | | | | | Adding address offset to all MBoard and DBoard EEPROM reads. This matches what we're doing for the user portion of the EEPROM, and allows us to share access to an EEPROM.
* mpm: Add INFO log statements on MPM reset and component updateMartin Braun2018-03-131-0/+1
|
* mpm: Fix some Pylint warningsMartin Braun2018-03-061-1/+0
| | | | No functional changes.
* mpm: Demote some log messagesMartin Braun2018-03-061-7/+7
| | | | | | The log output at level 'INFO' was pretty cluttered. This cleans up the log messages at the higher levels. In some cases, log message typos or capitalizations were also fixed.
* mpm: n300/n310: Select correct overlay based on product IDMartin Braun2018-03-051-12/+15
|
* n310: Make MPM report FPGA version and description, UHD read itMartin Braun2018-03-021-0/+7
| | | | | | | The FPGA and MPM version as well as the description of the device ("N300-Series Device") and its name (its the hostname) are now properly reported coming from MPM, properly saved in the prop tree, and uhd_usrp_probe can nicely display them this way.
* mpm: periph_manager: Guarantee self.dboards existsMartin Braun2018-02-281-1/+1
| | | | | Other components assume the existence of mgr.dboards, and so it needs to be default-initialized before doing any code that can go wrong.
* mpm: adding get_component_infoBrent Stapleton2018-02-191-0/+18
| | | | | Add getter function for updateable component information. This is a minor compat number bump.
* mpm: Update all license headersMartin Braun2018-02-191-2/+2
| | | | | - Fix typo in company name (missing 'a') - Updated SPDX license identifier to version 3.0
* mpm: Use prefs API for periph managerMartin Braun2018-02-081-3/+36
| | | | | | | | - Allow to set default args via config file - Read them from prefs API - override-db-pids uses the same APIs now ([overrides] section in config file, prefs API, and same dictionary as --default-args when used on the command line
* mpm: n310: Return CHDR addresses as part of device_infoMartin Braun2018-02-071-1/+17
| | | | Reviewed-by: Brent Stapleton <brent.stapleton@ettus.com>
* fixup! mpm: Log timeouts during API calls, reset timer on claimed callsMartin Braun2018-01-231-0/+6
|
* mpm/mpmd: Report device state using get_init_status() and verifyMartin Braun2018-01-161-1/+7
| | | | | | When trying to run init(), mpmd will first query the initialization status of the MPM device. If it is found to be in a bad state, it will not go forward with initialization, but instead print the error message.
* mpm: Refactor PeriphManager classesMartin Braun2018-01-161-36/+65
| | | | | - Sort methods by functional groups - Removed some cruft
* mpm: n310: Check all periphs for initialization statusMartin Braun2018-01-121-0/+4
|