drm/i915/cdclk: Document CDCLK components

Improve documentation by giving an overview of the components involved
in the generation of the CDCLK.

v2: Fix htmldoc error because of missing blank line at the start of
    bulleted list.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240221185131.287302-2-gustavo.sousa@intel.com
This commit is contained in:
Gustavo Sousa
2024-02-21 15:51:32 -03:00
committed by Matt Roper
parent 669cf07d83
commit f6e4fe152d

View File

@@ -63,6 +63,32 @@
* DMC will not change the active CDCLK frequency however, so that part
* will still be performed by the driver directly.
*
* There are multiple components involved in the generation of the CDCLK
* frequency:
*
* - We have the CDCLK PLL, which generates an output clock based on a
* reference clock and a ratio parameter.
* - The CD2X Divider, which divides the output of the PLL based on a
* divisor selected from a set of pre-defined choices.
* - The CD2X Squasher, which further divides the output based on a
* waveform represented as a sequence of bits where each zero
* "squashes out" a clock cycle.
* - And, finally, a fixed divider that divides the output frequency by 2.
*
* As such, the resulting CDCLK frequency can be calculated with the
* following formula:
*
* cdclk = vco / cd2x_div / (sq_len / sq_div) / 2
*
* , where vco is the frequency generated by the PLL; cd2x_div
* represents the CD2X Divider; sq_len and sq_div are the bit length
* and the number of high bits for the CD2X Squasher waveform, respectively;
* and 2 represents the fixed divider.
*
* Note that some older platforms do not contain the CD2X Divider
* and/or CD2X Squasher, in which case we can ignore their respective
* factors in the formula above.
*
* Several methods exist to change the CDCLK frequency, which ones are
* supported depends on the platform:
*