// dispmprt.h
typedef struct _DXGKARG_DPI2CIOTRANSMISSION {
struct {
UINT Read : 1;
UINT Write : 1;
UINT EDDCMode : 1;
UINT OffsetSizeInBytes : 3;
UINT CanUseCachedData : 1;
UINT Reserved : 25;
};
UINT RootPortIndex;
UINT I2CAddress;
union {
struct {
UINT WordOffset : 8;
UINT SegmentPointer : 7;
UINT Reserved1 : 17;
};
UINT Offset;
};
UINT BufferSizeSupplied;
UINT BytesToWrite;
UINT BytesToRead;
UINT DPNativeError;
UINT BytesWritten;
UINT BytesRead;
BYTE Data[1];
} DXGKARG_DPI2CIOTRANSMISSION, *PDXGKARG_DPI2CIOTRANSMISSION;
View the official Windows Driver Kit DDI referenceNo description available.
The DXGKARG_DPI2CIOTRANSMISSION structure is a parameter for the DXGKDDI_DPI2CIOTRANSMISSION callback.
ReadIf set, perform a DP I2C over AUX read operation.
WriteIf set, perform a DP I2C over AUX write operation.
EDDCModeIf set, the device at I2CAddress is Enhanced Display Data Channel (E-DDC).
OffsetSizeInBytesOffset size from Offset, in bytes, at which to write data for non-E-DDC devices.
CanUseCachedDataIf set, the driver can use cached data.
ReservedReserved; do not use.
RootPortIndexIndex value of the DP-capable connector on which to perform the DP I2C over AUX read or write operation. The driver returned the total number of DP-capable connectors on the GPU in a prior call to DXGKDDI_QUERYDPCAPS. Subsequent calls to DXGKDDI_DPI2CIOTRANSMISSION refer to the DP connectors with RootPortIndex ranging from 0 to NumRootPorts - 1.
I2CAddressI2C address. Set to 0xA0 for EDID, or 0xA4 for DisplayID.
WordOffsetWord offset, in bytes.
SegmentPointerWhen EDDCMode is set, the driver should write SegmentPointer to I2C address 0x60. SegmentPointer identifies the 256-byte data block being accessed for E-DDC devices.
Reserved1Reserved; do not use.
OffsetAddress for IO within the device.
BufferSizeSuppliedSize of the Data buffer, in bytes. BufferSizeSupplied should be greater than or equal to the larger of BytesToWrite and BytesToWrite.
BytesToWriteNumber of bytes to write for a write operation.
BytesToReadNumber of bytes to read for a read operation.
DPNativeErrorField in which the driver can encode more details about the error when returning STATUS_DEVICE_PROTOCOL_ERROR from DXGKDDI_DPI2CIOTRANSMISSION.
BytesWrittenNumber of bytes written. The driver should return this value as accurately as possible in the case of failure.
BytesReadNumber of bytes read. The driver should return this value as accurately as possible in the case of failure.
DataBuffer containing the data to write for a write operation, and/or in which to receive the data for a read operation.
When EDDCMode is set, the driver should write WordOffset to OffsetSizeInBytes.
When EDDCMode is set, there are E-DDC devices at I2CAddress (0xA0 for EDID, 0xA4 for DisplayID). In this situation, the driver should write SegmentPointer to I2C address 0x60, WordOffset to I2CAddress, and then carry out the IO operation. For all other I2C devices, the driver should write bytes of Offset according to OffsetSizeInBytes.
In case of failure, the driver should return BytesWritten and BytesRead as accurately as possible.
For Windows 10 version 2004, a write operation is only allowed for MCCS I2C address of 0x6E. All other operations will be blocked until a later OS release when access control is added.