#
# Multimedia Video device configuration
#

menuconfig RADIO_ADAPTERS
	bool "Radio Adapters"
	depends on VIDEO_V4L2
	depends on MEDIA_RADIO_SUPPORT
	default y
	---help---
	  Say Y here to enable selecting AM/FM radio adapters.

if RADIO_ADAPTERS && VIDEO_V4L2

config RADIO_TEA575X
	tristate

source "drivers/media/radio/si470x/Kconfig"

config RADIO_SI4713
	tristate "Silicon Labs Si4713 FM Radio with RDS Transmitter support"
	depends on VIDEO_V4L2

source "drivers/media/radio/si4713/Kconfig"

config RADIO_SI476X
	tristate "Silicon Laboratories Si476x I2C FM Radio"
	depends on I2C && VIDEO_V4L2
	depends on MFD_SI476X_CORE
	depends on SND_SOC
	select SND_SOC_SI476X
	---help---
	  Choose Y here if you have this FM radio chip.

	  In order to control your radio card, you will need to use programs
	  that are compatible with the Video For Linux 2 API.  Information on
	  this API and pointers to "v4l2" programs may be found at
	  <file:Documentation/media/media_uapi.rst>.

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

config USB_MR800
	tristate "AverMedia MR 800 USB FM radio support"
	depends on USB && VIDEO_V4L2
	---help---
	  Say Y here if you want to connect this type of radio to your
	  computer's USB port. Note that the audio is not digital, and
	  you must connect the line out connector to a sound card or a
	  set of speakers.

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

config USB_DSBR
	tristate "D-Link/GemTek USB FM radio support"
	depends on USB && VIDEO_V4L2
	---help---
	  Say Y here if you want to connect this type of radio to your
	  computer's USB port. Note that the audio is not digital, and
	  you must connect the line out connector to a sound card or a
	  set of speakers.

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

config RADIO_MAXIRADIO
	tristate "Guillemot MAXI Radio FM 2000 radio"
	depends on VIDEO_V4L2 && PCI
	select RADIO_TEA575X
	---help---
	  Choose Y here if you have this radio card.  This card may also be
	  found as Gemtek PCI FM.

	  In order to control your radio card, you will need to use programs
	  that are compatible with the Video For Linux API.  Information on
	  this API and pointers to "v4l" programs may be found at
	  <file:Documentation/media/media_uapi.rst>.

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

config RADIO_SHARK
	tristate "Griffin radioSHARK USB radio receiver"
	depends on USB
	select RADIO_TEA575X
	---help---
	  Choose Y here if you have this radio receiver.

	  There are 2 versions of this device, this driver is for version 1,
	  which is white.

	  In order to control your radio card, you will need to use programs
	  that are compatible with the Video For Linux API.  Information on
	  this API and pointers to "v4l" programs may be found at
	  <file:Documentation/media/media_uapi.rst>.

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

config RADIO_SHARK2
	tristate "Griffin radioSHARK2 USB radio receiver"
	depends on USB
	---help---
	  Choose Y here if you have this radio receiver.

	  There are 2 versions of this device, this driver is for version 2,
	  which is black.

	  In order to control your radio card, you will need to use programs
	  that are compatible with the Video For Linux API.  Information on
	  this API and pointers to "v4l" programs may be found at
	  <file:Documentation/media/media_uapi.rst>.

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

config USB_KEENE
	tristate "Keene FM Transmitter USB support"
	depends on USB && VIDEO_V4L2
	---help---
	  Say Y here if you want to connect this type of FM transmitter
	  to your computer's USB port.

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

config USB_RAREMONO
	tristate "Thanko's Raremono AM/FM/SW radio support"
	depends on USB && VIDEO_V4L2
	---help---
	  The 'Thanko's Raremono' device contains the Si4734 chip from Silicon Labs Inc.
	  It is one of the very few or perhaps the only consumer USB radio device
	  to receive the AM/FM/SW bands.

	  Say Y here if you want to connect this type of AM/FM/SW receiver
	  to your computer's USB port.

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

config USB_MA901
	tristate "Masterkit MA901 USB FM radio support"
	depends on USB && VIDEO_V4L2
	---help---
	  Say Y here if you want to connect this type of radio to your
	  computer's USB port. Note that the audio is not digital, and
	  you must connect the line out connector to a sound card or a
	  set of speakers or headphones.

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

config RADIO_TEA5764
	tristate "TEA5764 I2C FM radio support"
	depends on I2C && VIDEO_V4L2
	---help---
	  Say Y here if you want to use the TEA5764 FM chip found in
	  EZX phones. This FM chip is present in EZX phones from Motorola,
	  connected to internal pxa I2C bus.

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

config RADIO_TEA5764_XTAL
	bool "TEA5764 crystal reference"
	depends on RADIO_TEA5764=y
	default y
	help
	  Say Y here if TEA5764 have a 32768 Hz crystal in circuit, say N
	  here if TEA5764 reference frequency is connected in FREQIN.

config RADIO_SAA7706H
	tristate "SAA7706H Car Radio DSP"
	depends on I2C && VIDEO_V4L2
	---help---
	  Say Y here if you want to use the SAA7706H Car radio Digital
	  Signal Processor, found for instance on the Russellville development
	  board. On the russellville the device is connected to internal
	  timberdale I2C bus.

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

config RADIO_TEF6862
	tristate "TEF6862 Car Radio Enhanced Selectivity Tuner"
	depends on I2C && VIDEO_V4L2
	---help---
	  Say Y here if you want to use the TEF6862 Car Radio Enhanced
	  Selectivity Tuner, found for instance on the Russellville development
	  board. On the russellville the device is connected to internal
	  timberdale I2C bus.

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

config RADIO_TIMBERDALE
	tristate "Enable the Timberdale radio driver"
	depends on MFD_TIMBERDALE && VIDEO_V4L2
	depends on I2C	# for RADIO_SAA7706H
	select RADIO_TEF6862
	select RADIO_SAA7706H
	---help---
	  This is a kind of umbrella driver for the Radio Tuner and DSP
	  found behind the Timberdale FPGA on the Russellville board.
	  Enabling this driver will automatically select the DSP and tuner.

config RADIO_WL1273
	tristate "Texas Instruments WL1273 I2C FM Radio"
	depends on I2C && VIDEO_V4L2
	select MFD_CORE
	select MFD_WL1273_CORE
	select FW_LOADER
	---help---
	  Choose Y here if you have this FM radio chip.

	  In order to control your radio card, you will need to use programs
	  that are compatible with the Video For Linux 2 API.  Information on
	  this API and pointers to "v4l2" programs may be found at
	  <file:Documentation/media/media_uapi.rst>.

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

# TI's ST based wl128x FM radio
source "drivers/media/radio/wl128x/Kconfig"

#
# ISA drivers configuration
#

menuconfig V4L_RADIO_ISA_DRIVERS
	bool "ISA radio devices"
	depends on ISA || COMPILE_TEST
	default n
	---help---
	  Say Y here to enable support for these ISA drivers.

if V4L_RADIO_ISA_DRIVERS

config RADIO_ISA
	depends on ISA || COMPILE_TEST
	tristate

config RADIO_CADET
	tristate "ADS Cadet AM/FM Tuner"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	---help---
	  Choose Y here if you have one of these AM/FM radio cards, and then
	  fill in the port address below.

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

config RADIO_RTRACK
	tristate "AIMSlab RadioTrack (aka RadioReveal) support"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	---help---
	  Choose Y here if you have one of these FM radio cards, and then fill
	  in the port address below.

	  Note that newer AIMSlab RadioTrack cards have a different chipset
	  and are not supported by this driver.  For these cards, use the
	  RadioTrack II driver below.

	  If you have a GemTeks combined (PnP) sound- and radio card you must
	  use this driver as a module and setup the card with isapnptools.
	  You must also pass the module a suitable io parameter, 0x248 has
	  been reported to be used by these cards.

	  More information is contained in the file
	  <file:Documentation/media/v4l-drivers/radiotrack.rst>.

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

config RADIO_RTRACK_PORT
	hex "RadioTrack i/o port (0x20f or 0x30f)"
	depends on RADIO_RTRACK=y
	default "30f"
	help
	  Enter either 0x30f or 0x20f here.  The card default is 0x30f, if you
	  haven't changed the jumper setting on the card.

config RADIO_RTRACK2
	tristate "AIMSlab RadioTrack II support"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	---help---
	  Choose Y here if you have this FM radio card, and then fill in the
	  port address below.

	  Note: this driver hasn't been tested since a long time due to lack
	  of hardware. If you have this hardware, then please contact the
	  linux-media mailinglist.

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

config RADIO_RTRACK2_PORT
	hex "RadioTrack II i/o port (0x20c or 0x30c)"
	depends on RADIO_RTRACK2=y
	default "30c"
	help
	  Enter either 0x30c or 0x20c here.  The card default is 0x30c, if you
	  haven't changed the jumper setting on the card.

config RADIO_AZTECH
	tristate "Aztech/Packard Bell Radio"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	---help---
	  Choose Y here if you have one of these FM radio cards, and then fill
	  in the port address below.

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

config RADIO_AZTECH_PORT
	hex "Aztech/Packard Bell I/O port (0x350 or 0x358)"
	depends on RADIO_AZTECH=y
	default "350"
	help
	  Enter either 0x350 or 0x358 here.  The card default is 0x350, if you
	  haven't changed the setting of jumper JP3 on the card.  Removing the
	  jumper sets the card to 0x358.

config RADIO_GEMTEK
	tristate "GemTek Radio card (or compatible) support"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	---help---
	  Choose Y here if you have this FM radio card, and then fill in the
	  I/O port address and settings below. The following cards either have
	  GemTek Radio tuner or are rebranded GemTek Radio cards:

	  - Sound Vision 16 Gold with FM Radio
	  - Typhoon Radio card (some models)
	  - Hama Radio card

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

config RADIO_GEMTEK_PORT
	hex "Fixed I/O port (0x20c, 0x30c, 0x24c, 0x34c, 0x248 or 0x28c)"
	depends on RADIO_GEMTEK=y
	default "34c"
	help
	  Enter either 0x20c, 0x30c, 0x24c, 0x34c, 0x248 or 0x28c here. The
	  card default is 0x34c, if you haven't changed the jumper setting
	  on the card.

	  On Sound Vision 16 Gold PnP with FM Radio (ESS1869+FM Gemtek), the I/O
	  port is 0x20c, 0x248 or 0x28c.

	  If automatic I/O port probing is enabled this port will be used only
	  in case of automatic probing failure, ie. as a fallback.

config RADIO_GEMTEK_PROBE
	bool "Automatic I/O port probing"
	depends on RADIO_GEMTEK=y
	default y
	help
	  Say Y here to enable automatic probing for GemTek Radio card. The
	  following ports will be probed: 0x20c, 0x30c, 0x24c, 0x34c, 0x248 and
	  0x28c.

config RADIO_MIROPCM20
	tristate "miroSOUND PCM20 radio"
	depends on ISA || COMPILE_TEST
	depends on ISA_DMA_API && VIDEO_V4L2 && SND
	select SND_ISA
	select SND_MIRO
	---help---
	  Choose Y here if you have this FM radio card. You also need to enable
	  the ALSA sound system. This choice automatically selects the ALSA
	  sound card driver "Miro miroSOUND PCM1pro/PCM12/PCM20radio" as this
	  is required for the radio-miropcm20.

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

config RADIO_SF16FMI
	tristate "SF16-FMI/SF16-FMP/SF16-FMD Radio"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	---help---
	  Choose Y here if you have one of these FM radio cards.

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

config RADIO_SF16FMR2
	tristate "SF16-FMR2/SF16-FMD2 Radio"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_TEA575X
	---help---
	  Choose Y here if you have one of these FM radio cards.

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

config RADIO_TERRATEC
	tristate "TerraTec ActiveRadio ISA Standalone"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	---help---
	  Choose Y here if you have this FM radio card.

	  Note: this driver hasn't been tested since a long time due to lack
	  of hardware. If you have this hardware, then please contact the
	  linux-media mailinglist.

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

config RADIO_TRUST
	tristate "Trust FM radio card"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	help
	  This is a driver for the Trust FM radio cards. Say Y if you have
	  such a card and want to use it under Linux.

	  Note: this driver hasn't been tested since a long time due to lack
	  of hardware. If you have this hardware, then please contact the
	  linux-media mailinglist.

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

config RADIO_TRUST_PORT
	hex "Trust i/o port (usually 0x350 or 0x358)"
	depends on RADIO_TRUST=y
	default "350"
	help
	  Enter the I/O port of your Trust FM radio card. If unsure, try the
	  values "0x350" or "0x358".

config RADIO_TYPHOON
	tristate "Typhoon Radio (a.k.a. EcoRadio)"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	---help---
	  Choose Y here if you have one of these FM radio cards, and then fill
	  in the port address and the frequency used for muting below.

	  Note: this driver hasn't been tested since a long time due to lack
	  of hardware. If you have this hardware, then please contact the
	  linux-media mailinglist.

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

config RADIO_TYPHOON_PORT
	hex "Typhoon I/O port (0x316 or 0x336)"
	depends on RADIO_TYPHOON=y
	default "316"
	help
	  Enter the I/O port of your Typhoon or EcoRadio radio card.

config RADIO_TYPHOON_MUTEFREQ
	int "Typhoon frequency set when muting the device (kHz)"
	depends on RADIO_TYPHOON=y
	default "87500"
	help
	  Enter the frequency used for muting the radio. The device is never
	  completely silent. If the volume is just turned down, you can still
	  hear silent voices and music. For that reason, the frequency of the
	  radio device is set to the frequency you can enter here whenever
	  the device is muted. There should be no local radio station at that
	  frequency.

config RADIO_ZOLTRIX
	tristate "Zoltrix Radio"
	depends on ISA || COMPILE_TEST
	depends on VIDEO_V4L2
	select RADIO_ISA
	---help---
	  Choose Y here if you have one of these FM radio cards, and then fill
	  in the port address below.

	  Note: this driver hasn't been tested since a long time due to lack
	  of hardware. If you have this hardware, then please contact the
	  linux-media mailinglist.

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

config RADIO_ZOLTRIX_PORT
	hex "ZOLTRIX I/O port (0x20c or 0x30c)"
	depends on RADIO_ZOLTRIX=y
	default "20c"
	help
	  Enter the I/O port of your Zoltrix radio card.

endif # V4L_RADIO_ISA_DRIVERS

endif # RADIO_ADAPTERS
