#
# Geode family framebuffer configuration
#
config FB_GEODE
	bool "AMD Geode family framebuffer support (EXPERIMENTAL)"
	depends on FB && PCI && EXPERIMENTAL && X86
	---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 (EXPERIMENTAL)"
	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 (EXPERIMENTAL)"
	depends on FB && FB_GEODE && EXPERIMENTAL
	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 (EXPERIMENTAL)"
	depends on FB && FB_GEODE && EXPERIMENTAL
	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.
