Class FileDevice

Inheritance Relationships

Base Type

Class Documentation

class FileDevice : public Device

FileDevice represents a PCIe endpoint of a FELIX card emulated in software.

Public Functions

FileDevice(ConfigFile &cfg, unsigned device)
explicit FileDevice(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

inline virtual void close_device() override

Releases the device.

inline virtual bool is_primary() override
Returns:

whether if this PCIe endpoint is the primary, where all registers are available.

inline virtual unsigned int get_card_endpoints() override
Returns:

number of PCIe endpoints for the card

inline virtual unsigned int get_card_model() override
Returns:

the card type: 709, 710, 711, 712, 182, 155.

inline virtual u_int get_regmap_version() override
Returns:

the firmware register map version, read from the register REG_MAP_VERSION

inline 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

inline virtual bool get_wide_mode() override
Returns:

whether GBT wide mode is used

inline virtual u_int get_block_size() override
Returns:

the ToHost block size as read from the BLOCKSIZE register

inline virtual u_int get_trailer_size() override
Returns:

the ToHost trailer/header size. Derived from CHUNK_TRAILER_32B.

inline virtual flx_fromhost_format get_fromhost_data_format() override
Returns:

the FromHost data format, as in FROMHOST_DATA_FORMAT.

inline virtual flx_tohost_format get_tohost_data_format() override
Returns:

the ToHost data format, as in TOHOST_DATA_FORMAT.

inline virtual int get_fromhost_dmaid() override
Returns:

the identifier of the FromHoist DMA buffer, to be used by felix-toflx.

inline virtual int get_trickle_dmaid() override
Returns:

the identifier of the Trickle configuration DMA buffer.

inline 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

inline virtual bool check_register(const char *key) override
Parameters:

key -- register name

Returns:

if the given register exists

inline virtual void cancel_irq(int i) override

Cancel wait requests for the given MSI-X interrupt

Parameters:

i -- Interrupt number

inline virtual void irq_wait(int i) override

Wait for the given interrupt. This function blocks.

Parameters:

i -- Interrupt number

inline virtual void irq_enable(int i) override

Arm the given interrupt.

Parameters:

i -- interrupt number

inline 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

void add_enabled_elink(Elink e, int dmaid)
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

inline virtual void dma_from_host(DmaBuffer *buf, int dmaid) override

set up FromHost (circular) DMA buffer

Parameters:

dmaid -- DMA buffer number

inline 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.

inline 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

inline virtual uint64_t dma_get_fw_ptr(int dmaid) override
Parameters:

dmaid -- DMA buffer number

Returns:

pointer managed by firmware (wr for ToHost, rd for FromHost)

inline virtual uint64_t dma_get_sw_ptr(int dmaid) override
Parameters:

dmaid -- DMA buffer number

Returns:

pointer managed by software (rd for ToHost, wr for FromHost)

inline 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

inline 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.

inline 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