class GpioPinPairControl
Defined at line 574 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
GPIO_CTL
(GPIO (general-purpose input/output) Pin Pair Control)
Intel Display Engine has a set of GPIO pin pairs each of which can be
controlled independently for a certain DDI, allowing the support of device
query (EDID) and control functions (DDC interface protocols).
The two pins in each pin pair are named "data" and "clock" based on their
typical roles ("data" pin for data line (SDA), and "clock" pin for clock line
(SDC)) in I2C protocol, though they can be used on other purposes. For
example, Tiger Lake may use the same GPIO pins for MIPI DSI power and control
(IHD-OS-TGL-Vol 12-1.22-Rev 2.0, Page 119).
These GPIO pins can be programmed by GMBUS controller, or the
software can manual program the pins directly (also known as "bit banging"
or "bit bashing"). Details about bit bashing is available at Programmers'
Reference Manual, Section "GPIO Programming for I2C Bit Bashing":
- Tiger Lake: IHD-OS-TGL-Vol 12-1.22-Rev 2.0, Page 424
- Kaby Lake: IHD-OS-KBL-Vol 12-1.17, Page 199
- Skylake: IHD-OS-SKL-Vol 12-05.16, Page 191
This register has an unusual scheme to support partial modification without
full read-modify-write operation. Each of the 1-bit fields
{data, clock}_{value, direction_is_output} is backed by a write_* bit.
When a MMIO write has a write_* bit set to zero, the corresponding field is
ignored during the write and the old value of that field will be preserved.
- Tiger Lake: IHD-OS-TGL-Vol 2c-1.22-Rev 2.0, Part 1, pages 1030-1034
- Kaby Lake: IHD-OS-KBL-Vol 2c-1.17, Part 1, pages 756-758
- Skylake: IHD-OS-SKL-Vol 2c-05.16, Part 1, pages 750-752
Public Members
field_RsvdZ_576
field_data_input_579
field_data_output_588
field_write_data_output_594
field_data_direction_is_output_602
field_write_data_direction_is_output_608
field_RsvdZ_610
field_clock_input_613
field_clock_output_616
field_write_clock_output_619
field_clock_direction_is_output_622
field_write_clock_direction_is_output_625
Public Methods
template <, >
typename SelfType::ValueType data_input ()
The signal sampled on GPIO data pin as input.
Defined at line 579 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_data_input (typename SelfType::ValueType val)
The signal sampled on GPIO data pin as input.
Defined at line 579 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType data_output ()
The value that will be placed on GPIO data pin as output.
The pin will be driven to the value here iff `data_direction_is_output` is
true.
In order to update this bit when writing to the register,
`write_data_output` must be true. See the register-level description about
`write_*` fields.
Defined at line 588 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_data_output (typename SelfType::ValueType val)
The value that will be placed on GPIO data pin as output.
The pin will be driven to the value here iff `data_direction_is_output` is
true.
In order to update this bit when writing to the register,
`write_data_output` must be true. See the register-level description about
`write_*` fields.
Defined at line 588 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_write_data_output (typename SelfType::ValueType val)
If this field is true when writing to the register, the
`data_output` field of the register will be overwritten by the new value;
otherwise the old value will be preserved.
See the register-level description about `write_*` fields.
Defined at line 594 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType write_data_output ()
If this field is true when writing to the register, the
`data_output` field of the register will be overwritten by the new value;
otherwise the old value will be preserved.
See the register-level description about `write_*` fields.
Defined at line 594 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType data_direction_is_output ()
Whether the GPIO pin will be driven to the value of the `data_output`
field.
In order to update this bit when writing to the register,
`write_data_direction_is_output` must be true.
\
See the register-level
description about `write_*` fields.
Defined at line 602 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_data_direction_is_output (typename SelfType::ValueType val)
Whether the GPIO pin will be driven to the value of the `data_output`
field.
In order to update this bit when writing to the register,
`write_data_direction_is_output` must be true.
\
See the register-level
description about `write_*` fields.
Defined at line 602 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_write_data_direction_is_output (typename SelfType::ValueType val)
If this field is true when writing to the register, the
`data_direction_is_output` field of the register will be overwritten by the
new value; otherwise the old value will be preserved. See the
register-level description about `write_*` fields.
Defined at line 608 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType write_data_direction_is_output ()
If this field is true when writing to the register, the
`data_direction_is_output` field of the register will be overwritten by the
new value; otherwise the old value will be preserved. See the
register-level description about `write_*` fields.
Defined at line 608 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType clock_input ()
Equivalent of `data_input` for the clock pin.
Defined at line 613 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_clock_input (typename SelfType::ValueType val)
Equivalent of `data_input` for the clock pin.
Defined at line 613 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType clock_output ()
Equivalent of `data_output` for the clock pin.
Defined at line 616 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_clock_output (typename SelfType::ValueType val)
Equivalent of `data_output` for the clock pin.
Defined at line 616 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_write_clock_output (typename SelfType::ValueType val)
Equivalent of `write_data_output` for the clock pin.
Defined at line 619 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType write_clock_output ()
Equivalent of `write_data_output` for the clock pin.
Defined at line 619 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType clock_direction_is_output ()
Equivalent of `data_direction_is_output` for the clock pin.
Defined at line 622 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_clock_direction_is_output (typename SelfType::ValueType val)
Equivalent of `data_direction_is_output` for the clock pin.
Defined at line 622 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
SelfType & set_write_clock_direction_is_output (typename SelfType::ValueType val)
Equivalent of `write_data_direction_is_output` for the clock pin.
Defined at line 625 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
template <, >
typename SelfType::ValueType write_clock_direction_is_output ()
Equivalent of `write_data_direction_is_output` for the clock pin.
Defined at line 625 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h
hwreg::RegisterAddr<GpioPinPairControl> GetForPort (const intel_display::GpioPort & gpio_port)
Get the DDC GPIO pin control register for port `gpio_port`.
Defined at line 628 of file ../../src/graphics/display/drivers/intel-display/registers-gmbus.h