aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/rfnoc/client_zero.cpp
Commit message (Collapse)AuthorAgeFilesLines
* lib: Properly do reset routines in client_zeroMartin Braun2020-04-091-2/+6
| | | | | The current reset routines write a '1' twice for reset, instead of '0' then '1' (resets get triggered on a rising edge).
* rfnoc: client_zero can track num SEPs and num ctrl EPs separatelyMartin Braun2019-11-261-0/+4
|
* rfnoc: client0: Change flush-all-blocks to not throw on timeoutMartin Braun2019-11-261-20/+7
| | | | | The convenience call that flushed all the blocks would throw during timeout. Now, it returns a bool whether or not the flush was successful.
* rfnoc: flushing and reset blocks on graph creationBrent Stapleton2019-11-261-1/+35
| | | | | | During construction of the rfnoc_graph, flush and reset each block in each motherboard we need to enumerate. This will ensure that each block is in a clean state when we construct it's block controller.
* rfnoc: Add clock selection to blocksMartin Braun2019-11-261-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | During registration, blocks must now specify which clock they are using for the timebase (i.e., for timed commands) and for the ctrlport (this is used to determine the length of sleeps and polls). For example, the X300 provides bus_clk and radio_clk; typically, the former is used for the control port, and the latter for the timebase clock. Another virtual clock is called "__graph__", and it means the clock is derived from property propagation via the graph. The actual clocks are provided by the mb_iface. It has two new API calls: get_timebase_clock() and get_ctrlport_clock(), which take an argument as to which clock exactly is requested. On block initialization, those clock_iface objects are copied into the block controller. The get_tick_rate() API call for blocks now exclusively checks the timebase clock_iface, and will no longer cache the current tick rate in a separate _tick_rate member variable. Block controllers can't manually modify the clock_iface, unless they also have access to the mb_controller (like the radio block), and that mb_controller has provided said access. This commit also adds the clock selection API changes to the DDC block, the Null block, and the default block.
* rfnoc: Added link/graph specific stream managersAshish Chaudhari2019-11-261-0/+18
| | | | | - Fleshed out mb_iface - Managers currently only export ctrl APIs. Data APIs TBD
* rfnoc: Support for new backend iface plus fixesAshish Chaudhari2019-11-261-10/+12
| | | | | | - Add support for new backend iface with max_async_msgs and mtu moved to after the noc ID - Fixed offsets for block info registers
* rfnoc: adding client_zeroBrent Stapleton2019-11-261-0/+213
- Adding client_zero class, which gathers information about our device form the global registers on port 0 of the RFNoC backend registers. - adding unit tests to exercise client_zero - mock_reg_iface class: adding fake register_iface so we can run unit tests in software only Co-authored-by: Martin Braun <martin.braun@ettus.com>