# SPDX-License-Identifier: GPL-2.0
menuconfig AGP
	tristate "/dev/agpgart (AGP Support)"
	depends on ALPHA || IA64 || PARISC || PPC || X86
	depends on PCI
	help
	  AGP (Accelerated Graphics Port) is a bus system mainly used to
	  connect graphics cards to the rest of the system.

	  If you have an AGP system and you say Y here, it will be possible to
	  use the AGP features of your 3D rendering video card. This code acts
	  as a sort of "AGP driver" for the motherboard's chipset.

	  If you need more texture memory than you can get with the AGP GART
	  (theoretically up to 256 MB, but in practice usually 64 or 128 MB
	  due to kernel allocation issues), you could use PCI accesses
	  and have up to a couple gigs of texture space.

	  Note that this is the only means to have X/GLX use
	  write-combining with MTRR support on the AGP bus. Without it, OpenGL
	  direct rendering will be a lot slower but still faster than PIO.

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

	  You should say Y here if you want to use GLX or DRI.

	  If unsure, say N.

config AGP_ALI
	tristate "ALI chipset support"
	depends on AGP && X86_32
	help
	  This option gives you AGP support for the GLX component of
	  X on the following ALi chipsets.  The supported chipsets
	  include M1541, M1621, M1631, M1632, M1641,M1647,and M1651.
	  For the ALi-chipset question, ALi suggests you refer to
	  <http://www.ali.com.tw/>.

	  The M1541 chipset can do AGP 1x and 2x, but note that there is an
	  acknowledged incompatibility with Matrox G200 cards. Due to
	  timing issues, this chipset cannot do AGP 2x with the G200.
	  This is a hardware limitation. AGP 1x seems to be fine, though.

config AGP_ATI
	tristate "ATI chipset support"
	depends on AGP && X86_32
	help
	  This option gives you AGP support for the GLX component of
	  X on the ATI RadeonIGP family of chipsets.

config AGP_AMD
	tristate "AMD Irongate, 761, and 762 chipset support"
	depends on AGP && X86_32
	help
	  This option gives you AGP support for the GLX component of
	  X on AMD Irongate, 761, and 762 chipsets.

config AGP_AMD64
	tristate "AMD Opteron/Athlon64 on-CPU GART support"
	depends on AGP && X86 && AMD_NB
	help
	  This option gives you AGP support for the GLX component of
	  X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs.
	  You still need an external AGP bridge like the AMD 8151, VIA
	  K8T400M, SiS755. It may also support other AGP bridges when loaded
	  with agp_try_unsupported=1.

config AGP_INTEL
	tristate "Intel 440LX/BX/GX, I8xx and E7x05 chipset support"
	depends on AGP && X86
	select INTEL_GTT
	help
	  This option gives you AGP support for the GLX component of X
	  on Intel 440LX/BX/GX, 815, 820, 830, 840, 845, 850, 860, 875,
	  E7205 and E7505 chipsets and full support for the 810, 815, 830M,
	  845G, 852GM, 855GM, 865G and I915 integrated graphics chipsets.



config AGP_NVIDIA
	tristate "NVIDIA nForce/nForce2 chipset support"
	depends on AGP && X86_32
	help
	  This option gives you AGP support for the GLX component of
	  X on NVIDIA chipsets including nForce and nForce2

config AGP_SIS
	tristate "SiS chipset support"
	depends on AGP && X86
	help
	  This option gives you AGP support for the GLX component of
	  X on Silicon Integrated Systems [SiS] chipsets.

	  Note that 5591/5592 AGP chipsets are NOT supported.


config AGP_SWORKS
	tristate "Serverworks LE/HE chipset support"
	depends on AGP && X86_32
	help
	  Say Y here to support the Serverworks AGP card.  See
	  <http://www.serverworks.com/> for product descriptions and images.

config AGP_VIA
	tristate "VIA chipset support"
	depends on AGP && X86
	help
	  This option gives you AGP support for the GLX component of
	  X on VIA MVP3/Apollo Pro chipsets.

config AGP_I460
	tristate "Intel 460GX chipset support"
	depends on AGP && IA64
	help
	  This option gives you AGP GART support for the Intel 460GX chipset
	  for IA64 processors.

config AGP_HP_ZX1
	tristate "HP ZX1 chipset AGP support"
	depends on AGP && IA64
	help
	  This option gives you AGP GART support for the HP ZX1 chipset
	  for IA64 processors.

config AGP_PARISC
	tristate "HP Quicksilver AGP support"
	depends on AGP && PARISC && 64BIT && IOMMU_SBA
	help
	  This option gives you AGP GART support for the HP Quicksilver
	  AGP bus adapter on HP PA-RISC machines (Ok, just on the C8000
	  workstation...)

config AGP_ALPHA_CORE
	tristate "Alpha AGP support"
	depends on AGP && (ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL)
	default AGP

config AGP_UNINORTH
	tristate "Apple UniNorth & U3 AGP support"
	depends on AGP && PPC_PMAC
	help
	  This option gives you AGP support for Apple machines with a
	  UniNorth or U3 (Apple G5) bridge.

config AGP_EFFICEON
	tristate "Transmeta Efficeon support"
	depends on AGP && X86_32
	help
	  This option gives you AGP support for the Transmeta Efficeon
	  series processors with integrated northbridges.

config INTEL_GTT
	tristate
	depends on X86 && PCI

