CCF SI5324 Driver


The purpose of this page is to describe the Linux CCF driver for SI5324 Clock Multiplier/Jitter Attenuator


Table of Contents

Introduction

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

Driver Overview

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
%petalinux-build

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
2018.3: Documentation/devicetree/bindings/clock/silabs,si5324.txt
2018.1: Documentation/devicetree/bindings/silabs,si5324.txt
2017.3: Documentation/devicetree/bindings/clock/silabs,si5324.txt

Boards Supported

Driver has been tested on following boards
  • zcu102 Rev 1.0
  • zcu106 Rev 1.0


Change Logs

  • 2020.1
    • Summary
      • No changes
  •  2019.2
    • Summary
      • No changes
  • 2019.1
  •  2018.3
    • Summary
      • si5324 driver is now inside linux kernel and compiled as built in module (no more part of hdmi-modules)
      • Driver code is present in ./driver/clk folder and Device tree documentation at ./Documentation/devicetree/bindings/clock/silabs,si5324.txt
    • Commits

Related Links


© Copyright 2019 - 2022 Xilinx Inc. Privacy Policy