mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
drm/i915/doc: Document DP link capabilities
Add documentation for the DP link capabilities interface. Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patch.msgid.link/20260701153204.4124150-2-imre.deak@intel.com
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
.. SPDX-License-Identifier: MIT
|
||||
.. Copyright © 2026 Intel Corporation
|
||||
|
||||
DisplayPort Link Capabilities
|
||||
=============================
|
||||
|
||||
.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp_link_caps.c
|
||||
:doc: DisplayPort link capabilities
|
||||
|
||||
.. kernel-doc:: drivers/gpu/drm/i915/display/intel_dp_link_caps.h
|
||||
:internal:
|
||||
@@ -39,6 +39,7 @@ driver. The display driver isn't an independent driver in that sense.
|
||||
frontbuffer
|
||||
hotplug
|
||||
dp-link-training
|
||||
dp-link-capabilities
|
||||
plane
|
||||
psr
|
||||
snps-phy
|
||||
|
||||
@@ -19,6 +19,87 @@
|
||||
#include "intel_dp.h"
|
||||
#include "intel_dp_link_caps.h"
|
||||
|
||||
/**
|
||||
* DOC: DisplayPort link capabilities
|
||||
*
|
||||
* The Intel DP link caps API tracks the supported and allowed
|
||||
* DisplayPort link configurations for a DP encoder and its attached
|
||||
* connectors, and provides helpers to iterate over the allowed
|
||||
* configurations and constrain them by filtering, disabling, or
|
||||
* limiting them to maximum link parameters.
|
||||
*
|
||||
* Locking
|
||||
* -------
|
||||
*
|
||||
* All accesses to this API must be serialized. The only exception
|
||||
* is intel_dp_link_caps_get_max_limits(), which allow lockless
|
||||
* lookup. Such lookups may observe an out-of-sync &struct
|
||||
* intel_dp_link_config tuple, i.e. a rate from one state and a lane
|
||||
* count from another.
|
||||
*
|
||||
* The Intel i915/xe drivers ensure the above serialization by holding
|
||||
* &drm_mode_config.connection_mutex and, while holding the lock,
|
||||
* waiting for any pending asynchronous atomic commits. This also allows
|
||||
* use of the API from the tails of asynchronous atomic commits, which
|
||||
* cannot hold the lock.
|
||||
*
|
||||
* Iterating and restricting link configurations
|
||||
* ---------------------------------------------
|
||||
*
|
||||
* The link configuration iterators can iterate the ``allowed
|
||||
* configurations`` during modeset configuration selection or link
|
||||
* training fallback handling in a configurable order.
|
||||
*
|
||||
* The iteration order can depend on connector type (eDP, DP SST,
|
||||
* DP MST) and modeset-specific conditions or driver policies, such
|
||||
* as DSC vs. non-DSC modes, power saving vs. better user experience,
|
||||
* or policy changes after a link training failure.
|
||||
*
|
||||
* The configurations exposed via the iterators can be additionally
|
||||
* constrained in the following ways:
|
||||
*
|
||||
* - Filtered for a given modeset based on modeset-specific conditions.
|
||||
* Examples for such conditions include driver policies preferring
|
||||
* power saving or better user experience, post-link training failure
|
||||
* preference changes, or sink automated test requests limiting the
|
||||
* usable configurations.
|
||||
*
|
||||
* - Disabled permanently for the connected sink. Examples of reasons
|
||||
* to disable a configuration include a link training failure for a
|
||||
* given configuration or a driver workaround preventing the use of
|
||||
* a particular configuration.
|
||||
*
|
||||
* - Limited via a maximum link rate and lane count. For example, after
|
||||
* a link training failure, subsequent modesets may be limited to
|
||||
* configurations at or below the failed parameters.
|
||||
*
|
||||
* This mechanism exists for backward compatibility only. Eventually,
|
||||
* it will be removed in favor of relying solely on individually
|
||||
* disabled configurations, as described above.
|
||||
*
|
||||
* Terminology
|
||||
* -----------
|
||||
*
|
||||
* ``Common link capabilities`` (or ``common caps``) refer to the link
|
||||
* rates and maximum lane count supported by both the source and the
|
||||
* sink, i.e. the intersection of their respective capabilities.
|
||||
*
|
||||
* ``Supported configurations`` are all configurations defined by the
|
||||
* ``Common link capabilities``' link rates and maximum lane count.
|
||||
*
|
||||
* ``Disabled configurations`` are ``Supported configurations`` disabled
|
||||
* via this API.
|
||||
*
|
||||
* ``Enabled configurations`` are ``Supported configurations`` that are
|
||||
* not disabled.
|
||||
*
|
||||
* ``Forced configurations`` are ``Enabled configurations`` forced via
|
||||
* forced link parameter debugfs entries.
|
||||
*
|
||||
* ``Allowed configurations`` are the ``Enabled configurations``, or if
|
||||
* forcing is in effect the ``Forced configurations``, constrained by a
|
||||
* maximum rate and lane count set via the API.
|
||||
*/
|
||||
struct intel_dp_link_caps {
|
||||
struct intel_dp *dp;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user