The sink reordering would fail on retrieval of tiling information from a sink
that does not have a Tiled Display Topology (TDT) data block. This behavior is
incorrect since subsequent sinks may be a part of a tiled display.
Modified the function to be void.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
Added functionality that reorders the sink list such that topologies containing
tiled display(s) will have the contained sinks reordered in a consistent manner.
The need for such functionality exists because not all tiled displays will have
the same internal topologies.
It was observed that two 4k2k MST based monitors (tiled display, 2 sinks) from
different manufacturers would have the left and right images swapped using
identical stream-to-sink mappings.
Thus, the need to obtain the tiled display topology information of all sinks and
their relative tile location is required to send the correct stream to the
desired sink.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
Given a sink, the function will attempt to retrieve the Tiled Display Topology
section data block which is part of the DisplayID structure.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
Given a sink, the function will attempt to retrieve an EDID extension block of
type DisplayID.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
Created a file containing utility functions related to the Extended Display
Identification Information (EDID).
The initial functions included are used to fetch EDID blocks.
Block numbering starts with 0 being the base EDID block, and extension block
starting at 1.
EDID blocks are 128 bytes in size.
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>
Some monitors don't support sideband messages with AUX 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 DPCD read/write functions also serve as a wrapper for
an AUX 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>
Testing with the new IP configuration parameter (payload data width) required
some changes to the examples.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
Also, rearranged/grouped the GUID functions with the EDID read function as
"utility" functions.
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>
- Now supporting up to 4 streams.
- Separate set of main stream attributes (MSA) for each stream.
- New MST calculations for payload bandwidth number (PBN) and time slot
allocation.
Signed-off-by: Andrei-Liviu Simion <andrei.simion@xilinx.com>
The user needs to implement Dptx_ConfigureAudioSrc and Dptx_AudioSendInfoFrame
as these functions are application-specific.
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>