if ARCH_TEGRA

comment "NVIDIA Tegra Display Driver options"

config TEGRA_GRHOST
	tristate "Tegra graphics host driver"
	help
	  Driver for the Tegra graphics host hardware.

config TEGRA_GRHOST_VI
	tristate "Tegra video input host1x client driver"
	default y if TEGRA_GRHOST
	help
	  Driver for the Tegra video input hardware.
	  To compile this driver as a module, choose M here:
	  the  module will be called nvhost-vi.

config TEGRA_GRHOST_DEFAULT_TIMEOUT
	depends on TEGRA_GRHOST
	int "Default timeout for submits"
	default 10000
	help
	  Default timeout for jobs in milliseconds. Set to zero for no timeout.

config TEGRA_GRHOST_SYNC
	depends on TEGRA_GRHOST
	bool "Tegra host synchronization objects"
	default y
	select SYNC
	help
	  Add tegra host backend for the cross driver synchronization framework.
	  Allows creating sync fence file descriptors from Tegra host syncpoints.

config TEGRA_DC
	tristate "Tegra Display Contoller"
	depends on ARCH_TEGRA && TEGRA_GRHOST && I2C
	select BACKLIGHT_CLASS_DEVICE
	select FB_MODE_HELPERS
	help
	  Tegra display controller support.

config TEGRA_DC_CMU
	bool "Tegra Color Management Unit"
	default y
	help
	  Say Y here to enable Tegra color management unit.
	  Enabled by default to support color correction for panels.
	  It is used to make the representation of color match
	  accross displays.

config TEGRA_DC_WIN_H
    bool

config TEGRA_MIPI_CAL
	bool
	default y

config TEGRA_DC_SCAN_COLUMN
	bool
	default y if ARCH_TEGRA_12x_SOC

config TEGRA_DC_BLENDER_GEN2
    bool
    default y

config TEGRA_DC_BLENDER_DEPTH
    bool
    default y if ARCH_TEGRA_12x_SOC

config TEGRA_DC_BLOCK_LINEAR
    bool
    default y if ARCH_TEGRA_12x_SOC

config TEGRA_DC_INTERLACE
	bool
	default y if ARCH_TEGRA_12x_SOC

config TEGRA_DC_64BIT_SUPPORT
	bool
	help
		T12x LPAE support in dc driver

config TEGRA_DC_LOW_LATENCY_CURSOR
	bool
	default y if ARCH_TEGRA_12x_SOC

config TEGRA_DC_CLOCK_GEN2
    bool
    default y if ARCH_TEGRA_12x_SOC
    help
        T12x redefined pll usages for pll_d and pll_d2.

config TEGRA_SD_GEN2
	bool
	default y

config TEGRA_DC_TEMPORAL_DITHER
	bool
	default y

config FB_TEGRA
	tristate "Tegra Framebuffer driver"
	depends on TEGRA_DC && FB = y
	select FB_CFB_FILLRECT
	select FB_CFB_COPYAREA
	select FB_CFB_IMAGEBLIT
	default FB && !ADF
	help
	  Framebuffer device support for the Tegra display controller.

config ADF_TEGRA
	tristate "Tegra ADF driver"
	depends on TEGRA_DC && ADF && FB_TEGRA = n
	default ADF
	select ADF_FBDEV
	select ADF_MEMBLOCK
	select VIDEOBUF2_DMA_CONTIG
	help
	  ADF device support for the Tegra display controller.

config ADF_TEGRA_FBDEV
	bool "Tegra ADF fbdev support"
	depends on ADF_TEGRA
	help
	  Enables fbdev compatibility in the ADF Tegra driver.

config TEGRA_DC_EXTENSIONS
	bool "Tegra Display Controller Extensions"
	depends on TEGRA_DC && ADF_TEGRA = n
	default y
	help
	  This exposes support for extended capabilities of the Tegra display
	  controller to userspace drivers.

config TEGRA_NVMAP
	bool "Tegra GPU memory management driver (nvmap)"
	select ARM_DMA_USE_IOMMU if IOMMU_API
	select DMA_SHARED_BUFFER
	default y
	help
	  Say Y here to include the memory management driver for the Tegra
	  GPU, multimedia and display subsystems

config NVMAP_HIGHMEM_ONLY
	bool "Use only HIGHMEM for nvmap"
	depends on TEGRA_NVMAP && IOMMU_API && HIGHMEM
	help
	  Say Y here to restrict nvmap system memory allocations (both
	  physical system memory and IOVMM) to just HIGHMEM pages.

config NVMAP_PAGE_POOLS
	bool "Use page pools to reduce allocation overhead"
	depends on TEGRA_NVMAP
	default y
	help
	  say Y here to reduce the alloction overhead, which is significant
	  for uncached, writecombine and inner cacheable memories as it
	  involves changing page attributes during every allocation per page
	  and flushing cache. Alloc time is reduced by allcoating the pages
	  ahead and keeping them aside. The reserved pages would be released
	  when system is low on memory and acquired back during release of
	  memory.

config NVMAP_PAGE_POOL_DEBUG
	bool "Debugging for page pools"
	depends on NVMAP_PAGE_POOLS
	help
	  Say Y here to include some debugging info in the page pools. This
	  adds a bit of unnecessary overhead so only enable this is you
	  suspect there is an issue with the nvmap page pools.

config NVMAP_PAGE_POOLS_INIT_FILLUP
	bool "Fill up page pools during page pools init"
	depends on NVMAP_PAGE_POOLS
	default y
	help
	  Say Y here to fill up the page pools during page pool init time.
	  This helps in faster alloctions right from the early alloction
	  requests. Page pools fill up during init would increase the boot time.
	  If increase in boot time is not acceptable, keep this option disabled.

config NVMAP_PAGE_POOLS_INIT_FILLUP_SIZE
	depends on NVMAP_PAGE_POOLS_INIT_FILLUP
	hex "Amount of memory to fill up page pools with during bootup in MB"
	default 0x64

config NVMAP_PAGE_POOL_SIZE
	depends on NVMAP_PAGE_POOLS
	hex "Page pool size in pages"
	default 0x0

config NVMAP_CACHE_MAINT_BY_SET_WAYS
	bool "Enable cache maintenance by set/ways"
	depends on TEGRA_NVMAP
	help
	 Say Y here to reduce cache maintenance overhead by MVA.
	 This helps in reducing cache maintenance overhead in the systems,
	 where inner cache includes only L1. For the systems, where inner cache
	 includes L1 and L2, keep this option disabled.

config NVMAP_CACHE_MAINT_BY_SET_WAYS_ON_ONE_CPU
	bool "Perform cache maint on one cpu only"
	depends on TEGRA_NVMAP && NVMAP_CACHE_MAINT_BY_SET_WAYS
	help
	  Say Y here to avoid cache maint on all CPU's during inner cache maint
	  by set/ways. When L1 and L2 are inner caches, cache maint on one
	  CPU is enough. When L1 is inner and L2 is outer, cache maint on
	  all CPU's is necessary during L1 cache maint by set/ways.

config NVMAP_OUTER_CACHE_MAINT_BY_SET_WAYS
	bool "Enable outer cache maintenance by set/ways"
	depends on TEGRA_NVMAP
	help
	  Say Y here if you want to optimize cache maintenance for ranges
	  bigger than size of outer cache. This option has no effect on
	  system without outer cache.

config NVMAP_DMABUF_STASH
	bool "Enable stashing of IOVA maps with dmabuf"
	depends on TEGRA_NVMAP
	default y
	help
	  Set to Y if you would like nvmap to stash maps when using dma
	  bufs. This will speed up remapping of the same handle at the cost
	  of using more IOVA space.

config NVMAP_DMABUF_STASH_STATS
	bool "Enable stat tracking on the stash"
	depends on NVMAP_DMABUF_STASH
	help
	  Say Y to enable tracking of basic cache statistics on the dmabuf
	  stash. This adds some overhead but should be very useful for
	  debugging memory leaks.

config NVMAP_FORCE_ZEROED_USER_PAGES
	bool "Only alloc zeroed pages for user space"
	depends on TEGRA_NVMAP
	default y
	help
	  Say Y here to force zeroing of pages allocated for user space. This
	  avoids leaking kernel secure data to user space. This can add
	  significant overhead to allocation operations depending on the
	  allocation size requested.

config NVMAP_USE_CMA_FOR_CARVEOUT
	bool "Use CMA memory for carveouts"
	depends on TEGRA_NVMAP
	help
	  Say Y here to reserve carveout memory using CMA
	  API. CMA reserved memory can be used by applications
	  when it is not in use by the device that reserved it.

config NVMAP_FD_START
	hex "FD number to start allocation from"
	depends on TEGRA_NVMAP
	default 0x400
	help
	  NvMap handles are represented with FD's in the user processes.
	  To avoid Linux FD usage limitations, NvMap allocates FD starting
	  from this number.

config NVMAP_DEFER_FD_RECYCLE
	bool "Defer FD recycle"
	depends on TEGRA_NVMAP
	help
	  Say Y here to enable deferred FD recycle.
	  A released nvmap handle would release memory and FD. This FD
	  can be reused immediately for subsequent nvmap allocation req in
	  the same process. Any buggy code in client process that continues to
	  use FD of released allocation would continue to use new allocation
	  and can lead to undesired consequences, which can be hard to debug.
	  Enabling this option would defer recycling FD for longer time and
	  allows debugging incorrect FD references by clients by returning errors
	  for the accesses that occur after handle/FD release.

config NVMAP_DEFER_FD_RECYCLE_MAX_FD
	hex "FD number to start free FD recycle"
	depends on NVMAP_DEFER_FD_RECYCLE
	default 0x8000
	help
	  Once last allocated FD reaches this number, allocation of subsequent
	  FD's start from NVMAP_START_FD.

config TEGRA_DSI
	bool "Enable DSI panel."
	help
	  Say Y here to enable the DSI panel.

config TEGRA_DSI2EDP_TC358767
	bool "Enable DSI2EDP TC358767 bridge."
	help
	  Say Y here to enable the DSI2EDP TOSHIBA 358767 adapter.

config TEGRA_DSI2EDP_SN65DSI86
	bool "Enable DSI2EDP SN65DSI86 bridge."
	help
	  Say Y here to enable the DSI2EDP TI SN65DSI86 adapter.

config TEGRA_DP
	bool "Enable eDP panel."
	default  n
	help
	  Say Y here to enable eDP panel.

config TEGRA_LVDS
	bool "Enable LVDS panel."
	default  n
	help
	  Say Y here to enable LVDS panel.

config TEGRA_NVSR
	bool "Enable NVSR support."
	default  n
	help
	   Say Y here to enable NVSR support.

config NVMAP_CONVERT_CARVEOUT_TO_IOVMM
	bool "Convert carveout to IOVMM"
	depends on TEGRA_NVMAP && IOMMU_API
	default y
	help
	  Say Y here to force to convert carveout memory requests to
	  I/O virtual memory requests.

config TEGRA_NVHDCP
	bool "Support NVHDCP content protection on HDMI"
	help
	  Say Y here to support NVHDCP upstream and downstream protocols, this
	  requires a correctly fused chip to negotiate keys.

config TEGRA_HDMI_74MHZ_LIMIT
	bool "Support only up to 74.25 MHz HDMI pixel frequency"
	help
	  Say Y here to make kernel report only low bandwidth modes.
	  Useful only for boards which can't deliver 148.50 MHz.

endif

config TEGRA_CAMERA
	bool "Enable support for tegra camera/isp hardware"
	depends on ARCH_TEGRA
	default y
	help
	  Enables support for the Tegra camera interface

	  If unsure, say Y
