Wiki

This version (03 Feb 2023 12:44) was approved by Antoniu Miclaus.The Previously approved version (31 Mar 2022 10:06) is available.Diff

ADF4377 IIO Wideband Synthesizer with Integrated VCO Linux Driver

Supported Devices

Supported Boards

This driver supports the

Description

The ADF4377 is a high performance, utlralow jitter, dual output integer-N phased locked loop (PLL) with integrated voltage controlled oscillator (VCO) ideally suited for data converter and mixed signal front end (MxFE) clock applications. The high performance PLL has a figure of merit of -239 dBc/Hz, ultralow 1/f Noise and a high phase frequency detector (PFD) frequency that can achieve ultra-low in-band noise and integrated jitter. The ADF4377's fundamental VCO and output divider generate frequencies from 800 MHz to 12.8 GHz. The ADF4377 integrates all necessary power supply bypass capacitors, saving board space on compact boards.

For multiple data converter and MXFE clock applications, the ADF4377 simplifies clock alignment and calibration routines required with other clock solutions, by implementing:

  • automatic reference to output synchronization,
  • extremely well match reference to output delays across process, voltage, and temperature
  • jitter free reference to ouput delay adjustment capability

These features allow for predictable and precise multi-chip clock and SYSREF alignment. JESD204B and JESD204C subclass 1 solutions are supported by pairing the ADF4377 with an integrated circuit (IC) that distributes pairs of reference and SYSREF signals.

Source Code

Status

Files

Function File
driver drivers/iio/frequency/adf4377.c
Documentation adi,adf4377.yaml
ABI documentation sysfs-bus-iio-frequency-adf4377

Example platform device initialization

The ADF4377 driver is a SPI bus driver and can be instantiated via device tree.

Required properties:

  • compatible: Should always be one of these:
    • “adi,adf4377”
    • “adi,adf4372”
  • reg: SPI chip select number.
  • clocks: a list of phandle, one for each entry in clock-names.
  • clock-names: Must include the following entry: “ref_in”

Optional properties:

  • ce-en-gpios: Gpio that controls the Chip Enable Pin.
  • enclk1-gpios: Gpio that controls the Enable Clock 1 Output Buffer Pin.
  • enclk2-gpios: Gpio that controls the Enable Clock 2 Output Buffer Pin.
Example:

spi {
        #address-cells = <1>;
        #size-cells = <0>;
        frequency@0 {
            compatible = "adi,adf4377";
            reg = <0>;
            spi-max-frequency = <10000000>;
            clocks = <&adf4377_ref_in>;
            clock-names = "ref_in";
        };
    };

Enabling Linux driver support

Configure kernel with “make menuconfig” (alternatively use “make xconfig” or “make qconfig”)

The ADF4377 driver depends on SPI and selects REGMAP_SPI

Adding Linux driver support

Configure kernel with “make menuconfig” (alternatively use “make xconfig” or “make qconfig”)

Linux Kernel Configuration
	Device Drivers  --->
	<*>     Industrial I/O support --->
	    --- Industrial I/O support
	             Frequency Synthesizers DDS/PLL --->
                             *** Phase-Locked Loop (PLL) frequency synthesizers ***
                             <*> Analog Devices ADF4377 Microwave Wideband Synthesizer

Hardware configuration

Driver testing

Each and every IIO device, typically a hardware chip, has a device folder under /sys/bus/iio/devices/iio:deviceX. Where X is the IIO index of the device. Under every of these directory folders reside a set of files, depending on the characteristics and features of the hardware device in question. These files are consistently generalized and documented in the IIO ABI documentation. In order to determine which IIO deviceX corresponds to which hardware device, the user can read the name file /sys/bus/iio/devices/iio:deviceX/name. In case the sequence in which the iio device drivers are loaded/registered is constant, the numbering is constant and may be known in advance.

02 Mar 2011 15:16

This specifies any shell prompt running on the target

analog:/sys/bus/iio/devices/iio:device0# cd /sys/bus/iio/devices/
root@analog:/sys/bus/iio/devices# ls
iio:device0
root@analog:/sys/bus/iio/devices#

root@analog:/sys/bus/iio/devices# cd iio\:device0
root@analog:/sys/bus/iio/devices/iio:device0# ls -l
total 0
-r--r--r-- 1 root root 4096 sep  4 14:05 dev
-rw-r--r-- 1 root root 4096 sep  4 14:05 frequency
-rw-r--r-- 1 root root 4096 sep  4 14:05 muxout_select
-rw-r--r-- 1 root root 4096 sep  4 14:05 muxout_select_available
-r--r--r-- 1 root root 4096 sep  4 14:05 name
lrwxrwxrwx 1 root root    0 sep  4 14:05 of_node -> ../../../../../../../../firmware/devicetree/base/soc/spi@7e204000/adf4377@0
drwxr-xr-x 2 root root    0 sep  4 14:05 power
lrwxrwxrwx 1 root root    0 sep  2 17:46 subsystem -> ../../../../../../../../bus/iio
-rw-r--r-- 1 root root 4096 sep  2 17:46 uevent

root@analog:/sys/bus/iio/devices/iio:device0#

Show device name

This specifies any shell prompt running on the target

root@analog:/sys/bus/iio/devices/iio:device0# cat name
adf4377

Read frequency

This specifies any shell prompt running on the target

root@analog:/sys/bus/iio/devices/iio:device0# cat frequency
1000000000

Set frequency

This specifies any shell prompt running on the target

root@analog:/sys/bus/iio/devices/iio:device0# echo 1000000000 > frequency
root@analog:/sys/bus/iio/devices/iio:device0# cat frequency
1000000000

Muxout Select

The mux output allows the user to access various internal points on the chip. Valid values that can be written:

This specifies any shell prompt running on the target

root@analog:/sys/bus/iio/devices/iio:device0# cat muxout_select_available
high_z lock_detect muxout_low f_div_rclk_2 f_div_nclk_2 muxout_high
root@analog:/sys/bus/iio/devices/iio:device0# cat muxout_select
digital_lock
root@analog:/sys/bus/iio/devices/iio:device0# echo lock_detect > muxout_select
root@analog:/sys/bus/iio/devices/iio:device0# cat muxout_select
lock_detect

More Information

resources/tools-software/linux-drivers/iio-pll/adf4377.txt · Last modified: 03 Feb 2023 12:44 by Antoniu Miclaus