# 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_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.
