class DisplayPllDcoDividersKabyLake
Defined at line 486 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
DPLL_CFGCR2 (Display PLL Configuration and Control Register 2?)
When the DPLL (Display PLL) operates in HDMI mode, this register configures
the frequency dividers between the DCO (Digitally-Controlled Oscillator) in
the DPLL and the DPLL's AFE (Analog Front-End) clock output, which goes to
connected DDIs. The frequency output by the DPLL to DDIs, also called AFE
clock frequency, is the DCO frequency configured in DPLL_CFGCR1 divided by
the product of all the dividers (P * Q * K, also documented as P0 * P1 * P2)
in this register.
Unfortunately, Intel's documentation refers to the DCO frequency dividers
both as (P0, P1, P2) and as (P, Q, K). Fortunately, both variations use short
names, so we can use both variations in our names below. This facilitates
checking our code against documents that use either naming variation.
This register's reserved fields are all MBZ (must be zero). So, this register
can be safely written without reading it first.
The Tiger Lake equivalent of this register is DPLL_CFGCR1.
Kaby Lake: IHD-OS-KBL-Vol 2c-1.17 Part 1 page 526-527
Skylake: IHD-OS-SKL-Vol 2c-05.16 Part 1 pages 524-525
Public Members
field_RsvdZ_512
field_q_p1_divider_select_516
field_q_p1_divider_select_enabled_520
field_k_p2_divider_select_524
field_p_p0_divider_select_528
field_center_frequency_select_532
Public Methods
template <, >
typename SelfType::ValueType q_p1_divider_select ()
This field has a non-trivial representation and should be accessed via the
`q_p1_divider() and `set_q_p1_divider()` helpers.
Defined at line 516 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
SelfType & set_q_p1_divider_select (typename SelfType::ValueType val)
This field has a non-trivial representation and should be accessed via the
`q_p1_divider() and `set_q_p1_divider()` helpers.
Defined at line 516 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
typename SelfType::ValueType q_p1_divider_select_enabled ()
This field has a non-trivial representation and should be accessed via the
`q_p1_divider() and `set_q_p1_divider()` helpers.
Defined at line 520 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
SelfType & set_q_p1_divider_select_enabled (typename SelfType::ValueType val)
This field has a non-trivial representation and should be accessed via the
`q_p1_divider() and `set_q_p1_divider()` helpers.
Defined at line 520 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
KP2DividerSelect k_p2_divider_select ()
This field has a non-trivial representation and should be accessed via the
`k_p2_divider() and `set_k_p2_divider()` helpers.
Defined at line 524 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
SelfType & set_k_p2_divider_select (KP2DividerSelect val)
This field has a non-trivial representation and should be accessed via the
`k_p2_divider() and `set_k_p2_divider()` helpers.
Defined at line 524 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
PP0DividerSelect p_p0_divider_select ()
This field has a non-trivial representation and should be accessed via the
`k_p2_divider() and `set_k_p2_divider()` helpers.
Defined at line 528 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
SelfType & set_p_p0_divider_select (PP0DividerSelect val)
This field has a non-trivial representation and should be accessed via the
`k_p2_divider() and `set_k_p2_divider()` helpers.
Defined at line 528 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
CenterFrequencySelect center_frequency_select ()
This field has a non-trivial representation and should be accessed via the
`center_frequency_mhz()` and `set_center_frequency_mhz()` helpers.
Defined at line 532 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
template <, >
SelfType & set_center_frequency_select (CenterFrequencySelect val)
This field has a non-trivial representation and should be accessed via the
`center_frequency_mhz()` and `set_center_frequency_mhz()` helpers.
Defined at line 532 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
uint8_t k_p2_divider ()
The K (P2) divider.
The preferred value is 2. If the K divider is not 2, this constrains both
the Q (P1) divider and the P (P0) divider.
Defined at line 538 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
uint8_t q_p1_divider ()
The value of the Q (P1) divider.
This field must not be zero. Any other value (1-255) is acceptable.
The Q divider must be 1 (disabled) if the K divider is not 2. This
requirement is also stated as ensuring a 50% duty cycle for this divider.
Defined at line 560 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
DisplayPllDcoDividersKabyLake & set_q_p1_divider (uint8_t q_p1_divider)
See `q_p1_divider()` for details.
Defined at line 571 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
DisplayPllDcoDividersKabyLake & set_k_p2_divider (uint8_t k_p2_divider)
See `k_p2_divider()` for details.
Defined at line 577 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
uint8_t p_p0_divider ()
The P (P0) divider.
The P (P0) divider can only be 1 if the Q (P1) divider is also 1.
This helper returns 0 if the field is set to an undocumented value.
Defined at line 604 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
DisplayPllDcoDividersKabyLake & set_p_p0_divider (uint8_t p_p0_divider)
See `p_p0_divider()` for details.
Defined at line 619 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
int16_t center_frequency_mhz ()
The center frquency for the DPLL's DCO, in Mhz.
The DCO frequency configured in the DisplayPllDcoFrequencyKabyLake register must be
within [-6%, +1%] of the selected center frequency.
This helper returns 0 if the field is set to an undocumented value.
Defined at line 647 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
DisplayPllDcoDividersKabyLake & set_center_frequency_mhz (int16_t center_frequency_mhz)
See `center_frequency_mhz()` for details.
Defined at line 660 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
hwreg::RegisterAddr<DisplayPllDcoDividersKabyLake> GetForDpll (intel_display::PllId pll_id)
Defined at line 679 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
Enumerations
enum KP2DividerSelect
| Name | Value |
|---|---|
| k5 | 0b00 |
| k2 | 0b01 |
| k3 | 0b10 |
| k1 | 0b11 |
Possible values for the `k_p2_divider_select` field.
Defined at line 490 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
enum PP0DividerSelect
| Name | Value |
|---|---|
| k1 | 0b000 |
| k2 | 0b001 |
| k3 | 0b010 |
| k7 | 0b100 |
Documented values for the `p_p0_divider_select` field.
Defined at line 498 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h
enum CenterFrequencySelect
| Name | Value |
|---|---|
| k9600Mhz | 0b00 |
| k9000Mhz | 0b01 |
| k8400Mhz | 0b11 |
Possible values for the `center_frequency_select` field.
Defined at line 506 of file ../../src/graphics/display/drivers/intel-display/registers-dpll.h