The purpose of this page is to describe the Linux CCF driver for SI5324 Clock Multiplier/Jitter Attenuator
Table of Contents
The Si5324 is a low-bandwidth, jitter-attenuating, precision clock multiplier for applications requiring sub 1 ps jitter performance with loop bandwidths between 4 Hz and 525 Hz. The Si5324 accepts two input clocks ranging from 2 kHz to 710 MHz and generates two output clocks ranging from 2 kHz to 945 MHz and select frequencies to 1.4 GHz. The two outputs are divided down separately from a common source. The Si5324 can also use its external reference as a clock source for frequency synthesis. The device provides virtually any frequency translation combination across this operating range. The Si5324 input clock frequency and clock multiplication ratio are programmable via an I2C or SPI interface
SI5324 driver is implemented to adhere to Linux Kernel Common Clock Framework (CCF). This driver is added as a clock producer. This clock can be obtained and set by any consuming driver. In Xilinx’s HDMI Tx use-case, for every mode change, after Tx is configured for the requested mode, DRM driver requests the desired frequency from the CCF which in turn triggers the SI5423 programming.
Note: SI5324 is pin and register compatible with SI5319 and SI5328 (available on zcu106 boards). Driver at probe time will read the device ID register to validate which device is being controlled.
Known Issues and Limitations
Driver is now part of kernel and present inside ./driver/clk folder. This is not a comprehensive SI5324 driver. Only API’s required to support Xilinx HDMI Tx use-case(s) are implemented at this time.
Kernel Configuration Options for Driver
2018.3: From 2018.3 onwards, this driver will be part of linux as explained above and will be compiled as built-in module. By default the driver will be part of generated kernel image as the COMMON_CLK_SI5324 is set in default configuration
2018.1: CONFIG_COMMON_CLK and CONFIG_I2C should be enabled Driver is added as an out-of-tree kernel module and therefore requires no driver specific kernel configuration However to enable the driver user must include it in the rootfs. Following steps are required enable the driver
Make sure the meta-user layer has the recipe-hdmi included
Add the recipe to petalinux image. Edit ./meta-user/recipes-core/images/petalinux-image.bbappend and add the new recipe at the end
IMAGE_INSTALL_append = " kernel-module-hdmi"
Next include the driver in the rootfs
% petalinux-config -c rootfs
Select "user-packages->modules->kernel-module-hdmi", save and exit
Build the project
2017.3: Driver is added in-kernel and can be enabled via following configuration options CONFIG_COMMON_CLK_SI5324, CONFIG_COMMON_CLK and CONFIG_I2C should be enabled
Device Tree Binding
The dts node should be defined with correct hardware configuration. How to define the node is documented in