# SPDX-License-Identifier: GPL-2.0-only
#
# Geode family framebuffer configuration
#
config FB_GEODE
	bool "AMD Geode family framebuffer support"
	depends on FB && PCI && (X86_32 || (X86 && COMPILE_TEST))
	depends on !UML
	help
	  Say 'Y' here to allow you to select framebuffer drivers for
	  the AMD Geode family of processors.

config FB_GEODE_LX
	tristate "AMD Geode LX framebuffer support"
	depends on FB && FB_GEODE
	select FB_IOMEM_HELPERS
	help
	  Framebuffer driver for the display controller integrated into the
	  AMD Geode LX processors.

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

	  If unsure, say N.

config FB_GEODE_GX
	tristate "AMD Geode GX framebuffer support"
	depends on FB && FB_GEODE
	select FB_IOMEM_HELPERS
	help
	  Framebuffer driver for the display controller integrated into the
	  AMD Geode GX processors.

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

	  If unsure, say N.

config FB_GEODE_GX1
	tristate "AMD Geode GX1 framebuffer support"
	depends on FB && FB_GEODE
	select FB_IOMEM_HELPERS
	help
	  Framebuffer driver for the display controller integrated into the
	  AMD Geode GX1 processor.

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

	  If unsure, say N.
