if ARCH_FEROCEON

menu "Feroceon SoC options"
	depends on ARCH_FEROCEON

#since the Kconfig parser dispatch all source commands, we call the machines Kconfigs from here and
#not vice versa because otherwise the plat-feroceon Kconfig will be dispatched twice.     
if ARCH_FEROCEON_KW2
source "arch/arm/mach-feroceon-kw2/Kconfig"
endif

config JTAG_DEBUG
        bool "Enable JTAG by disable \"wait for interrupt\"."
	depends on MV88F6500 || MV88F6281 || MV78XX0
        default n
        ---help---
           Enable the JTAG debugger taking over the CPU by disabling "wait for interrupt" idle loop."


menu "Feroceon SoC Included Features"

config MV_NAND_SUPPORT
	bool
	default n

config MV_INCLUDE_PEX
	bool "PCI Express Support"
	depends on PCI && MV88F6500 || MV88F6281 || MV78XX0
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_USB
	bool "USB Support"
	depends on MV88F6500 || MV88F6281 || MV78XX0
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_XOR
	bool "XOR Support"
	depends on MV88F6500 || MV88F6281 || MV78XX0 
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_CESA
	bool "CESA Support"
	depends on MV88F6500 || MV88F6082 || MV88F6183 || MV88F6281 || MV78XX0
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_NFC
        bool "Nand Flash Controller Support"
	select MV_NAND_SUPPORT
        depends on MV88F6500
        default n
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_LEGACY_NAND
	bool "Legacy NAND Support"
	select MV_NAND_SUPPORT
	depends on MV88F6500 || MV88F6281 || MV78XX0
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_INTEG_SATA
	bool "Integrated SATA Support"
	depends on MV88F6500 || MV88F6281 || MV78XX0
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_TDM
	bool "Integrated TDM Support"
	depends on MV88F6500 || MV88F6281 || MV78XX0 
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_GIG_ETH
	bool "Giga Ethernet Support"
	depends on MV88F6500 || MV88F6281 || MV78XX0
	default y

config MV_INCLUDE_SPI
	bool "SPI Support"
	depends on MV88F6500 || MV88F6281 || (MV78XX0 && !MV78XX0_Z0)
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_SDIO
	bool "SDIO Support"
	depends on MV88F6500 || MV88F6281
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_TS
	bool "TSU Support"
	depends on MV88F6500 || MV88F6281
	default n
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_PON
	bool "PON Support"
	depends on MV88F6500
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_TPM
	bool "TPM Support"
	depends on MV88F6500
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_CUST
	bool "Customer driver Support"
	depends on MV88F6500
	default y
        ---help---
        Please don't change this configs unless you know what you are doing.

config MV_INCLUDE_SWITCH
        bool "Ethernet Switch Support"
        depends on MV88F6500 || MV88F6281 || MV78XX0
        default y

endmenu

config MV_GPP_MAX_PINS
	int
	default 32 if MV78XX0
	default 64 if MV88F6281
	default 70 if MV88F6500

	
config MV_DCACHE_SIZE
	hex
	default 0x8000 if MV78XX0
	default 0x4000 if MV88F6500 || MV88F6281

config MV_ICACHE_SIZE
	hex
	default 0x8000 if MV78XX0
	default 0x4000 if MV88F6500 || MV88F6281
	          
menu "Feroceon SoC MTD support"

config MV_FLASH_CTRL
	bool
	default n

config MV_INCLUDE_NORFLASH_MTD
    bool "Marvell support for MTD NOR flash device"
    select MV_FLASH_CTRL
    depends on MTD_CFI
    default n

config MV_INCLUDE_SFLASH_MTD
    bool "Marvell support for MTD SPI flash device"
    select MV_FLASH_CTRL
    depends on MV_INCLUDE_SPI
    default y

config MTD_NAND_LNC
	bool "Marvell support for legacy NAND controller"
	depends on MV_INCLUDE_LEGACY_NAND
	
config MTD_NAND_LNC_RS_ECC
	bool "Support Reed-Solomon 4-bit ECC algorithm"
	depends on MTD_NAND_LNC
	default y
	---help---
	Choose this option to support Reed-Solomon 4-bit ECC algorithm.
	Note this option also requires support by low-level boot loader.

config MTD_NAND_LNC_8BYTE_READ
	bool "Support NAND 8 Byte Read burst algorithm"
	depends on MTD_NAND_LNC
	---help---
	Choose this option to support NAND 8 Byte Read burst algorithm.

config MTD_NAND_NFC
        tristate "MTD driver for the MV88F6500 Nand Flash Controller"
        depends on MV_INCLUDE_NFC
        help
          This enables the driver for the NAND flash controller found in
          the Marvell MV88F6500 SoC devices.

config MTD_NAND_NFC_GANG_SUPPORT
        bool "NAND Ganged mode support for the NFC"
        depends on MTD_NAND_NFC
        default y
        help
          This option enables the support for 2x8bit ganged mode in
          Marvell's NFC HAL driver and the MTD stack.

config MTD_NAND_NFC_MLC_SUPPORT
        bool "NAND MLC devices support for the NFC"
        depends on MTD_NAND_NFC
        default y
        help
          This option allows support for Nand devices with non-standard
          page/oob layout. These devices are detected incorrectly with
          standard autodetection mechanism based on the READ_ID command.

config MTD_NAND_NFC_INIT_RESET
        bool "NAND Enable Reset on Initialization"
        depends on MTD_NAND_NFC
        default n
        help
          This option forces NAND reset command on initialization. This
          is required by certain NAND vendors (Micron).

endmenu

choice
	prompt "SoC USB Mode"
	depends on MV_INCLUDE_USB && !UBOOT_STRUCT
	default MV_USB_HOST

config MV_USB_HOST
	bool "Support for USB Host"
	---help---
	Choosing this option will configure on chip USB Controller to work in Host mode

config MV_USB_DEVICE
	bool "Support for USB Device"
	---help---
	Choosing this option will configure on chip USB Controller to work in Device mode
endchoice


config ARCH_SUPPORTS_BIG_ENDIAN
	bool
	default y

config USE_DSP
	bool "Use pld/ldrd/strd arm DSP instructions"
	default n

choice
	prompt "Protect from speculative instruction prefetch"
	depends on CACHE_FEROCEON_L2
	default MV_SP_I_FTCH_DB_INV

config MV_SP_I_FTCH_DB_INV
	bool "Double invalidate for DMA buffers"
	---help---
	Choosing this option will add L2 invalidate for DMA recieved buffers before processing it,
	This is done through the pci_unmap_sg/page/single APIs.

config MV_SP_I_FTCH_LCK_L2_ICACHE
	bool "Lock L2 I-cache"
	---help---
	Choosing this option will lock L2 Icache.

config MV_SP_I_FTCH_NONE
	bool "Ignore"

endchoice

config MV_INTERNAL_REGS_SELECTIVE_MAPPING
	bool "Internal registers selective mapping"
	default n
	---help---
	Choosing this option enables selective address mapping for each unit,
        in the internal registers address space.


config  FEROCEON_PROC
	bool "Support for MV-shell proc file system"
	depends on PROC_FS
	---help---	
	  Choosing this option will enable you to use the MV-shell through the Proc
	  File system.
	  The MV-shell is a debug utility which can be run from the shell.

config  UBOOT_STRUCT
	bool "Use UBoot Marvell tag structure"
	---help---
	  Choosing this option will cause the linux to extract the Tclk, Sysclk and
	  the uboot version from the Tag list passed by the uboot.

config  MV_DBG_TRACE
	bool "Enable tracing utility"
	default n
	---help---
	  Choosing this debug option will cause some kernel modules to log operations into
	  a cyclic buffer and dump them on failures. Enabling this feature decreases performance.

config  MV_REAL_TIME
	bool "Real Time softirq support"
	default n
	---help---
	Choosing this option will give more CPU time for user space processes

config  MV_CPU_PERF_CNTRS
        bool "CPU Performance counters support"
        default n
        ---help---
        Choosing this option will enable you to use CPU Performance counters

config  MV_CPU_L2_PERF_CNTRS
        bool "CPU L2 Performance counters support"
        default n
        ---help---
        Choosing this option will enable you to use CPU L2 Performance counters

menu "Power-Management options"

config	MV_PMU_PROC
	bool "Support procfs control on Power-Management features"
	depends on PROC_FS
	---help---	
	  Choose this option to enable control over the power-management features through
	  the proc file-system.

choice 
        prompt "Idle Mode"
	depends on CPU_IDLE
        default MV_PM_IDLE_WFI_SR

config	MV_PM_IDLE_WFI_SR
	bool "Support WFI and DRAM SR for CPU-Idle driver"
	---help---
	  Choosing this option will cause the CPU-Idle driver to enter WFI w/ DRAM Self-Refresh
	  when system is idle.

config  MV_PM_IDLE_DEEPIDLE_SR
	bool "Support Deep-Idle and DRAM SR for CPU-Idle driver"
	depends on MV_CESA_TOOL 
	---help---
	  Choosing this option will cause the CPU-Idle driver to enter Deep-Idle w/ DRAM Self-Refresh
	  when system is idle.
endchoice
endmenu


menu "Soc DMA accelerations"

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_xor/Kconfig

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_dma/Kconfig

endmenu


menu "SoC Networking support"
depends on MV_INCLUDE_GIG_ETH

config MV_ETHERNET
        bool "Networking support"
	depends on MV_INCLUDE_GIG_ETH
	default y
        ---help---
        Choose this option to support Marvell Gigabit Ethernet Controller 

if MV_ETHERNET

choice 
        prompt "GbE Mode"
        depends on MV_INCLUDE_GIG_ETH 
        default MV_ETH_LEGACY

config MV_ETH_LEGACY
        bool "Legacy mode "
        ---help---

config MV_ETH_NETA
        bool "Acceleration mode "
	depends on ARCH_FEROCEON_KW2
        ---help---

endchoice


if MV_ETH_LEGACY
source arch/arm/plat-feroceon/mv_drivers_lsp/mv_network/Kconfig
endif

if MV_ETH_NETA
source arch/arm/plat-feroceon/mv_drivers_lsp/mv_neta/Kconfig
endif

endif # MV_ETHERNET
endmenu # "SoC Networking support"

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_cesa/Kconfig

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_phone/Kconfig


#source arch/arm/plat-feroceon/mv_drivers_lsp/mv_sdio/Kconfig

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_tsu/Kconfig

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_cust/Kconfig

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_pon/Kconfig

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_tpm/Kconfig

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_mac_learn/Kconfig


config  SCSI_MVSATA
	tristate "Support for Marvell Sata Adapters"
	depends on ( MV_INCLUDE_INTEG_SATA && SCSI ) || ( PCI && SCSI )
	---help---
	  Choosing this option will enable you to use the Marvell Sata
	  adapters support with emulation as SCSI adapters.
	  Note that the kernel scsi subsystem must be chosen too.

source arch/arm/plat-feroceon/mv_drivers_lsp/mv_sata/Kconfig

config PCIE_VIRTUAL_BRIDGE_SUPPORT
        bool "Enable virtual bridge on PCIe"
        depends on PCI
        ---help---
        Enable virtual bridge module to support PCIe switches

config MV_UART_POLLING_MODE
        bool "Enable Polling mode for UART driver"
        depends on ARCH_FEROCEON_KW2
	default y
        ---help---
        Configure UART driver to work in polling mode.

config MV_PRINTK_SLICE_SUPPORT
        bool "Support printk buffer slicing"
        depends on ARCH_FEROCEON_KW2 && PRINTK
	default n
        ---help---
        Enable printk buffer chunks slicing to reduce interrupts locking periods.

config MV_PRINTK_CHUNK_SIZE
        int "Support printk buffer slicing"
        depends on MV_PRINTK_SLICE_SUPPORT
	default 16
        ---help---
        Select printk buffer chunk granularity.

choice
	prompt "DRAM Access Configuration for 88F6601 SoC"
	default MV_DRAM_DEFAULT_ACCESS_CFG

config MV_DRAM_DEFAULT_ACCESS_CFG
	bool "Default DRAM access configuration(by bootloader)"
	---help---
	Choosing this option keeps bootloader DRAM access configuration. 

config MV_DRAM_FASTPATH_ACCESS_CFG
	bool "DRAM fast-path access configuration"
	---help---
	Choosing this option will enable DRAM fast-path access configuration.

config MV_DRAM_XBAR_ACCESS_CFG
	bool "DRAM XBAR access configuration"
	---help---
	Choosing this option will enable DRAM XBAR access configuration.

endchoice

endmenu


endif
