class DdiPhysicalLayer
Defined at line 59 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
On Intel display devices, DDIs (Digital Display Interfaces) contain port
logic to interface to the DDI physical layer (PHY), which are the physical
ports in the IO subsystem provided by the hardware.
This class provides interfaces of the physical layers to display drivers, so
that the drivers can:
- `Enable()` / `Disable()` the physical layer of a certain port for display
use;
- Query display device availability (`GetPhysicalLayerInfo()`) on the
physical port.
A typical DDI Physical Layer can communicate with the port IO subsystem to
maintain power state of the physical port, configure physical lanes for
display usage, and query physical device state to report back to the driver.
On older generations of Intel Display Engine (e.g. Kaby Lake and Skylake),
the DDI Physical layers are usually automatically configured by the firmware
and the driver doesn't need to do much to maintain the physical layer state.
However on newer generations (e.g. Ice Lake, Tiger Lake), drivers must
initialize the physical layer before using it for display purpose.
`DdiPhysicalLayer`s are intrusively reference counted. Display Devices can
hold references to enabled PHYs, and release the reference once the display
is removed, which finally disable the PHY for power saving when the PHY is
not referenced by any display.
The Ref-counting Is *Not* Thread-safe. `DdiPhysicalLayer`s and references to
`DdiPhysicalLayer`s must be accessed only by a single thread.
TODO(https://fxbug.dev/42064192): Currently the intel-display driver doesn't fulfill this
requirement. The threading model of the driver needs to be fixed.
References:
Ice Lake:
- IHD-OS-ICLLP-Vol 12-1.22-Rev 2.0 Pages 333-335 "Digital Display Interface"
- IHD-OS-ICLLP-Vol 12-1.22-Rev 2.0 Pages 346-360 "Gen11+ TypeC Programming"
Tiger Lake:
- IHD-OS-TGL-Vol 12-1.22-Rev 2.0 Pages 390-398 "Digital Display Interface"
- IHD-OS-TGL-Vol 12-1.22-Rev 2.0 Pages 399-409 "TypeC Programming"
Public Methods
void DdiPhysicalLayer (DdiId ddi_id)
Defined at line 113 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
void ~DdiPhysicalLayer ()
Defined at line 114 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
void DdiPhysicalLayer (const DdiPhysicalLayer & )
Copying and moving are not allowed.
Defined at line 117 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
DdiPhysicalLayer & operator= (const DdiPhysicalLayer & )
Defined at line 118 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
void DdiPhysicalLayer (DdiPhysicalLayer && )
Defined at line 119 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
bool IsEnabled ()
Indicates whether the DDI PHY is already enabled.
bool IsHealthy ()
Indicates whether the DDI PHY is in a healthy state to be enabled.
Drivers must not `Enable()` a DDI or use it for display if `IsHealthy()`
returns false.
bool Enable ()
Enables the physical layer of the DDI.
Returns true if the DDI PHY is enabled successfully, otherwise returns
false.
This method is idempotent; if a DDI PHY is already enabled when this
function is called, the method will not change the hardware state.
bool Disable ()
Disables the physical layer of the DDI.
Returns true if the DDI PHY is disabled successfully, otherwise returns
false.
This method is idempotent; if a DDI PHY is already disabled when this
function is called, the method will not change the hardware state.
PhysicalLayerInfo GetPhysicalLayerInfo ()
DdiPhysicalLayer & operator= (DdiPhysicalLayer && )
Defined at line 120 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
DdiId ddi_id ()
Defined at line 122 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
Enumerations
enum DdiType
| Name | Value |
|---|---|
| kCombo | 0 |
| kTypeC | 1 |
Defined at line 61 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
enum ConnectionType
| Name | Value |
|---|---|
| kNone | 0 |
| kBuiltIn | 1 |
| kTypeCDisplayPortAltMode | 2 |
| kTypeCThunderbolt | 3 |
Defined at line 70 of file ../../src/graphics/display/drivers/intel-display/ddi-physical-layer.h
Records
Friends
class DdiReference