config FB_OMAP
	tristate "OMAP frame buffer support (EXPERIMENTAL)"
	depends on FB && (OMAP2_DSS = "n")
	depends on ARCH_OMAP1 || ARCH_OMAP2 || ARCH_OMAP3
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	select TWL4030_CORE if MACH_OMAP_2430SDP
	help
          Frame buffer driver for OMAP based boards.

config FB_OMAP_LCDC_EXTERNAL
	bool "External LCD controller support"
	depends on FB_OMAP
	help
	  Say Y here, if you want to have support for boards with an
	  external LCD controller connected to the SoSSI/RFBI interface.

config FB_OMAP_LCDC_HWA742
	bool "Epson HWA742 LCD controller support"
	depends on FB_OMAP && FB_OMAP_LCDC_EXTERNAL
	help
	  Say Y here if you want to have support for the external
	  Epson HWA742 LCD controller.

config FB_OMAP_LCDC_BLIZZARD
	bool "Epson Blizzard LCD controller support"
	depends on FB_OMAP && FB_OMAP_LCDC_EXTERNAL
	help
	  Say Y here if you want to have support for the external
	  Epson Blizzard LCD controller.

config FB_OMAP_MANUAL_UPDATE
	bool "Default to manual update mode"
	depends on FB_OMAP && FB_OMAP_LCDC_EXTERNAL
	help
	  Say Y here, if your user-space applications are capable of
	  notifying the frame buffer driver when a change has occurred in
	  the frame buffer content and thus a reload of the image data to
	  the external frame buffer is required. If unsure, say N.

config FB_OMAP_LCD_MIPID
	bool "MIPI DBI-C/DCS compatible LCD support"
	depends on FB_OMAP && SPI_MASTER
	help
	  Say Y here if you want to have support for LCDs compatible with
	  the Mobile Industry Processor Interface DBI-C/DCS
	  specification. (Supported LCDs: Philips LPH8923, Sharp LS041Y3)

config FB_OMAP_BOOTLOADER_INIT
	bool "Check bootloader initialization"
	depends on FB_OMAP || FB_OMAP2
	help
	  Say Y here if you want to enable checking if the bootloader has
	  already initialized the display controller. In this case the
	  driver will skip the initialization.

config FB_OMAP_CONSISTENT_DMA_SIZE
	int "Consistent DMA memory size (MB)"
	depends on FB_OMAP
	range 1 14
	default 2
	help
	  Increase the DMA consistent memory size according to your video
	  memory needs, for example if you want to use multiple planes.
	  The size must be 2MB aligned.
	  If unsure say 1.

config FB_OMAP_DMA_TUNE
        bool "Set DMA SDRAM access priority high"
        depends on FB_OMAP && ARCH_OMAP1
        help
          On systems in which video memory is in system memory
          (SDRAM) this will speed up graphics DMA operations.
          If you have such a system and want to use rotation
          answer yes. Answer no if you have a dedicated video
          memory, or don't use any of the accelerated features.


