L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
L4virtio::Svr::Scmi::Scmi_dev Class Reference

A server implementation of the virtio-scmi protocol. More...

#include <virtio-scmi-device>

+ Inheritance diagram for L4virtio::Svr::Scmi::Scmi_dev:
+ Collaboration diagram for L4virtio::Svr::Scmi::Scmi_dev:

Public Member Functions

void add_proto (l4_uint32_t id, Proto< Scmi_dev > *proto)
 Add an actual protocol implementation with the given id to the server.
 
- Public Member Functions inherited from L4virtio::Svr::Device_t< DATA >
virtual bool check_features ()
 callback for checking the subset of accepted features
 
virtual void cfg_changed (unsigned)
 callback for client device configuration changes
 
virtual void register_driver_irq (unsigned idx)
 Callback for registering an notification IRQ (multi IRQ).
 
virtual L4::Cap< L4::Irqdevice_notify_irq (unsigned idx)
 Callback to gather the device notification IRQ (multi IRQ).
 
virtual unsigned num_events_supported () const
 Return the highest notification index supported.
 
 Device_t (Dev_config *dev_config)
 Make a device for the given config.
 
Mem_list const * mem_info () const
 Get the memory region list used for this device.
 
void reset_queue_config (unsigned idx, unsigned num_max, bool inc_generation=false)
 Trigger reset for the configuration space for queue idx.
 
void init_mem_info (unsigned num)
 Initialize the memory region list to the given maximum.
 
void device_error ()
 Transition device into DEVICE_NEEDS_RESET state.
 
bool setup_queue (Virtqueue *q, unsigned qn, unsigned num_max)
 Enable/disable the specified queue.
 
bool handle_mem_cmd_write ()
 Check for a value in the cmd register and handle a write.
 
void enable_trusted_ds_validation ()
 Enable trusted dataspace validation.
 
void add_trusted_dataspaces (std::shared_ptr< Ds_vector const > ds)
 Provide a list of trusted dataspaces that can be used for validation.
 

Additional Inherited Members

- Protected Attributes inherited from L4virtio::Svr::Device_t< DATA >
Mem_list _mem_info
 Memory region list.
 

Detailed Description

A server implementation of the virtio-scmi protocol.

Use this class as a base to implement your own specific SCMI device.

SCMI defines multiple protocols which can be optionally handled. This server implementation is flexible enough to handle any combination of them. The user of this server has to deviate from the provided Proto classes (for the protocols he want to handle) and needs to implement the required callbacks.

Right now, support for the base and the performance protocol is provided.

The base protocol is mandatory.

If you want to use this from a Uvmm Linux guest, the device tree needs to look something like this:

firmware {
scmi {
compatible = "arm,scmi-virtio";
#address-cells = <1>;
#size-cells = <0>;
// ... supported protocols ...
};
};

Definition at line 336 of file virtio-scmi-device.


The documentation for this class was generated from the following file: