class DdiAuxControl
Defined at line 578 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
DDI_AUX_CTL (DDI AUX Channel Control)
Tiger Lake: IHD-OS-TGL-Vol2c-12.21 Part 1 pages 342-345
DG1: IHD-OS-DG1-Vol 2c-2.21 Part 1 pages 321-323
Kaby Lake: IHD-OS-KBL-Vol 2c-1.17 Part 1 pages 436-438
Skylake: IHD-OS-SKL-Vol 2c-05.16 Part 1 pages 432-434
Public Members
field_transaction_in_progress_589
field_transaction_done_595
field_interrupt_on_done_598
field_timeout_604
field_timeout_timer_select_611
field_receive_error_630
field_message_size_645
field_use_thunderbolt_655
field_fast_wake_sync_pulse_count_660
field_sync_pulse_count_672
static const int kTimeoutUnsupported400us
static const int kTimeout600us
static const int kTimeout800us
static const int kTimeoutLarge
static const int kFastWakeSyncPulseCount
static const int kMinSyncPulseCount
Public Methods
template <, >
SelfType & set_transaction_in_progress (typename SelfType::ValueType val)
True while the DDI is performing an AUX transaction.
The driver sets this field to true to start an AUX transaction. The
hardware resets it back to false when the AUX transaction is completed.
The register should not be modified while this field is true.
On Kaby Lake and Skylake, DDI_AUX_MUTEX must be acquired before setting up
an AUX transaction.
Defined at line 589 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType transaction_in_progress ()
True while the DDI is performing an AUX transaction.
The driver sets this field to true to start an AUX transaction. The
hardware resets it back to false when the AUX transaction is completed.
The register should not be modified while this field is true.
On Kaby Lake and Skylake, DDI_AUX_MUTEX must be acquired before setting up
an AUX transaction.
Defined at line 589 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_transaction_done (typename SelfType::ValueType val)
Set to true by hardware when it completes an AUX transaction.
This bit is sticky Read/Write-Clear. It stays true until the driver resets
it by writing true to it.
Defined at line 595 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType transaction_done ()
Set to true by hardware when it completes an AUX transaction.
This bit is sticky Read/Write-Clear. It stays true until the driver resets
it by writing true to it.
Defined at line 595 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType interrupt_on_done ()
If true, an interrupt is triggered when an AUX transaction is completed.
Defined at line 598 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_interrupt_on_done (typename SelfType::ValueType val)
If true, an interrupt is triggered when an AUX transaction is completed.
Defined at line 598 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_timeout (typename SelfType::ValueType val)
Set to true by hardware when an AUX transaction times out.
This bit is sticky Read/Write-Clear. It stays true until the driver resets
it by writing true to it.
Defined at line 604 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType timeout ()
Set to true by hardware when an AUX transaction times out.
This bit is sticky Read/Write-Clear. It stays true until the driver resets
it by writing true to it.
Defined at line 604 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_timeout_timer_select (typename SelfType::ValueType val)
Selects the AUX transaction timeout.
The AUX transaction limit in the DisplayPort specification is 500us.
The values are documented as 0 (400us, unsupported), 1 (600us), 2 (800us)
Defined at line 611 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType timeout_timer_select ()
Selects the AUX transaction timeout.
The AUX transaction limit in the DisplayPort specification is 500us.
The values are documented as 0 (400us, unsupported), 1 (600us), 2 (800us)
Defined at line 611 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType receive_error ()
Set to true by hardware when an AUX transaction receives invalid data.
The received data could be invalid due to: corruption detected, the bits
received don't add up to an integer number of bytes, more than 20 bytes
received.
This bit is sticky Read/Write-Clear. It stays true until the driver resets
it by writing true to it.
Defined at line 630 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_receive_error (typename SelfType::ValueType val)
Set to true by hardware when an AUX transaction receives invalid data.
The received data could be invalid due to: corruption detected, the bits
received don't add up to an integer number of bytes, more than 20 bytes
received.
This bit is sticky Read/Write-Clear. It stays true until the driver resets
it by writing true to it.
Defined at line 630 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType message_size ()
Total number of bytes in an AUX message, including the message header.
The driver writes this field to indicate the message size for the next AUX
transaction. The hardware writes this field to indicate the response size
for the last AUX transaction.
The message includes the header bytes (4 for command, 2 for reply). The
DisplayPort specification states that the maximum data size is 16 bytes,
leading to a 20-byte maximum message size.
The driver must write values between 1 and 20. The value read from this
field is only valid and meaningful if `transaction_done` is true, and
`transaction_in_progress`, `timeout`, and `receive_error` are false.
Defined at line 645 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_message_size (typename SelfType::ValueType val)
Total number of bytes in an AUX message, including the message header.
The driver writes this field to indicate the message size for the next AUX
transaction. The hardware writes this field to indicate the response size
for the last AUX transaction.
The message includes the header bytes (4 for command, 2 for reply). The
DisplayPort specification states that the maximum data size is 16 bytes,
leading to a 20-byte maximum message size.
The driver must write values between 1 and 20. The value read from this
field is only valid and meaningful if `transaction_done` is true, and
`transaction_in_progress`, `timeout`, and `receive_error` are false.
Defined at line 645 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_use_thunderbolt (typename SelfType::ValueType val)
Directs AUX transactions to the Thunderbolt IO, or the USB-C / Combo IO.
If true, transactions will be performed via the Thunderbolt controller.
Otherwise, the transactions will be performed over USB-C (using the FIA) or
over the Combo DDI IO.
This field is reserved (must be false) on Kaby Lake and Skylake, which
don't support Thunderbolt IO.
Defined at line 655 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType use_thunderbolt ()
Directs AUX transactions to the Thunderbolt IO, or the USB-C / Combo IO.
If true, transactions will be performed via the Thunderbolt controller.
Otherwise, the transactions will be performed over USB-C (using the FIA) or
over the Combo DDI IO.
This field is reserved (must be false) on Kaby Lake and Skylake, which
don't support Thunderbolt IO.
Defined at line 655 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType fast_wake_sync_pulse_count ()
Number of SYNC pulses sent during SYNC for eDP fast wake transactions.
The value is the number of SYNC pulses minus 1.
Defined at line 660 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_fast_wake_sync_pulse_count (typename SelfType::ValueType val)
Number of SYNC pulses sent during SYNC for eDP fast wake transactions.
The value is the number of SYNC pulses minus 1.
Defined at line 660 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
SelfType & set_sync_pulse_count (typename SelfType::ValueType val)
Number of SYNC pulses sent during SYNC for standard transactions.
The value is the number of SYNC pulses minus 1. This is the sum of the
10-16 pre-charge pulses (zeros) and the 16 consecutive zeros at the start
of the AUX_SYNC pattern.
Defined at line 672 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
template <, >
typename SelfType::ValueType sync_pulse_count ()
Number of SYNC pulses sent during SYNC for standard transactions.
The value is the number of SYNC pulses minus 1. This is the sum of the
10-16 pre-charge pulses (zeros) and the 16 consecutive zeros at the start
of the AUX_SYNC pattern.
Defined at line 672 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
hwreg::RegisterAddr<DdiAuxControl> GetForKabyLakeDdi (intel_display::DdiId ddi_id)
For Kaby Lake and Skylake DDI A - DDI E.
The Kaby Lake and Skylake references only document the AUX registers for
DDIs A-D. Other manuals, such as IHD-OS-ICLLP-Vol 2c-1.20, document AUX
registers for DDIs E-F, and their MMIO addresses are what we'd expect.
For now, we assume DDI E has an AUX channel that works like the other DDIs.
Defined at line 684 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h
hwreg::RegisterAddr<DdiAuxControl> GetForTigerLakeDdi (intel_display::DdiId ddi_id)
For Tiger Lake and DG1.
Defined at line 693 of file ../../src/graphics/display/drivers/intel-display/registers-ddi.h