This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
resources:tools-software:linux-drivers:iio-pll:adf4371 [04 Sep 2019 12:34] – Optional Properties: clock-scales Stefan Popa | resources:tools-software:linux-drivers:iio-pll:adf4371 [04 Sep 2019 14:13] (current) – More Information Stefan Popa | ||
---|---|---|---|
Line 31: | Line 31: | ||
| driver | | driver | ||
| Documentation | [[linux.github> | | Documentation | [[linux.github> | ||
+ | | ABI documentation| [[linux.github> | ||
Example device tree | Example device tree | ||
Line 52: | Line 53: | ||
**Optional properties: | **Optional properties: | ||
* **clock-scales**: | * **clock-scales**: | ||
+ | * **adi, | ||
+ | * **adi, | ||
+ | * **adi, | ||
+ | **Channel specific optional properties: | ||
+ | * **reg**: The channel number. It can have up to 3 channels on adf4372 and 4 channels on adf4371, numbered from 0 to 3. | ||
+ | * **adi, | ||
+ | * **adi, | ||
+ | < | ||
+ | Example: | ||
+ | spi0 { | ||
+ | # | ||
+ | #size-cells = <0>; | ||
+ | frequency@0 { | ||
+ | compatible = " | ||
+ | reg = <0>; | ||
+ | # | ||
+ | #size-cells = <0>; | ||
+ | # | ||
+ | spi-max-frequency = < | ||
+ | clocks = <& | ||
+ | clock-names = " | ||
+ | clock-scales = <1 10>; | ||
+ | channel@0 { | ||
+ | reg = <0>; | ||
+ | adi, | ||
+ | adi, | ||
+ | }; | ||
+ | channel@1 { | ||
+ | reg = <1>; | ||
+ | adi, | ||
+ | }; | ||
+ | channel@2 { | ||
+ | reg = <2>; | ||
+ | adi, | ||
+ | adi, | ||
+ | }; | ||
+ | channel@3 { | ||
+ | reg = <3>; | ||
+ | adi, | ||
+ | adi, | ||
+ | }; | ||
+ | }; | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Enabling Linux driver support ====== | ||
+ | |||
+ | Configure kernel with "make menuconfig" | ||
+ | "make qconfig" | ||
+ | |||
+ | <WRAP round help> | ||
+ | The ADF4371 driver depends on **SPI** and selects **REGMAP_SPI** | ||
+ | </ | ||
+ | |||
+ | ====== Adding Linux driver support ====== | ||
+ | |||
+ | Configure kernel with "make menuconfig" | ||
+ | "make qconfig" | ||
+ | |||
+ | < | ||
+ | Linux Kernel Configuration | ||
+ | Device Drivers | ||
+ | < | ||
+ | --- Industrial I/O support | ||
+ | | ||
+ | *** Phase-Locked Loop (PLL) frequency synthesizers *** | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ====== Hardware configuration ====== | ||
+ | |||
+ | ====== Driver testing ====== | ||
+ | |||
+ | {{page> | ||
+ | |||
+ | <WRAP box bggreen>< | ||
+ | < | ||
+ | analog:/ | ||
+ | root@analog:/ | ||
+ | iio: | ||
+ | root@analog:/ | ||
+ | |||
+ | root@analog:/ | ||
+ | root@analog:/ | ||
+ | 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 muxout_enable | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 muxout_mode | ||
+ | -r--r--r-- 1 root root 4096 sep 4 14:05 name | ||
+ | lrwxrwxrwx 1 root root 0 sep 4 14:05 of_node -> ../ | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage0_frequency | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage0_name | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage0_powerdown | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage1_frequency | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage1_name | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage1_powerdown | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage2_frequency | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage2_name | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage2_powerdown | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage3_frequency | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage3_name | ||
+ | -rw-r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage3_powerdown | ||
+ | -r--r--r-- 1 root root 4096 sep 4 14:05 out_altvoltage_muxout_mode_available | ||
+ | drwxr-xr-x 2 root root 0 sep 4 14:05 power | ||
+ | lrwxrwxrwx 1 root root 0 sep 2 17:46 subsystem -> ../ | ||
+ | -rw-r--r-- 1 root root 4096 sep 2 17:46 uevent | ||
+ | |||
+ | root@analog:/ | ||
+ | </ | ||
+ | |||
+ | ===== Show device name ===== | ||
+ | |||
+ | <WRAP box bggreen>< | ||
+ | < | ||
+ | root@analog:/ | ||
+ | **adf4371** | ||
+ | </ | ||
+ | |||
+ | ===== Read channel frequency ===== | ||
+ | |||
+ | <WRAP box bggreen>< | ||
+ | < | ||
+ | root@analog:/ | ||
+ | **8000000000** | ||
+ | </ | ||
+ | |||
+ | ===== Read channel name ===== | ||
+ | |||
+ | <WRAP box bggreen>< | ||
+ | < | ||
+ | root@analog:/ | ||
+ | **RF8x** | ||
+ | </ | ||
+ | |||
+ | ===== Set channel frequency ===== | ||
+ | |||
+ | <WRAP box bggreen>< | ||
+ | < | ||
+ | root@analog:/ | ||
+ | root@analog:/ | ||
+ | **1000000000** | ||
+ | </ | ||
+ | |||
+ | ===== Channel power down ===== | ||
+ | |||
+ | <WRAP box bggreen>< | ||
+ | < | ||
+ | root@analog:/ | ||
+ | 0 | ||
+ | root@analog:/ | ||
+ | root@analog:/ | ||
+ | 1 | ||
+ | </ | ||
+ | |||
+ | ===== Muxout mode ===== | ||
+ | |||
+ | The mux output allows the user to access various internal points on the chip. Valid values that can be written: | ||
+ | |||
+ | <WRAP box bggreen>< | ||
+ | < | ||
+ | root@analog:/ | ||
+ | tristate digital_lock charge_pump_up charge_pump_down RDIV2 N_div_out VCO_test high VCO_calib_R_band VCO_calib_N_band | ||
+ | root@analog:/ | ||
+ | digital_lock | ||
+ | root@analog:/ | ||
+ | root@analog:/ | ||
+ | charge_pump_up | ||
+ | </ | ||
+ | ====== More Information ====== | ||
+ | |||
+ | {{page> | ||