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_LCD_VGA
        bool "Use LCD in VGA mode"
	        depends on MACH_OMAP_3430SDP || MACH_OMAP_LDP
		help
		  Set LCD resolution as VGA (640 X 480).
		  Default resolution without this option is QVGA(320 X 240).
		  Please take a look at drivers/video/omap/lcd_ldp.c file
		  for lcd driver code.
choice
	depends on FB_OMAP && MACH_OVERO
	prompt "Screen resolution"
	default FB_OMAP_079M3R
	help
	  Selected desired screen resolution

config FB_OMAP_031M3R
	boolean "640 x 480 @ 60 Hz Reduced blanking"

config FB_OMAP_048M3R
	boolean "800 x 600 @ 60 Hz Reduced blanking"

config FB_OMAP_079M3R
	boolean "1024 x 768 @ 60 Hz Reduced blanking"

config FB_OMAP_092M9R
	boolean "1280 x 720 @ 60 Hz Reduced blanking"

endchoice

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 occured 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.


