How can I enable Spread Spectrum for Apalis iMX6?

Hi,

I need to activate spread spectrum for the i.MX6 processor on my apalis modules.

I found the follow instructions: https://community.nxp.com/docs/DOC-100036

How can I add these changes to my Toradex BSP? Is there another way to enable spread spectrum? Do you have experience doing this?

Thanks and kind regards
Christian

Hi Christian

We have no experience with enabling spread spectrum.

With the 2015.04-toradex U-Boot we use the IVT/DCD table approach. So you would have to convert that to a plugin approach as in the nxp community article.
The following with its includes setup the DCD table for Apalis iMX6:
http://git.toradex.com/cgit/u-boot-toradex.git/tree/board/toradex/apalis_imx6/apalis_imx6q.cfg?h=2015.04-toradex

We are currently transitioning to a 2016.11 based U-Boot and we transition to use a SPL which sets up the DDR RAM.
I guess that the spread spectrum feature could be initialized from the SPL before setting up DDR.
E.g. before the call to spl_dram_init(); (or ccgr_init() ?).


To build U-Boot with SPL

$ make apalis_imx6_defconfig
$ make u-boot-with-spl.imx

And deploy the resulting u-boot-with-spl.imx as you would have with u-boot.imx before.

Max

Hi Max,

thanks for the overview and entry points you give. I’ll dig into this and post any useful results.

Kind regards

Christian

Before starting to implement the changes from NXP, I decided (at least) to try the kernel module given at https://github.com/code-ing/pixiepro-spread-spectrum and it… works :smiley:

Loading/Unloading the module activates/deactivates the spread spectrum feature.

Thank you for sharing that information. That is good to know.
Strange that NXP claims that you cannot change it after DDR initizialisation.

Max

Hi @CSchmiedl

I’m not working on the same board but try to do a similar thing. I used the kernel module you mentioned and modified it (register base address definition). It seems to work fine when I read the values back from the registers and I can load/unload the module as many times as I want. But the problem is the verification with the Oscilloscope. Did you measure it in some way to verify that the PLL changes on the fly (without power down and up like NXP mentions)?
I cannot measure any difference with the module loaded and unloaded, although the enable bit is different and step and stop value are set as expected.