Class FlxFromHostBuffer

Inheritance Relationships

Base Type

Class Documentation

class FlxFromHostBuffer : public FromHostBuffer

FromHost DMA buffer interfaced with an FLX card

Public Functions

explicit FlxFromHostBuffer(std::shared_ptr<Device> d)
~FlxFromHostBuffer() override
virtual void allocate_buffer(size_t size, const std::string &name, bool vmem, bool free_previous_cmem = true) override
Parameters:
  • size -- of the FromHost DMA buffer.

  • name -- of the buffer passed to the CMEM driver.

  • vmem -- allocate the buffer without using the CMEM driver.

  • free_previous_cmem -- claim an unlocked/orphaned CMEM buffer with the same name.

virtual void dma_start_circular_trickle_buffer() override

Starts a circular trickle DMA buffer.

The firmware will continuously read the configuration data up to the current write offset. The firmware will not check the write offset pointer as for the normal FromHost buffer, but it is used to tell the firmware the size of the trickle configuration when enabling the buffer

virtual void set_oneshot_trickle_buffer() override

Sets a trickle DMA buffer to one-shot.

The firmware reads the configuration data from the buffer once. This function will block until the firmware has finished reading the data, or until a timeout is reached. After the transfer, the write offset is reset to 0 and the buffer disbled.

virtual bool can_write_trickle() override
Returns:

true if the buffer is writable, false otherwise.

virtual void dma_start_continuous() override
virtual size_t dma_free_bytes() override
Returns:

free space in the FromHost buffer in bytes.

virtual bool dma_is_full() override
virtual uint64_t dma_get_read_offset() override
virtual uint64_t dma_get_write_offset() override
virtual uint64_t dma_get_write_ptr() override
virtual void dma_set_write_offset(uint64_t addr) override
virtual void dma_advance_write_ptr(size_t bytes) override