#
# 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 = n)) || (VIDEO_DEV && (DVB_CORE = n)) || (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
