Skip to navigation

hololink::module::MipiDphyInterfaceV1

View as Markdown

Programs the MIPI D-PHY receivers of a device.

Each physical MIPI interface on the device has its own D-PHY receiver. Use program() to tell a receiver how many CSI-2 data lanes the attached sensor drives and at what rate, so that it samples the incoming data correctly. A receiver that is never programmed keeps the FPGA’s default configuration.

The service is looked up per device, using the enumeration metadata for that device. It is only relevant for devices supporting MIPI D-PHYs.

#include <hololink/module/mipi_dphy.hpp>

Inherits from: hololink::module::ConfigurableService< MipiDphyInterfaceV1 > (public)


Methods

program

virtual hololink_module_status_t hololink::module::MipiDphyInterfaceV1::program(
unsigned physical_mipi_interface,
unsigned lane_count,
unsigned line_rate_mbps
)

Configure one D-PHY receiver for a given lane count and line rate.

Sets the number of active CSI-2 data lanes and the data-lane HS-SETTLE window, which is derived from line_rate_mbps so that it falls within the D-PHY specification’s T_HS-SETTLE limits for that rate. The setting takes effect on the receiver’s subsequent input; call this before starting the sensor’s CSI-2 transmission. It may be called again to reprogram the same receiver.

Parameters are validated before the device is modified. If an error is returned for a parameter problem, the receiver is unchanged.

Returns: HOLOLINK_MODULE_OK on success. HOLOLINK_MODULE_INVALID_PARAMETER if physical_mipi_interface does not exist on this design, lane_count is outside 1..4, line_rate_mbps exceeds the design’s maximum, or no valid settle window can be programmed for line_rate_mbps (for example, a rate too low for the design to represent). HOLOLINK_MODULE_NOT_FOUND if the device has no usable D-PHY or the receiver cannot be reached. Other error statuses are returned if communicating with the device fails.

Parameters

physical_mipi_interface
unsigned

Zero-based index of the MIPI interface to program. The number of interfaces depends on the FPGA design.

lane_count
unsigned

Number of CSI-2 data lanes the sensor transmits on, from 1 to 4.

line_rate_mbps
unsigned

Bit rate of each data lane, in Mbps, or LINE_RATE_DESIGN_MAXIMUM for the fastest rate the design supports.

configure

virtual void hololink::module::ConfigurableService<MipiDphyInterfaceV1>::configure(
)

Use metadata contents to initialize this instance.

This routine is guaranteed to be called the first time a call to get_service(metadata) is called on a specific service instance.

module

std::shared_ptr<Module> hololink::module::ServiceBase::module() const

The Module that this service was published from.

The service holds no strong reference to its Module, so this does not extend the Module’s lifetime.

Returns: The owning Module, or an empty pointer if the service has not been published or its Module no longer exists.


Static methods

get_service

static std::shared_ptr<MipiDphyInterfaceV1> hololink::module::ConfigurableService<MipiDphyInterfaceV1>::get_service(
const EnumerationMetadata &metadata,
bool allow_null = false
)

Fetch a service, configured by EnumerationMetadata.

Module usually caches service objects; so when a specific service instance isn’t found, it will be constructed with the current values in EnumerationMetadata. Later calls to get_service are likely to return that cached instance, ignoring changes to any enumeration metadata that aren’t specifically related to service addressing.

Returns: A shared pointer to the requested service (<Derived>).

Throws: std::runtime_error when allow_null==false and the service lookup (or construction) fails.

Parameters

metadata
const EnumerationMetadata &

Addressing and configuration for the service.

allow_null
boolDefaults to false

Use true to return nullptr when the service cannot be resolved; the default false value raises a std::runtime_error.

for_each_type_id

static bool hololink::module::Service<MipiDphyInterfaceV1>::for_each_type_id(
Callback &&cb
)

Iterate over every type_id supported by this instance.

The callback signature is bool(const char*) — returning false halts the walk; true continues. Iteration is depth-first, so you’ll see the most specific implementation types first.


Member variables

NameTypeDescription
LINE_RATE_DESIGN_MAXIMUM static constexprunsignedPass as line_rate_mbps to program() to select the fastest line rate the FPGA design supports.