-
Notifications
You must be signed in to change notification settings - Fork 73
linux: How_to_Guides: Add instructions to enable SSC on DSS PLLs #529
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Add comprehensive how-to guide for enabling Spread Spectrum Clocking (SSC) on Display Subsystem (DSS) Phase-locked loops (PLLs). The guide covers: - SSC configuration parameters via device tree - Three configuration examples (center spread, down spread, greater depth) - Supported SoCs: AM62x, AM62Ax, AM62Dx, AM62Px - Troubleshooting and best practices - Customer responsibilities Signed-off-by: Sparsh Kumar <[email protected]>
| Documentation for tidss device tree node and its properties can be found in linux kernel device tree bindings in below directory | ||
| ``Documentation/devicetree/bindings/display/ti/``. Seperate binding files are present for different version of the DSS controller. | ||
|
|
||
| For information about configuring Spread Spectrum Clocking (SSC) for DSS, see <../../../../How_to_Guides/Target/How_to_enable_SSC_for_DSS.html>`__ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use :ref: for cross referencing [0]
eg - checkout [1]
[0] - https://www.sphinx-doc.org/en/master/usage/referencing.html#role-ref
| This guide shows how to configure SSC for DSS pixel clocks on supported TI SoCs. | ||
|
|
||
| .. important:: | ||
| The pixel clock frequency for DPI from the DSS PLL must not exceed 165MHz. Center spread adds a 20% overshoot to the modulation depth. Account for this when you calculate the maximum frequency. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure that the directive and the content block have 1 new line between them and that the content block has at least 1 newline after it.
| The modulation uses a triangular waveform. The Device Manager automatically configures the PLL hardware based on the modulation frequency specified in the device tree. | ||
|
|
||
| .. note:: | ||
| Down spread mode (value 3) is commonly used for display interfaces. It ensures the clock never exceeds the specified maximum frequency. This is important for meeting display timing specifications and avoiding over-clocking. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure that the directive and the content block have 1 new line between them and that the content block has at least 1 newline after it.
| Down spread mode (value 3) is commonly used for display interfaces. It ensures the clock never exceeds the specified maximum frequency. This is important for meeting display timing specifications and avoiding over-clocking. | ||
|
|
||
| .. note:: | ||
| SSC is currently supported only on display PLL for these SoCs: AM62x, AM62Ax, AM62Dx, AM62Px. The display PLL is typically PLL17. You can also use PLL16 or PLL18 for DPI applications. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure that the directive and the content block have 1 new line between them and that the content block has at least 1 newline after it.
| SSC is currently supported only on display PLL for these SoCs: AM62x, AM62Ax, AM62Dx, AM62Px. The display PLL is typically PLL17. You can also use PLL16 or PLL18 for DPI applications. | ||
|
|
||
| .. note:: | ||
| The Device Manager automatically converts the modulation depth values from the device tree to the appropriate hardware register values. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure that the directive and the content block have 1 new line between them and that the content block has at least 1 newline after it.
| }; | ||
| .. note:: | ||
| Greater modulation depth provides better EMI reduction but increases clock jitter. Test with your specific display panel to ensure timing margins meet requirements. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure that the directive and the content block have 1 new line between them and that the content block has at least 1 newline after it.
| References | ||
| ---------- | ||
|
|
||
| - `DSS Driver Documentation <../../Foundational_Components/Kernel/Kernel_Drivers/Display/DSS7.html>`__ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use :ref: for cross referencing [0]
eg - checkout [1]
[0] - https://www.sphinx-doc.org/en/master/usage/referencing.html#role-ref
| @@ -0,0 +1,201 @@ | |||
| .. _how-to-enable-ssc-for-dss: | |||
|
|
|||
| How to enable spread spectrum clocking for display subsystem | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This entire new file doesn't seem to follow sphinx guidelines for section headers
for instance, How to enable spread spectrum clocking for display subsystem should be treated as parts.
Likewise, please plan to update the below section headers accordingly.
https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html#sections
| - Modulation depth: 10 (0.1%) | ||
| - Spread type: Center spread (1) | ||
|
|
||
| Add the following properties to the DSS node in your device tree file (for example, ``k3-am62p-j722s-common-main.dtsi``): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Add the following properties to the DSS node in your device tree file (for example, ``k3-am62p-j722s-common-main.dtsi``): | |
| Add the following properties to the DSS node in your device tree file (for example, :file:`k3-am62p-j722s-common-main.dtsi`): |
https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-file
| 4. Work with the display panel vendor to resolve any issues caused by enabling SSC | ||
| 5. Validate displays to have enough functional margin with the jitter introduced by spread spectrum modulation | ||
|
|
||
| Some display panels have clocking limitations not in their data sheets. Work directly with the display panel manufacturer on any display-related issues from SSC. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
did you mean?
| Some display panels have clocking limitations not in their data sheets. Work directly with the display panel manufacturer on any display-related issues from SSC. | |
| Some display panels have clocking limitations not mentioned in their data sheets. Work directly with the display panel manufacturer on any display-related issues from SSC. |
| linux/How_to_Guides/Target/How_to_enable_DT_overlays_in_linux | ||
| linux/How_to_Guides/Target/How_To_Enable_M2CC3301_in_linux | ||
| linux/How_to_Guides/Target/How_to_playback_audio_over_HDMI | ||
| linux/How_to_Guides/Target/How_to_enable_SSC_for_DSS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need a similar guide for AM62L as well?
| Introduction | ||
| ------------ | ||
|
|
||
| Spread Spectrum Clocking (SSC) reduces electromagnetic interference (EMI). It modulates the clock frequency. SSC varies the frequency over time. This spreads energy across many frequencies. This reduces peak emissions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Spread Spectrum Clocking (SSC) is an EMI reduction technique that:
Modulates the clock frequency rather than keeping it constant
Varies the frequency over time in a controlled manner
Spreads energy across multiple frequencies instead of concentrating it at a single frequency
Reduces peak emissions by distributing the electromagnetic energy
This is a common technique used in electronic systems, particularly in high-speed digital circuits, to help meet EMI compliance requirements without requiring additional shielding or filtering components.
|
|
||
| Spread Spectrum Clocking (SSC) reduces electromagnetic interference (EMI). It modulates the clock frequency. SSC varies the frequency over time. This spreads energy across many frequencies. This reduces peak emissions. | ||
|
|
||
| Digital clock signals are periodic and square-shaped. Most energy focuses at the center frequency and odd harmonics. SSC spreads this energy across a wider range. This reduces the peak amplitude. SSC adds jitter to the clock signal. The voltage amplitude stays unchanged. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These look like single points and not paragraph.
Most of the energy is focused at the center frequency and odd harmonics, SSC redistributes this energy across a wider range by adding a jitter to clock signal thus reducing the peak amplitude.
The voltage amplitude stays unchanged -> Do you mean to say that average amplitude stays the same?
| .. code-block:: dts | ||
| &dss0 { | ||
| assigned-clocks = <&k3_clks 186 2>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The SSC is only for output DPI clock and not for functional clock ?
| - ``assigned-clock-sscs``: Configures SSC with 100 kHz modulation, 0.1% depth, center spread mode (1) | ||
|
|
||
| .. warning:: | ||
| This example uses center spread mode (1). Center spread has a 20% overshoot on the modulation depth. For 0.1% nominal depth, the actual peak deviation is about 0.12%. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Center spread has a 20% overshoot on the modulation depth. -> Is this documented somewhere?
For 0.1% nominal depth, the actual peak deviation is about 0.12% -> Is this documented somewhere?
|
|
||
| When using center spread: | ||
|
|
||
| 1. Ensure the display panel can handle the higher peak frequency |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How to estimate highest peak frequency as per current modulation params?
| Display artifacts | ||
| ^^^^^^^^^^^^^^^^^ | ||
|
|
||
| If you observe display artifacts, flickering, or other visual anomalies after enabling SSC: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we have some data on any observed side effects after going above X modulation ?
Also did we do some internal testing with refresh rate logs enabled to see if any jitter in refresh rate with suggested/example params showed in this doc ?
You can test that with kmstest --flip.
|
|
||
| **You assume all responsibility for the configuration and usage of spread-spectrum clocking.** You must: | ||
|
|
||
| 1. Research the clock limitations associated with your selected display panel |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what about HDMI monitors?
Add information on spread spectrum clocking (SSC) and how to enable it for DSS PLLs as a How_to_Guide.