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_CPH
	bool "CPH 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_cph/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
