if ARCH_COMCERTO

menu "Comcerto Implementation Options"

config ARCH_SUPPORTS_BIG_ENDIAN
	bool "Architecture supports Big Endian"
        default n

choice
	prompt "Comcerto System Type"
	default CONFIG_ARCH_M86XXX

config ARCH_M86XXX
	bool "M86xxx"
	select CPU_V7
	select ARM_GIC
	select ARM_ERRATA_743622
	select ARM_ERRATA_751472
	select ARM_ERRATA_754322
	select ARM_ERRATA_764369 if SMP
	select MTD_COMCERTO_NOR
	select COMCERTO_UART1_SUPPORT
	select COMCERTO_PFE_UART_SUPPORT
	select COMCERTO_USB2_SUPPORT
	select COMCERTO_USB3_SUPPORT
 	select COMCERTO_USB3_INTERNAL_CLK
	select COMCERTO_IPSEC_SUPPORT
	select COMCERTO_I2C_SUPPORT
	select GENERIC_TIME
	select GENERIC_CLOCKEVENTS
	select HAVE_SCHED_CLOCK
	select COMCERTO_DW_DMA_SUPPORT
	select ZONE_DMA
	select CLKDEV_LOOKUP
	select ARCH_HAS_CPUFREQ
	select ARCH_HAS_OPP
	select MIGHT_HAVE_PCI if !RTSM_C2K
	select PCI_MSI if PCI
	help
	  Say Y here if you intend to run this kernel with a Comcerto2000 device.

endchoice



choice
	prompt "Comcerto Board type"
	default RTSM_C2K

config GOOGLE_FIBER_OPTIMUS
	bool "Google Fiber Optimus"
	depends on ARCH_M86XXX
	help
	  Say Y here if you intend to run this kernel with a Google Fiber Optimus board.

config C2K_EVM
	bool "EVM"
	depends on ARCH_M86XXX
	help
	  Say Y here if you intend to run this kernel with a C2K EVM.

config C2K_MFCN_EVM
	bool "MFCN EVM"
	depends on ARCH_M86XXX
	help
	  Say Y here if you intend to run this kernel with a C2K MFCN EVM.

config C2K_ASIC
	bool "ASIC"
	depends on ARCH_M86XXX
	select COMCERTO_UART0_SUPPORT
	help
	  Say Y here if you intend to run this kernel with a C2K ASIC.

config RTSM_C2K
	bool "RTSM"
	depends on ARCH_M86XXX
	help
	  Say Y here if you intend to run this kernel with a C2K RTSM.
	  
endchoice

config GOOGLE_SPACECAST
	bool "Google Spacecast"
	select GOOGLE_FIBER_OPTIMUS
	help
	  Say Y here if you intend to run this kernel with a Google Fiber Spacecast board
	  (a variation of Optimus board).

config MTD_COMCERTO_NOR
	bool
	default y

config COMCERTO_TDM_CLOCK
        bool "Comcerto device TDM clock and frame sync control through sysfs"
	default y
	help
	  Say Y if you intend to use the Comcerto TDM and be able to change
	  different parameters through sysfs.

config COMCERTO_CSYS_TPI_CLOCK
        bool "Comcerto device TPI and CSYS clock control "
	default n
	help
	  Say Y if you intend to use the Comcerto TPI (Cortex A9 JTAG interface) and CSYS clock (Cortex A9 CoreSight module).

config COMCERTO_PCIE_OCC_CLOCK
        bool "Comcerto device PCIE OCC clock control "
	default n
	help
	  Say Y if you intend to use the Comcerto PCIE OCC clock.

config COMCERTO_SATA_OCC_CLOCK
        bool "Comcerto device SATA OCC clock control "
	default n
	help
	  Say Y if you intend to use the Comcerto SATA OCC clock.

config COMCERTO_SGMII_OCC_CLOCK
        bool "Comcerto device SGMII OCC clock control "
	default n
	help
	  Say Y if you intend to use the Comcerto SGMII OCC clock.

config COMCERTO_MEMBUF
	bool "Comcerto memory buffer driver"
	default n
	help
	  Say Y if you intend to use the memory buffer driver. This driver helps
	  Linux user space applications setup a physical scatter buffer that can be used
	  directly by the PFE. Currently the PFE hold tone generation feature requires
	  this driver to be enabled.

config COMCERTO_NUM_PCIES
	int "Number of PCIe controllers to be enabled (0-2)"
	range 0 2
	depends on ARCH_M86XXX 
	default "2"

config COMCERTO_FP
	bool "Comcerto Fast Path Support"
	depends on ARCH_M86XXX
	default y

config COMCERTO_UART0_SUPPORT
	bool
	default n

config COMCERTO_UART1_SUPPORT
	bool
	default y

config COMCERTO_USB2_SUPPORT
	bool
	default n

config COMCERTO_USB3_SUPPORT
	bool
	default n

config COMCERTO_IPSEC_SUPPORT
	bool
	default n

config COMCERTO_EPAVIS
	bool "DPI EPAVIS content inspection driver"
	default n

config COMCERTO_ELP_SUPPORT
	bool "Elliptic EPN1802 SPAcc/PKA crypto driver"
	default y

config COMCERTO_I2C_SUPPORT
        bool
        default n

config COMCERTO_DW_DMA_SUPPORT
        bool
        default n

config COMCERTO_DDR_ECC_SUPPORT
        bool "Fix for the Comcerto DDR ECC Support problem"
        default n
        help
          There is a limitation with Denali DDRC Controller when ECC is enabled. It expects that the
          burst writes of greater than or equal to 16 bytes must start and end at a 16-byte boundary.
          Saying Y for this option will make the dma memory area to be non-writeable, apart from being
          non-cacheable so that single write should happen instead of burst.

config COMCERTO_MSP
	bool "Mindspeed Comcerto VoIP"
	depends on ARCH_M86XXX
	select FIQ
	default y

config COMCERTO_SATA
	bool "Comcerto SATA"
	select ATA
	select ATA_VERBOSE_ERROR
	select SATA_AHCI_PLATFORM
	select BLK_DEV_SD
	select LBDAF

config COMCERTO_IMPROVED_SPLICE
	bool "Comcerto improved splice call"
	default n
	help
	  Say Y if you intend to use the Comcerto improved splice call. When writing data to a file on an
	  ext4 partition, re-organize the splice code to gather all the memcpy calls in one place, instead
	  of allocating pages and releasing pipe buffers one by one. This improves performance and makes it
	  possible to use a DMA engine with scatter-gather in-place of mempcy.

config COMCERTO_SPLICE_USE_MDMA
	bool "Comcerto splice using MDMA"
	default n
	depends on COMCERTO_IMPROVED_SPLICE
	select COMCERTO_DMA_BASIC
	help
	  Say Y if you intend to use the Comcerto MDMA engine to replace memcpy calls inside the improved 
	  splice call.

config COMCERTO_ZONE_DMA_NCNB
	bool "Comcerto Zone DMA"
	depends on ZONE_DMA
	default n

config COMCERTO_CUSTOM_SKB_LAYOUT
	bool "Mindspeed customized skb layout, to reduce NCNB access overhead, when NCNB buffer is used in skb"
	depends on COMCERTO_ZONE_DMA_NCNB
	default n

config DSPG_DECT_CSS
	bool "DSPG DECT CSS"
	default n

config COMCERTO_USB3_INTERNAL_CLK
	bool "Comcerto internal clock for USB3"
	default n

config COMCERTO_AHCI_PROF
	bool "Comcerto AHCI profiling"
	bool
	default n

config COMCERTO_SPLICE_PROF
	bool "Comcerto splice profiling"
	depends on COMCERTO_IMPROVED_SPLICE
	default n

config COMCERTO_MDMA_PROF
	bool "Comcerto MDMA profiling"
	depends on COMCERTO_DMA_BASIC
	default n

config COMCERTO_64K_PAGES
	bool "Comcerto 64kB pages"
	default n
	help
	  Say Y to enable 64kB pages instead of the default 4kB. Memory usage will be increased, but
          per-page operations will be reduced, and data transfers will become more efficient.

config COMCERTO_CC_OPTIMIZE_O3
	bool "Compile the kernel with -O3"
	default n
	depends on !CC_OPTIMIZE_FOR_SIZE
	help
	  Compile the kernel with -O3 instead of -O2 option. Resulting kernel can be a bit faster, but
	  it will also be bigger.

config COMCERTO_HW_KERNEL_PAGETABLE
	bool "Use the 2nd HW page table for kernel memory space"
	select VMSPLIT_2G
	default n
	help
	  By default, Linux uses only one page table at a time, and switches page tables when switching
	  between processes. Say Y to enable the 2nd hardware page table, which will be used to map kernel
	  addresses.
	  Note that because of the way the ARM MMU determines which page table to use, this option can
	  only be enabled with a 2G/2G userspace/kernel memory split.

config COMCERTO_UNCACHED_DMA
	bool "Make pages uncacheable when doing DMA operations"
	depends on COMCERTO_HW_KERNEL_PAGETABLE
	default n
	help
	  When transferring ownership of a page to a device through the DMA API, make the page uncacheable
	  for the duration of the transfer. This makes the 2nd cache invalidate (that was needed because
	  of the possibility of speculative accesses by the A9 cores) unnecessary, which can increase
	  performance during heavy IO workloads. The page tables will be more complex though, resulting in
	  more TLB misses when a DMA transfer is going on.

config COMCERTO_SPLICE_READ_NOCONTIG
	bool "Use find_get_pages in splice read code"
	default n
	help
	  The splice read code normally calls find_get_pages_contig to retrieve pages mapping the requested
	  portion of the file to read. However, using find_get_pages works just as well, as the splice code
	  is able to handle both situations.
	  Say Y to use find_get_pages instead of find_get_pages_contig, which seems to yield a significant
	  performance improvement in Samba read tests.
endmenu
endif
