In some systems, the CPLL can go into an unknown state due to high current needs, when there is no reference clock available.
The CPLL will need to be powered down and powered up again to resume normal operation.
One cause for the high current need is that the CPLL can rail to the maximum frequency when there is no reference clock.
Given that the DisplayPort RX Subsystem requires the use of a generated clock from the DP159, there will be a period of time where the reference clock for the CPLL will not be there due to an unplug event.
The solution is the power down the CPLL when it is not in use and to power it back up once there is a stable reference clock.
The CPLL needs to be powered down when an unplug event occurs and powered up during the training state, when a stable reference clock is available.
Here are the steps required in the application software, using XAPP1271 as an example:
At the top of the unplug interrupt handler function, Dprx_InterruptHandlerUplug(), power down the CPLL by adding the following lines.
At the top of the PLL reset interrupt function, Dprx_InterruptHandlerPllReset(), power up the CPLL: