menuconfig OMAP2_DSS
        tristate "OMAP2+ Display Subsystem support"
        depends on ARCH_OMAP2PLUS
        help
	  OMAP2+ Display Subsystem support.

if OMAP2_DSS

config OMAP2_VRAM_SIZE
	int "VRAM size (MB)"
	range 0 32
	default 0
	help
	  The amount of SDRAM to reserve at boot time for video RAM use.
	  This VRAM will be used by omapfb and other drivers that need
	  large continuous RAM area for video use.

	  You can also set this with "vram=<bytes>" kernel argument, or
	  in the board file.

config OMAP2_DSS_DEBUG_SUPPORT
        bool "Debug support"
	default y
	help
	  This enables debug messages. You need to enable printing
	  with 'debug' module parameter.

config OMAP2_DSS_COLLECT_IRQ_STATS
	bool "Collect DSS IRQ statistics"
	depends on OMAP2_DSS_DEBUG_SUPPORT
	default n
	help
	  Collect DSS IRQ statistics, printable via debugfs.

	  The statistics can be found from
	  <debugfs>/omapdss/dispc_irq for DISPC interrupts, and
	  <debugfs>/omapdss/dsi_irq for DSI interrupts.

config OMAP2_DSS_DPI
	bool "DPI support"
	default y
	help
	  DPI Interface. This is the Parallel Display Interface.

config OMAP2_DSS_RFBI
	bool "RFBI support"
        default n
	help
	  MIPI DBI support (RFBI, Remote Framebuffer Interface, in Texas
	  Instrument's terminology).

	  DBI is a bus between the host processor and a peripheral,
	  such as a display or a framebuffer chip.

	  See http://www.mipi.org/ for DBI spesifications.

config OMAP2_DSS_VENC
	bool "VENC support"
        default y
	help
	  OMAP Video Encoder support for S-Video and composite TV-out.

config OMAP4_DSS_HDMI
	bool "HDMI support"
	depends on ARCH_OMAP4
        default y
	help
	  HDMI Interface. This adds the High Definition Multimedia Interface.
	  See http://www.hdmi.org/ for HDMI specification.

config OMAP2_DSS_SDI
	bool "SDI support"
	depends on ARCH_OMAP3
        default n
	help
	  SDI (Serial Display Interface) support.

	  SDI is a high speed one-way display serial bus between the host
	  processor and a display.

config OMAP2_DSS_DSI
	bool "DSI support"
	depends on ARCH_OMAP3 || ARCH_OMAP4
        default n
	help
	  MIPI DSI (Display Serial Interface) support.

	  DSI is a high speed half-duplex serial interface between the host
	  processor and a peripheral, such as a display or a framebuffer chip.

	  See http://www.mipi.org/ for DSI spesifications.

config OMAP2_DSS_FAKE_VSYNC
	bool "Fake VSYNC irq from manual update displays"
	default n
	help
	  If this is selected, DSI will generate a fake DISPC VSYNC interrupt
	  when DSI has sent a frame. This is only needed with DSI or RFBI
	  displays using manual mode, and you want VSYNC to, for example,
	  time animation.

config OMAP2_DSS_MIN_FCK_PER_PCK
	int "Minimum FCK/PCK ratio (for scaling)"
	range 0 32
	default 0
	help
	  This can be used to adjust the minimum FCK/PCK ratio.

	  With this you can make sure that DISPC FCK is at least
	  n x PCK. Video plane scaling requires higher FCK than
	  normally.

	  If this is set to 0, there's no extra constraint on the
	  DISPC FCK. However, the FCK will at minimum be
	  2xPCK (if active matrix) or 3xPCK (if passive matrix).

	  Max FCK is 173MHz, so this doesn't work if your PCK
	  is very high.

config OMAP2_DSS_SLEEP_AFTER_VENC_RESET
	bool "Sleep 20ms after VENC reset"
	default y
	help
	  There is a 20ms sleep after VENC reset which seemed to fix the
	  reset. The reason for the bug is unclear, and it's also unclear
	  on what platforms this happens.

	  This option enables the sleep, and is enabled by default. You can
	  disable the sleep if it doesn't cause problems on your platform.

endif
