# 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))
	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_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	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_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	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_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	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.
