The 16-byte chunking is already done by XDptx_AuxCommon, so there is no need to
do it in XDptx_IicRead.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
- Added function header comments for the remote I2C and remote DPCD read and
write functions.
- Updated the function header comments for immediate I2C and AUX read and write
functions.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
Some monitors don't support sideband messages with IIC reads greater than 16
bytes. This improvement breaks up the higher-level read/write request into
multiple reads/writes that work with up to 16 bytes in size.
These higher-level remote IIC read/write functions also serve as a wrapper for
an IIC read/write in case that the link count total is equal to 1 (a read/write
request to the RX device directly connected to the TX (not "remote")).
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
- Changed the offset from type u8 to u16.
- In order to accomodate offsets greater than 255, a segment pointer is used.
- The I2C read funciton is now able to access blocks other than the
block 0 and 1 at a given address. E.g., EDID extension blocks may now be
accessed by reading from I2C address 0x50 (raw=0xA0/0xA1) and writing
the appropriate segment pointer and offset.
- Input offset=0.
- EDID block 0: I2C read on offset=0 and segptr=0.
- Input offset=128.
- EDID block 1: I2C read on offset=128 and segptr=0.
- Input offset=256.
- EDID block 2: I2C read on offset=0 and segptr=1.
- Input offset=384.
- EDID block 3: I2C read on offset=128 and segptr=1.
- etc.
- Writing to the I2C address 0x30 (raw=0x60/0x61) sets the segment
pointer.
- Writing to an I2C address sets the offset that will be read from that
address. E.g., a read of the EDID, starting at offset 128 would be done
by writing 128 to 0x50, then reading from 0x50.
- Offsets that cross a 256-byte boundary requiring increment of the
segment pointer is also handled. E.g. A 16 byte read on input offset 500
results in the the returned 16 byte array having the first 11 bytes from
segptr=1 (bytes 244-255) and the last 5 bytes from segptr=2 (bytes 0-4).
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
It was observed that in MST mode, some of the sideband message were failing
due to the first check not showing a connected device.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
Instead, moved it to the application level and functions operating on the Edid
take a pointer to the Edid as an argument.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
- General clean-up and commenting.
- Added comment documentation to the examples, as well as some general
information in xdptx.h.
- Examples now identify the CPU architecture using the existence of
XPAR_INTC_0_DEVICE_ID from the xparameters.h instead of the __MICROBLAZE__
macro.
- Added and renamed some files for improved integration into SDK.
- Cleaned-up documentation and code for readability.
- No longer returning XST_INVALID_PARAMETER in lieu of asserts.
- Renamed TxConfig member of the XDptx structure to Config.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>