#
# Multimedia device configuration
#

menu "Multimedia devices"
	depends on HAS_IOMEM

comment "Multimedia core support"

#
# V4L core and enabled API's
#

config VIDEO_DEV
	tristate "Video For Linux"
	---help---
	  V4L core support for video capture and overlay devices, webcams and
	  AM/FM radio cards.

	  This kernel includes support for the new Video for Linux Two API,
	  (V4L2).

	  Additional info and docs are available on the web at
	  <http://linuxtv.org>

	  Documentation for V4L2 is also available on the web at
	  <http://bytesex.org/v4l/>.

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

config VIDEO_V4L2_COMMON
	tristate
	depends on (I2C || I2C=n) && VIDEO_DEV
	default (I2C || I2C=n) && VIDEO_DEV

config VIDEO_ALLOW_V4L1
	bool "Enable Video For Linux API 1 (DEPRECATED)"
	depends on VIDEO_DEV && VIDEO_V4L2_COMMON
	default VIDEO_DEV && VIDEO_V4L2_COMMON
	select VIDEO_V4L1_COMPAT
	---help---
	  Enables drivers based on the legacy V4L1 API.

	  This api were developed to be used at Kernel 2.2 and 2.4, but
	  lacks support for several video standards. There are several
	  drivers at kernel that still depends on it.

	  If you are unsure as to whether this is required, answer Y.

config VIDEO_V4L1_COMPAT
	bool "Enable Video For Linux API 1 compatible Layer"
	depends on VIDEO_DEV
	default VIDEO_DEV
	---help---
	  Enables a compatibility API used by most V4L2 devices to allow
	  its usage with legacy applications that supports only V4L1 api.

	  Documentation for the original API is included in the file
	  <Documentation/video4linux/API.html>.

	  User tools for this are available from
	  <ftp://ftp.uk.linux.org/pub/linux/video4linux/>.

	  If you are unsure as to whether this is required, answer Y.

#
# DVB Core
#

config DVB_CORE
	tristate "DVB for Linux"
	depends on NET && INET
	select CRC32
	help
	  DVB core utility functions for device handling, software fallbacks etc.

	  Enable this if you own a DVB/ATSC adapter and want to use it or if
	  you compile Linux for a digital SetTopBox.

	  Say Y when you have a DVB or an ATSC card and want to use it.

	  API specs and user tools are available from <http://www.linuxtv.org/>.

	  Please report problems regarding this support to the LinuxDVB
	  mailing list.

	  If unsure say N.

config VIDEO_MEDIA
	tristate
	default DVB_CORE || VIDEO_DEV
	depends on DVB_CORE || VIDEO_DEV

comment "Multimedia drivers"

source "drivers/media/common/Kconfig"

#
# Tuner drivers for DVB and V4L
#

source "drivers/media/common/tuners/Kconfig"

#
# Video/Radio/Hybrid adapters
#

source "drivers/media/video/Kconfig"

source "drivers/media/radio/Kconfig"

#
# DVB adapters
#

source "drivers/media/dvb/Kconfig"

config DAB
	boolean "DAB adapters"
	---help---
	  Allow selecting support for for Digital Audio Broadcasting (DAB)
	  Receiver adapters.

if DAB
config USB_DABUSB
	tristate "DABUSB driver"
	depends on USB
	---help---
	  A Digital Audio Broadcasting (DAB) Receiver for USB and Linux
	  brought to you by the DAB-Team
	  <http://wwwbode.cs.tum.edu/Par/arch/dab/>.  This driver can be taken
	  as an example for URB-based bulk, control, and isochronous
	  transactions. URB's are explained in
	  <Documentation/usb/URB.txt>.

	  To compile this driver as a module, choose M here: the
	  module will be called dabusb.
endif # DAB

endmenu
