config AGP
	tristate "/dev/agpgart (AGP Support)" if !GART_IOMMU
	depends on ALPHA || IA64 || PPC || X86
	default y if GART_IOMMU
	---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 XFree4/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.

	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI.  If unsure, say N.

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

config AGP_ALI
	tristate "ALI chipset support"
	depends on AGP && X86 && !X86_64
	---help---
	  This option gives you AGP support for the GLX component of
	  XFree86 4.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/eng/support/index.shtml>.

	  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.

	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI.  If unsure, say N.

config AGP_ATI
	tristate "ATI chipset support"
	depends on AGP && X86 && !X86_64
	---help---
      This option gives you AGP support for the GLX component of
      XFree86 4.x on the ATI RadeonIGP family of chipsets.

      You should say Y here if you use XFree86 3.3.6 or 4.x and want to
      use GLX or DRI.  If unsure, say N.

config AGP_AMD
	tristate "AMD Irongate, 761, and 762 chipset support"
	depends on AGP && X86 && !X86_64
	help
	  This option gives you AGP support for the GLX component of
	  XFree86 4.x on AMD Irongate, 761, and 762 chipsets.

	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI.  If unsure, say N.

config AGP_AMD64
	tristate "AMD Opteron/Athlon64 on-CPU GART support" if !GART_IOMMU
	depends on AGP && X86
	default y if GART_IOMMU
	help
	  This option gives you AGP support for the GLX component of
	  XFree86 4.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.
	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI.  If unsure, say Y

config AGP_INTEL
	tristate "Intel 440LX/BX/GX, I8xx and E7x05 chipset support"
	depends on AGP && X86
	help
	  This option gives you AGP support for the GLX component of XFree86 4.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.

	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI, or if you have any Intel integrated graphics
	  chipsets.  If unsure, say Y.

config AGP_NVIDIA
	tristate "NVIDIA nForce/nForce2 chipset support"
	depends on AGP && X86 && !X86_64
	help
	  This option gives you AGP support for the GLX component of
	  XFree86 4.x on the following NVIDIA chipsets.  The supported chipsets
	  include nForce and nForce2

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

	  Note that 5591/5592 AGP chipsets are NOT supported.

	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI.  If unsure, say N.

config AGP_SWORKS
	tristate "Serverworks LE/HE chipset support"
	depends on AGP && X86 && !X86_64
	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 && !X86_64
	help
	  This option gives you AGP support for the GLX component of
	  XFree86 4.x on VIA MVP3/Apollo Pro chipsets.

	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI.  If unsure, say N.

config AGP_I460
	tristate "Intel 460GX chipset support"
	depends on AGP && (IA64_DIG || IA64_GENERIC)
	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_HP_ZX1 || IA64_HP_ZX1_SWIOTLB || IA64_GENERIC)
	help
	  This option gives you AGP GART support for the HP ZX1 chipset
	  for IA64 processors.

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 && !X86_64
	help
	  This option gives you AGP support for the Transmeta Efficeon
	  series processors with integrated northbridges.

	  You should say Y here if you use XFree86 3.3.6 or 4.x and want to
	  use GLX or DRI.  If unsure, say Y.

config AGP_SGI_TIOCA
        tristate "SGI TIO chipset AGP support"
        depends on AGP && (IA64_SGI_SN2 || IA64_GENERIC)
        help
          This option gives you AGP GART support for the SGI TIO chipset
          for IA64 processors.

