# SPDX-License-Identifier: GPL-2.0-only
#
# Frequency
#	Direct Digital Synthesis drivers (DDS)
#	Clock Distribution device drivers
#	Phase-Locked Loop (PLL) frequency synthesizers
#
# When adding new entries keep the list in alphabetical order

menu "Frequency Synthesizers DDS/PLL"

menu "Clock Generator/Distribution"

config AD9523
	tristate "Analog Devices AD9523 Low Jitter Clock Generator"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices AD9523 Low Jitter
	  Clock Generator. The driver provides direct access via sysfs.

	  To compile this driver as a module, choose M here: the
	  module will be called ad9523.

endmenu

#
# Phase-Locked Loop (PLL) frequency synthesizers
#

menu "Phase-Locked Loop (PLL) frequency synthesizers"

config ADF4350
	tristate "Analog Devices ADF4350/ADF4351 Wideband Synthesizers"
	depends on SPI
	help
	  Say yes here to build support for Analog Devices  ADF4350/ADF4351
	  Wideband Synthesizers. The driver provides direct access via sysfs.

	  To compile this driver as a module, choose M here: the
	  module will be called adf4350.

config ADF4371
	tristate "Analog Devices ADF4371/ADF4372 Wideband Synthesizers"
	depends on SPI
	select REGMAP_SPI
	help
	  Say yes here to build support for Analog Devices ADF4371 and ADF4372
	  Wideband Synthesizers. The driver provides direct access via sysfs.

	  To compile this driver as a module, choose M here: the
	  module will be called adf4371.

config ADF4377
	tristate "Analog Devices ADF4377 Microwave Wideband Synthesizer"
	depends on SPI && COMMON_CLK
	help
	  Say yes here to build support for Analog Devices ADF4377 Microwave
	  Wideband Synthesizer.

	  To compile this driver as a module, choose M here: the
	  module will be called adf4377.

config ADMV1013
	tristate "Analog Devices ADMV1013 Microwave Upconverter"
	depends on SPI && COMMON_CLK
	help
	  Say yes here to build support for Analog Devices ADMV1013
	  24 GHz to 44 GHz, Wideband, Microwave Upconverter.

	  To compile this driver as a module, choose M here: the
	  module will be called admv1013.

config ADMV1014
	tristate "Analog Devices ADMV1014 Microwave Downconverter"
	depends on SPI && COMMON_CLK && 64BIT
	help
	  Say yes here to build support for Analog Devices ADMV1014
	  24 GHz to 44 GHz, Wideband, Microwave Downconverter.

	  To compile this driver as a module, choose M here: the
	  module will be called admv1014.

config ADMV4420
       tristate "Analog Devices ADMV4420 K Band Downconverter"
       depends on SPI
       help
         Say yes here to build support for Analog Devices K Band
         Downconverter with integrated Fractional-N PLL and VCO.

         To compile this driver as a module, choose M here: the
         module will be called admv4420.

config ADRF6780
        tristate "Analog Devices ADRF6780 Microwave Upconverter"
        depends on SPI
        depends on COMMON_CLK
        help
          Say yes here to build support for Analog Devices ADRF6780
          5.9 GHz to 23.6 GHz, Wideband, Microwave Upconverter.

          To compile this driver as a module, choose M here: the
          module will be called adrf6780.

endmenu
endmenu
