class PllEnable

Defined at line 1217 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

DPLL_ENABLE (DPLL Enable), LCPLL_CTL / WRPLL_CTL (LCPLL/WRPLL Control).

This class describes all the PLL enablement registers, as they have similar

layouts.

On Tiger Lake, this covers all the DPLL_ENABLE (* PLL Enable) registers.

* DPLL0_ENABLE, DPLL1_ENABLE, DPLL4_ENABLE - for DPLL0/1/4

* TBTPLL_ENABLE - for DPLL2

* MGPLL1_ENABLE ... MGPLL6_ENABLE - for MG and Dekel PLLs 1-6

On Kaby Lake and Skylake, this covers the following registers:

* LCPLL1_CTL / LCPLL2_CTL - LCPLL1/2 Control - for DPLL0/1

* WRPLL1_CTL / WRPLL2_CTL - WRPLL1/2 Control - for DPLL2/3

PLL enablement registers must not be changed while their corresponding PLLs

are in use.

On Kaby Lake and Skylake, all DPLLs can be used to drive DDIs. DPLL0 also

drives the core display clocks (CDCLK, CD2XCLK). LCPLL (DPLL0, DPLL1)

probably stands for "LC-tank PLL" and WRPLL (DPLL2, DPLL3) probably means

"Wide-Range PLL". The distinction is historical, alluding to the LCPLLs and

WRPLLs on Broadwell (IHD-OS-BDW-Vol 11-11.15 page 110) and Haswell

(intel-gfx-prm-osrc-hsw-display Vol 11a dated 12/18/2013 page 191),

which support different ranges of output frequencies.

On Tiger Lake, TC (USB Type-C connector) DDI has its own PLL, called an MG

PLL. DPLLs (Display PLLs) 0, 1, and 4 can be connected to all DDIs. DPLL2 is

dedicated to generating the frequencies needed for TBT (Thunderbolt)

operation, and is shared by all DDIs that operate in Thunderbolt mode.

DPLL_ENABLE documentation:

Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev 2.0 Part 1 pages 656-657

LCPLL1_CTL and LCPLL2_CTL documentation:

Kaby Lake: IHD-OS-KBL-Vol 2c-1.17 Part 1 pages 1121, 1122

Skylake: IHD-OS-SKL-Vol 2c-05.16 Part 1 pages 1110, 1111

WRPLL1_CTL and WRPLL2_CTL documentation:

Kaby Lake: IHD-OS-KBL-Vol 2c-1.17 Part 2 pages 1349-1350

Skylake: IHD-OS-SKL-Vol 2c-05.16 Part 2 pages 1321-1322

Public Members

 field_pll_enabled_1222
 field_pll_locked_tiger_lake_and_lcpll1_1236
 field_power_on_request_tiger_lake_1244
 field_powered_on_tiger_lake_1252

Public Methods

template <, >
typename SelfType::ValueType pll_enabled ()

If true, the PLL will be enabled. If false, the PLL will be disabled.

The PLL's frequency must be set before it is enabled.

Defined at line 1222 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

template <, >
SelfType & set_pll_enabled (typename SelfType::ValueType val)

If true, the PLL will be enabled. If false, the PLL will be disabled.

The PLL's frequency must be set before it is enabled.

Defined at line 1222 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

template <, >
typename SelfType::ValueType pll_locked_tiger_lake_and_lcpll1 ()

If true, the PLL is locked. If false, the PLL is not locked.

On Tiger Lake, this field is supported on all PLL enablement registers.

On Kaby Lake and Skylake, this field is only supported on LCPLL1, which

drives DPLL0. The underlying bit is reserved on all other registers. On

LCPLL1, this field seems redundant with the DPLL0 locked field in the

DPLL_STATUS register. However, PRM explicitly asks us to check this field,

in "Sequences to Initialize Display" sub-sections "Initialize Sequence" and

"Un-initialize Sequence".

Kaby Lake: IHD-OS-KBL-Vol 12-1.17 pages 112-113

Skylake: IHD-OS-SKL-Vol 12-05.16 pages 110-111

Defined at line 1236 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

template <, >
SelfType & set_pll_locked_tiger_lake_and_lcpll1 (typename SelfType::ValueType val)

If true, the PLL is locked. If false, the PLL is not locked.

On Tiger Lake, this field is supported on all PLL enablement registers.

On Kaby Lake and Skylake, this field is only supported on LCPLL1, which

drives DPLL0. The underlying bit is reserved on all other registers. On

LCPLL1, this field seems redundant with the DPLL0 locked field in the

DPLL_STATUS register. However, PRM explicitly asks us to check this field,

in "Sequences to Initialize Display" sub-sections "Initialize Sequence" and

"Un-initialize Sequence".

Kaby Lake: IHD-OS-KBL-Vol 12-1.17 pages 112-113

Skylake: IHD-OS-SKL-Vol 12-05.16 pages 110-111

Defined at line 1236 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

template <, >
typename SelfType::ValueType power_on_request_tiger_lake ()

If true, the PLL will eventually be powered on.

This field is only documented for Tiger Lake.

On Kaby Lake and Skylake, the underlying bit is reserved, and PLLs can be

assumed to be powered on at all times.

Defined at line 1244 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

template <, >
SelfType & set_power_on_request_tiger_lake (typename SelfType::ValueType val)

If true, the PLL will eventually be powered on.

This field is only documented for Tiger Lake.

On Kaby Lake and Skylake, the underlying bit is reserved, and PLLs can be

assumed to be powered on at all times.

Defined at line 1244 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

template <, >
typename SelfType::ValueType powered_on_tiger_lake ()

If true, the PLL is currently powered on.

A PLL must be powered on before it is enabled.

This field is only documented for Tiger Lake. The underlying bit is

reserved on Kaby Lake and Skylake.

Defined at line 1252 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

template <, >
SelfType & set_powered_on_tiger_lake (typename SelfType::ValueType val)

If true, the PLL is currently powered on.

A PLL must be powered on before it is enabled.

This field is only documented for Tiger Lake. The underlying bit is

reserved on Kaby Lake and Skylake.

Defined at line 1252 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

hwreg::RegisterAddr<PllEnable> GetForSkylakeDpll (intel_display::PllId pll_id)

Defined at line 1254 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

hwreg::RegisterAddr<PllEnable> GetForTigerLakeDpll (intel_display::PllId pll_id)

Tiger Lake: On IHD-OS-TGL-Vol 2c-1.22-Rev 2.0, Page 656, it mentions

that the MG register instances are used for Type-C in general, so they

can control Dekel PLLs as well (for example, MGPLL1_ENABLE controls

Dekel PLL Type-C Port 1).

Defined at line 1267 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h

Records