#
# 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_GX_SET_FBSIZE
	bool "Manually specify the Geode GX framebuffer size"
	depends on FB_GEODE_GX
	default n
	---help---
	  If you want to manually specify the size of your GX framebuffer,
	  say Y here, otherwise say N to dynamically probe it.

	  Say N unless you know what you are doing.

config FB_GEODE_GX_FBSIZE
	hex "Size of the GX framebuffer, in bytes"
	depends on FB_GEODE_GX_SET_FBSIZE
	default "0x1600000"
	---help---
	  Specify the size of the GX framebuffer.  Normally, you will
	  want this to be MB aligned.  Common values are 0x80000 (8MB)
	  and 0x1600000 (16MB).  Don't change this unless you know what
	  you are doing

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.
