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< No_custom_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::Irq > | device_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< No_custom_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:

- l4/l4virtio/server/virtio-scmi-device