Class FlxDevice
Defined in File device.hpp
Inheritance Relationships
Base Type
public Device
(Class Device)
Class Documentation
-
class FlxDevice : public Device
FlxDevice represents a PCIe endpoint of a physical FELIX card.
Public Functions
-
explicit FlxDevice(unsigned dev_no)
-
virtual int open_device(u_int lock_mask) override
Opens the device, maps and reads registers, sets resource locks.
- Parameters:
lock_mask -- to lock resources at driver level
-
virtual void close_device() override
Releases the device.
-
virtual bool is_primary() override
- Returns:
whether if this PCIe endpoint is the primary, where all registers are available.
-
virtual unsigned int get_card_model() override
- Returns:
the card type: 709, 710, 711, 712, 182, 155.
-
virtual unsigned int get_card_endpoints() override
- Returns:
number of PCIe endpoints for the card
-
virtual u_int get_regmap_version() override
- Returns:
the firmware register map version, read from the register REG_MAP_VERSION
-
virtual u_int get_number_of_channels() override
- Returns:
the number of links for the PCie endpoint as reported in the register NUM_OF_CHANNELS
-
virtual bool get_wide_mode() override
- Returns:
whether GBT wide mode is used
-
virtual u_int get_block_size() override
- Returns:
the ToHost block size as read from the BLOCKSIZE register
-
virtual u_int get_trailer_size() override
- Returns:
the ToHost trailer/header size. Derived from CHUNK_TRAILER_32B.
-
virtual flx_fromhost_format get_fromhost_data_format() override
- Returns:
the FromHost data format, as in FROMHOST_DATA_FORMAT.
-
virtual flx_tohost_format get_tohost_data_format() override
- Returns:
the ToHost data format, as in TOHOST_DATA_FORMAT.
-
virtual int get_fromhost_dmaid() override
- Returns:
the identifier of the FromHoist DMA buffer, to be used by felix-toflx.
-
virtual int get_trickle_dmaid() override
- Returns:
the identifier of the Trickle configuration DMA buffer.
-
virtual int dma_max_tlp_bytes() override
- Returns:
the maximum size supported for a TLP block
-
virtual void set_register(const char *key, uint64_t value) override
Set a new value for the given register
- Parameters:
key -- register name
value -- register value
-
virtual uint64_t get_register(const char *key) override
Get the current value of the fiven register
- Parameters:
key -- register name
-
virtual bool check_register(const char *key) override
- Parameters:
key -- register name
- Returns:
if the given register exists
-
virtual void cancel_irq(int i) override
Cancel wait requests for the given MSI-X interrupt
- Parameters:
i -- Interrupt number
-
virtual void irq_wait(int i) override
Wait for the given interrupt. This function blocks.
- Parameters:
i -- Interrupt number
-
virtual void irq_enable(int i) override
Arm the given interrupt.
- Parameters:
i -- interrupt number
-
virtual void irq_disable(int i) override
Disarm the given interrupt.
- Parameters:
i -- interrupt number
-
virtual std::vector<Elink> read_enabled_elinks(int dmaid) override
Return the list of enabled e-links for the given DMA id.
- Parameters:
dmaid -- dma buffer identifier
-
virtual bool dma_enabled(int dmaid) override
- Parameters:
dmaid -- true if the DMA is a FromHost one
- Returns:
true is the DMA buffer is enabled
-
virtual void dma_to_host(DmaBuffer *buf, int dmaid) override
set up ToHost (circular) DMA buffer
- Parameters:
dmaid -- DMA buffer number
-
virtual void dma_from_host(DmaBuffer *buf, int dmaid) override
set up FromHost (circular) DMA buffer
- Parameters:
dmaid -- DMA buffer number
-
virtual void dma_from_host_trickle(DmaBuffer *buf, int dmaid, size_t config_size) override
Set up FromHost (circular) DMA buffer for trickle mode.
- Parameters:
buf -- DMA buffer pointer.
dmaid -- DMA buffer identifier.
config_size -- Size of the trickle configuration message.
-
virtual void dma_set_oneshot(DmaBuffer *buf, int dmaid, size_t config_size) override
set up FromHost (non-circular) DMA buffer
- Parameters:
dmaid -- DMA buffer number
-
virtual uint64_t dma_get_fw_ptr(int dmaid) override
-
virtual uint64_t dma_get_sw_ptr(int dmaid) override
-
virtual void dma_set_sw_ptr(int dmaid, uint64_t p_phys) override
set new value for pointer managed by software (rd for ToHost, wr for FromHost)
- Parameters:
dmaid -- DMA buffer number
p_absolute -- birtual memory address
-
virtual bool dma_cmp_even_bits(int dmaid) override
- Parameters:
dmaid -- DMA buffer number
- Returns:
whether sw and fw pointers are have wrapped around the circular buffer the the same number of times.
-
virtual void dma_stop(unsigned int dmaid) override
stop DMA buffer data transfer operations
- Parameters:
dmaid -- DMA buffer number
-
virtual monitoring_data_t hw_get_monitoring_data(unsigned int mon_mask = 0xFFF) override
- Returns:
hardware monitoring data
-
explicit FlxDevice(unsigned dev_no)