This driver supports the
The ADMV8818-EP is a fully monolithic microwave integrated circuit (MMIC) that features a digitally selectable frequency of operation. The device features four independently controlled high-pass filters (HPFs) and four independently controlled low-pass filters (LPFs) that span the 2 GHz to 18 GHz frequency range.
The flexible architecture of the ADMV8818-EP allows the 3 dB cutoff frequency (f3dB) of the high-pass and low-pass filters to be controlled independently to generate up to 4 GHz of bandwidth. The digital logic control on each filter is 4 bits wide (16 states) and controls the on-chip reactive elements to adjust the f3dB. The typical insertion loss is 9 dB, and the wideband rejection is 35 dB, which is ideally suited for minimizing system harmonics.
This tunable filter can be used as a smaller alternative to large switched filter banks and cavity tuned filters, and this device provides a dynamically adjustable solution in advanced communications applications.
Source | Mainlined? |
---|---|
drivers/iio/filter/admv8818.c | YES |
Function | File |
---|---|
driver | drivers/iio/filter/admv8818.c |
Documentation | adi,admv8818.yaml |
ABI documentation | sysfs-bus-iio-filter-admv8818 |
Example device tree
Function | File |
---|---|
dts | rpi-admv8818-overlay.dts |
The ADF4371 driver is a SPI bus driver and can be instantiated via device tree.
Required properties:
Optional properties:
Example: spi { #address-cells = <1>; #size-cells = <0>; admv8818@0 { compatible = "adi,admv8818"; reg = <0>; spi-max-frequency = <10000000>; clocks = <&admv8818_rfin>; clock-scales = <1 5>; clock-names = "rf_in"; adi,bw-hz = /bits/ 64 <600000000>; }; };
Configure kernel with “make menuconfig” (alternatively use “make xconfig” or “make qconfig”)
The ADMV8818 driver depends on SPI and selects REGMAP_SPI
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 Filters ---> <*> Analog Devices ADMV8818 High-Pass and Low-Pass Filter
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.
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 Mar 24 08:38 dev -r--r--r-- 1 root root 4096 Mar 24 08:38 name lrwxrwxrwx 1 root root 0 Mar 24 08:38 of_node -> ../../../../../../../../firmware/devicetree/base/soc/spi@7e204000/admv8818@0 -rw-r--r-- 1 root root 4096 Mar 24 08:38 out_altvoltage0_filter_band_pass_bandwidth_3db_frequency -rw-r--r-- 1 root root 4096 Mar 24 08:38 out_altvoltage0_filter_band_pass_center_frequency -rw-r--r-- 1 root root 4096 Mar 24 08:38 out_altvoltage0_filter_high_pass_3db_frequency -rw-r--r-- 1 root root 4096 Mar 24 08:38 out_altvoltage0_filter_low_pass_3db_frequency -rw-r--r-- 1 root root 4096 Mar 24 08:38 out_altvoltage0_mode -r--r--r-- 1 root root 4096 Mar 24 08:38 out_altvoltage0_mode_available -rw-r--r-- 1 root root 4096 Mar 24 08:38 out_altvoltage0_scale drwxr-xr-x 2 root root 0 Mar 24 08:38 power lrwxrwxrwx 1 root root 0 Mar 24 08:38 subsystem -> ../../../../../../../../bus/iio -rw-r--r-- 1 root root 4096 Mar 24 08:38 uevent root@analog:/sys/bus/iio/devices/iio:device0#
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# cat name admv8818
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_band_pass_bandwidth_3db_frequency 750
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# echo 500 > out_altvoltage0_filter_band_pass_bandwidth_3db_frequency root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_band_pass_bandwidth_3db_frequency 734
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_band_pass_center_frequency 5055
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# echo 4000 > out_altvoltage0_filter_band_pass_bandwidth_3db_frequency root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_band_pass_center_frequency 4023
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_low_pass_3db_frequency 5430
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# echo 8000 > out_altvoltage0_filter_low_pass_3db_frequency root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_low_pass_3db_frequency 8200
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_high_pass_3db_frequency 4680
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# echo 6000 > out_altvoltage0_filter_high_pass_3db_frequency root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_filter_high_pass_3db_frequency 5960
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_scale 1000000
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# echo 10000000 > out_altvoltage0_scale root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_scale 10000000
The mode allows the user to access enable/disable/register/unregister the clock rate notifier. Valid values that can be written:
This specifies any shell prompt running on the target
root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_mode_available auto manual bypass root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_mode auto root@analog:/sys/bus/iio/devices/iio:device0# echo bypass > out_altvoltage0_mode root@analog:/sys/bus/iio/devices/iio:device0# cat out_altvoltage0_mode bypass