template <>
class WireServer
Defined at line 953 of file fidling/gen/sdk/fidl/fuchsia.hardware.cqhci/fuchsia.hardware.cqhci/cpp/fidl/fuchsia.hardware.cqhci/cpp/driver/wire_messaging.h
Pure-virtual interface to be implemented by a server.
This interface uses typed channels (i.e. |::fdf::ClientEnd
<
::fuchsia_hardware_cqhci::Cqhci>|
and |::fdf::ServerEnd
<
::fuchsia_hardware_cqhci::Cqhci>|).
Public Methods
void InitializeCommandQueueing (::fuchsia_hardware_sdmmc::wire::CqhciInitializeCommandQueueingRequest * request, fdf::Arena & arena, InitializeCommandQueueingCompleter::Sync & completer)
Initializes the CQHCI driver, providing it with all necessary resources.
This call is expected to be made once. The server should reject any additional calls
until the peer end of `virtual_interrupt_lifeline` closes.
# Interrupt Delegation
While the CQHCI driver is running, it takes over the physical IRQ object from its underlying
driver, and directly handles any CQHCI-specific interrupts. Interrupts which it cannot
service (e.g. SDHCI interrupts) are forwarded to the underlying driver via
`virtual_interrupt`. The server should service interrupts exactly as it normally would.
The CQHCI driver will wait for the virtual IRQ to be acked before acking the physical IRQ.
# Arguments
* `virtual_interrupt` - A virtual interrupt to monitor instead of the physical IRQ.
The CQHCI driver will use this to forward interrupts which it cannot directly service.
* `virtual_interrupt_lifeline` - A lifeline for the virtual interrupt. The CQHCI
driver will destroy the peer end upon shutdown, which should be handled by the server as a
signal to stop monitoring the virtual interrupt and return to monitoring the physical
interrupt.
# Returns
* `cqhci_mmio` and `cqhci_mmio_offset` - An MMIO for the CQHCI register block.
MMIO size minus offset must be at least 512 bytes as per the CQHCI specification.
* `sdhci_mmio` and `sdhci_mmio_offset` - An MMIO for the SDHCI register block.
MMIO size minus offset must be at least 512 bytes as per the SDHCI specification.
* `bti` - The BTI to use for pinning pages for DMA.
* `interrupt` - The physical interrupt to monitor.
void EnableCqhci (fdf::Arena & arena, EnableCqhciCompleter::Sync & completer)
Enables the Command Queueing Engine. The CQHCI driver is expected to already have called
[`InitializeCommandQueueing`] to handle interrupts.
While CQHCI is enabled, it is the caller's responsibility to only submit regular requests
(via [`Request`]) via DCMD, or after disabling CQHCI.
void DisableCqhci (fdf::Arena & arena, DisableCqhciCompleter::Sync & completer)
Disables the Command Queueing Engine. `EnableCqhci` must have previously been called. From
this point onwards, regular requests can be submitted (until `EnableCqhci` is called again).
void HostInfo (fdf::Arena & arena, HostInfoCompleter::Sync & completer)
Get host info.
void WireServer ()
Defined at line 956 of file fidling/gen/sdk/fidl/fuchsia.hardware.cqhci/fuchsia.hardware.cqhci/cpp/fidl/fuchsia.hardware.cqhci/cpp/driver/wire_messaging.h
Handler bind_handler (fdf_dispatcher_t * dispatcher)
|bind_handler| returns a handler that binds incoming connections to this
server implementation.
The returned handler borrows the server instance.
The server must outlive the provided |dispatcher|. Only after
the dispatcher is shutdown will it be safe to destroy the servers.
The server should not be moved.
void ~WireServer ()
Defined at line 957 of file fidling/gen/sdk/fidl/fuchsia.hardware.cqhci/fuchsia.hardware.cqhci/cpp/fidl/fuchsia.hardware.cqhci/cpp/driver/wire_messaging.h