# SPDX-License-Identifier: GPL-2.0-only
#
# DVB device configuration
#

config DVB_MMAP
	bool "Enable DVB memory-mapped API (EXPERIMENTAL)"
	depends on DVB_CORE
	depends on VIDEO_DEV=y || VIDEO_DEV=DVB_CORE
	select VIDEOBUF2_VMALLOC
	help
	  This option enables DVB experimental memory-mapped API, which
	  reduces the number of context switches to read DVB buffers, as
	  the buffers can use mmap() syscalls.

	  Support for it is experimental. Use with care. If unsure,
	  say N.

config DVB_NET
	bool "DVB Network Support"
	default (NET && INET)
	depends on NET && INET && DVB_CORE
	help
	  This option enables DVB Network Support which is a part of the DVB
	  standard. It is used, for example, by automatic firmware updates used
	  on Set-Top-Boxes. It can also be used to access the Internet via the
	  DVB card, if the network provider supports it.

	  You may want to disable the network support on embedded devices. If
	  unsure say Y.

config DVB_MAX_ADAPTERS
	int "maximum number of DVB/ATSC adapters"
	depends on DVB_CORE
	default 16
	range 1 255
	help
	  Maximum number of DVB/ATSC adapters. Increasing this number
	  increases the memory consumption of the DVB subsystem even
	  if a much lower number of DVB/ATSC adapters is present.
	  Only values in the range 4-32 are tested.

	  If you are unsure about this, use the default value 16

config DVB_DYNAMIC_MINORS
	bool "Dynamic DVB minor allocation"
	depends on DVB_CORE
	default y
	help
	  If you say Y here, the DVB subsystem will use dynamic minor
	  allocation for any device that uses the DVB major number.
	  This means that you can have more than 4 of a single type
	  of device (like demuxes and frontends) per adapter, but udev
	  will be required to manage the device nodes.

	  If you are unsure about this, say N here.

config DVB_DEMUX_SECTION_LOSS_LOG
	bool "Enable DVB demux section packet loss log"
	depends on DVB_CORE
	help
	  Enable extra log messages meant to detect packet loss
	  inside the Kernel.

	  Should not be enabled on normal cases, as logs can
	  be very verbose.

	  If you are unsure about this, say N here.

config DVB_ULE_DEBUG
	bool "Enable DVB net ULE packet debug messages"
	depends on DVB_CORE
	help
	  Enable extra log messages meant to detect problems while
	  handling DVB network ULE packet loss inside the Kernel.

	  Should not be enabled on normal cases, as logs can
	  be very verbose.

	  If you are unsure about this, say N here.
