# SPDX-License-Identifier: GPL-2.0-only
config VIDEO_IVTV
	tristate "Conexant cx23416/cx23415 MPEG encoder/decoder support"
	depends on VIDEO_V4L2 && PCI && I2C
	select I2C_ALGOBIT
	depends on RC_CORE
	select VIDEO_TUNER
	select VIDEO_TVEEPROM
	select VIDEO_CX2341X
	select VIDEO_CX25840
	select VIDEO_MSP3400
	select VIDEO_SAA711X
	select VIDEO_SAA717X
	select VIDEO_SAA7127
	select VIDEO_CS53L32A
	select VIDEO_M52790
	select VIDEO_WM8775
	select VIDEO_WM8739
	select VIDEO_VP27SMPX
	select VIDEO_UPD64031A
	select VIDEO_UPD64083
	help
	  This is a video4linux driver for Conexant cx23416 or cx23415 based
	  PCI personal video recorder devices.

	  This is used in devices such as the Hauppauge PVR-150/250/350/500
	  cards.

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

config VIDEO_IVTV_DEPRECATED_IOCTLS
	bool "enable the DVB ioctls abuse on ivtv driver"
	depends on VIDEO_IVTV
	help
	  Enable the usage of the a DVB set of ioctls that were abused by
	  IVTV driver for a while.

	  Those ioctls were not needed for a long time, as IVTV implements
	  the proper V4L2 ioctls since kernel 3.3.

	  If unsure, say N.

config VIDEO_IVTV_ALSA
	tristate "Conexant cx23415/cx23416 ALSA interface for PCM audio capture"
	depends on VIDEO_IVTV && SND
	select SND_PCM
	help
	  This driver provides an ALSA interface as another method for user
	  applications to obtain PCM audio data from Conexant cx23415/cx23416
	  based PCI TV cards supported by the ivtv driver.

	  The ALSA interface has much wider use in user applications performing
	  PCM audio capture, than the V4L2 "/dev/video24" PCM audio interface
	  provided by the main ivtv driver.

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

config VIDEO_FB_IVTV
	tristate "Conexant cx23415 framebuffer support"
	depends on VIDEO_IVTV && FB
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	help
	  This is a framebuffer driver for the Conexant cx23415 MPEG
	  encoder/decoder.

	  This is used in the Hauppauge PVR-350 card.

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

config VIDEO_FB_IVTV_FORCE_PAT
	bool "force cx23415 framebuffer init with x86 PAT enabled"
	depends on VIDEO_FB_IVTV && X86_PAT
	help
	  With PAT enabled, the cx23415 framebuffer driver does not
	  utilize write-combined caching on the framebuffer memory.
	  For this reason, the driver will by default disable itself
	  when initializied on a kernel with PAT enabled (i.e. not
	  using the nopat kernel parameter).

	  The driver is not easily upgradable to the PAT-aware
	  ioremap_wc() API since the firmware hides the address
	  ranges that should be marked write-combined from the driver.

	  With this setting enabled, the framebuffer will initialize on
	  PAT-enabled systems but the framebuffer memory will be uncached.

	  If unsure, say N.
