menu "Broadcom STB options"
	depends on BRCMSTB


#####################################################################
# User options: Chipset selection
#####################################################################


config BRCM_LEGACY
	bool "Enable legacy platforms"
	depends on BRCMSTB
	default n
	help
	  Reserved for future use.  Say N.


choice
	prompt "Chipset selection"
	depends on BRCMSTB
	help
	  Select the Broadcom chipset you are building for.

config BCM7125C0
	bool "7125 Cx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7125
	select BMIPS4380
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_PCI23
	select BRCM_HAS_MOCA_11
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V1
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_3
	select BRCM_HAS_NAND_MINOR_3
	select BRCM_HAS_EDU
	select BRCM_HAS_BSPI_V3
	select BRCM_HAS_SATA2
	select BRCM_SATA_75MHZ_PLL
	select BRCM_HAS_WKTMR
	select BRCM_HAS_STANDBY
	select BRCM_PWR_HANDSHAKE_V0
	select BRCM_HAS_ANALOG_DDR_PHY
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0

config BCM7231B0
	bool "7231 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7231
	select BMIPS4380
	select BRCM_HAS_XKS01
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_USB_CAPS
	select BRCM_HAS_GENET_0
	select BRCM_HAS_GENET_1
	select BRCM_GENET_V2
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_5
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SATA3
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_WKTMR
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0
	select BRCM_HAS_AON
	select BRCM_PWR_HANDSHAKE_V1
	select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7340B0
	bool "7340 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7340
	select BMIPS4380
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_PCI23
	select BRCM_HAS_GENET_0
	select BRCM_HAS_MOCA_11
	select BRCM_HAS_MOCA_MIDRF
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V1
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_3
	select BRCM_HAS_NAND_MINOR_3
	select BRCM_HAS_EDU
	select BRCM_HAS_BSPI_V3
	select BRCM_HAS_WKTMR
	select BRCM_HAS_STANDBY
	select BRCM_PWR_HANDSHAKE_V0
	select BRCM_HAS_ANALOG_DDR_PHY
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0

config BCM7344B0
	bool "7344 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7344
	select BMIPS5000
	select BRCM_HAS_XKS01
	select BRCM_HAS_XI
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_USB_CAPS
	select BRCM_HAS_GENET_0
	select BRCM_HAS_MOCA_11_PLUS
	select BRCM_HAS_MOCA_MIDRF
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V2
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_5
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_WKTMR
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0
	select BRCM_HAS_AON
	select BRCM_PWR_HANDSHAKE_V1
	select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7346B0
	bool "7346 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7346
	select BMIPS5000
	select BRCM_HAS_XKS01
	select BRCM_HAS_XI
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_USB_CAPS
	select BRCM_HAS_GENET_0
	select BRCM_HAS_MOCA_11_PLUS
	select BRCM_HAS_MOCA_MIDRF
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V2
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_5
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_SATA3
	select BRCM_HAS_WKTMR
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0
	select BRCM_HAS_AON
	select BRCM_PWR_HANDSHAKE_V1
	select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7358A0
	bool "7358 Ax"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7358
	select BMIPS3300
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_GENET_0
	select BRCM_GENET_V2
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_5
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_WKTMR
	select BRCM_HAS_AON
	select BRCM_PWR_HANDSHAKE_V0
	select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7360A0
	bool "7360 Ax"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7360
	select BMIPS3300
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_GENET_0
	select BRCM_GENET_V2
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_5
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_SATA3
	select BRCM_HAS_WKTMR
	select BRCM_HAS_AON
	select BRCM_PWR_HANDSHAKE_V0
	select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7405B0
	bool "7405/97459 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7405
	select BMIPS4380
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_PCI23
	select BRCM_HAS_EMAC_0
	select BRCM_HAS_EMAC_1
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_2
	select BRCM_HAS_NAND_MINOR_2
	select BRCM_HAS_SATA2
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0

config BCM7405D0
	bool "7405/97459 Dx, 7413 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7405
	select BMIPS4380
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_PCI23
	select BRCM_HAS_EMAC_0
	select BRCM_HAS_EMAC_1
	select BRCM_HAS_NOR
	# not supported in 2.6.37
	# select BRCM_HAS_NAND_MAJOR_3
	# select BRCM_HAS_NAND_MINOR_2
	select BRCM_HAS_SATA2
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0

config BCM7408B0
	bool "7408 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7408
	select BMIPS4380
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_MOCA_11_LITE
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V2
	select BRCM_HAS_NAND_MAJOR_3
	select BRCM_HAS_NAND_MINOR_4
	select BRCM_HAS_BSPI_V3
	select BRCM_HAS_WKTMR
	select BRCM_HAS_STANDBY
	select BRCM_HAS_DIGITAL_DDR_PHY
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0

config BCM7420C0
	bool "7420 Cx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7420
	select BMIPS5000
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_PCI23
	select BRCM_HAS_PCIE
	select BRCM_HAS_GENET_0
	select BRCM_HAS_MOCA_11
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V1
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_3
	select BRCM_HAS_NAND_MINOR_3
	select BRCM_HAS_EDU
	select BRCM_HAS_BSPI_V3
	select BRCM_HAS_SATA2
	select BRCM_SATA_75MHZ_PLL
	select BRCM_HAS_WKTMR
	select BRCM_HAS_STANDBY
	select BRCM_PWR_HANDSHAKE_V0
	select BRCM_HAS_ANALOG_DDR_PHY
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_1GB_MEMC0

config BCM7425B0
	bool "7425 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7425
	select BMIPS5000
	select BRCM_HAS_XKS01
	select BRCM_HAS_XI
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_PCIE
	select BRCM_HAS_GENET_0
	select BRCM_HAS_MOCA_20
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V3
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_5
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_EDU
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_EMMC
	select BRCM_HAS_SATA3
	select BRCM_HAS_WKTMR
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_2GB_MEMC0
	select BRCM_HAS_1GB_MEMC1
	select BRCM_HAS_AON
	select BRCM_PWR_HANDSHAKE_V1
	select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7429A0
	bool "7429 Ax"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7429
	select BMIPS5000
	select BRCM_HAS_XKS01
	select BRCM_HAS_XI
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_USB_CAPS
	select BRCM_HAS_GENET_0
	select BRCM_HAS_MOCA_20
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V3
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_6
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_EDU
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_EMMC
	select BRCM_HAS_SATA3
	select BRCM_HAS_WKTMR
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_2GB_MEMC0
	#select BRCM_HAS_AON
	#select BRCM_PWR_HANDSHAKE_V1
	#select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7435A0
	bool "7435 Ax"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7435
	select BMIPS5000
	select BRCM_HAS_XKS01
	select BRCM_HAS_XI
	select BRCM_HAS_DUALCORE
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_USB_CAPS
	select BRCM_HAS_PCIE
	select BRCM_HAS_GENET_0
	select BRCM_HAS_MOCA_20
	select BRCM_MOCA_ON_GENET_1
	select BRCM_GENET_V3
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_6
	select BRCM_HAS_NAND_MINOR_2
	select BRCM_HAS_EDU
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_EMMC
	select BRCM_HAS_SATA3
	select BRCM_HAS_WKTMR
	select BRCM_HAS_UPPER_MEMORY
	select BRCM_HAS_2GB_MEMC0
	select BRCM_HAS_1GB_MEMC1
	#select BRCM_HAS_AON
	#select BRCM_PWR_HANDSHAKE_V1
	#select BRCM_HAS_DIGITAL_DDR_PHY

config BCM7468B0
	bool "7468 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7468
	select BMIPS3300
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_HAS_GENET_0
	select BRCM_GENET_V2
	select BRCM_HAS_NAND_MAJOR_3
	select BRCM_HAS_NAND_MINOR_4
	select BRCM_HAS_EDU
	select BRCM_HAS_BSPI_V3
	select BRCM_HAS_SDIO_V0
	select BRCM_HAS_WKTMR
	select BRCM_HAS_STANDBY
	select BRCM_PWR_HANDSHAKE_V0
	select BRCM_HAS_DIGITAL_DDR_PHY
	select BRCM_HAS_1GB_MEMC0

config BCM7550A0
	bool "7550 Ax"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7550
	select BMIPS3300
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_EMAC_0
	select BRCM_HAS_MII
	select BCMEMAC_EXTMII
	select BRCM_HAS_NAND_MAJOR_3
	select BRCM_HAS_NAND_MINOR_4
	select BRCM_HAS_BSPI_V3
	select BRCM_HAS_WKTMR
	select BRCM_IRW_HALT
	select BRCM_CPU_PLL
	select BRCM_HAS_1GB_MEMC0

config BCM7550B0
	bool "7550 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7550
	select BMIPS3300
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_EMAC_0
	select BRCM_HAS_MII
	select BCMEMAC_EXTMII
	select BRCM_HAS_NAND_MAJOR_3
	select BRCM_HAS_NAND_MINOR_4
	select BRCM_HAS_BSPI_V3
	select BRCM_HAS_WKTMR
	select BRCM_IRW_HALT
	select BRCM_CPU_PLL
	select BRCM_HAS_1GB_MEMC0

config BCM7552B0
	bool "7552 Bx"
	select BRCM_PLATFORM_DEFAULTS
	select BCM7552
	select BMIPS3300
	select BRCM_UARTA_IS_16550
	select BRCM_UARTB_IS_16550
	select BRCM_UARTC_IS_16550
	select BRCM_HAS_GENET_0
	select BRCM_GENET_V2
	select BRCM_HAS_NOR
	select BRCM_HAS_NAND_MAJOR_5
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_SDIO_V1
	select BRCM_HAS_WKTMR
	select BRCM_HAS_AON
	select BRCM_PWR_HANDSHAKE_V1
	select BRCM_HAS_DIGITAL_DDR_PHY

endchoice


#####################################################################
# User options: Memory configuration
#####################################################################


comment "Memory map"


config BRCM_UPPER_MEMORY
	bool "Large (>256MB) memory support"
	depends on BRCM_HAS_UPPER_MEMORY
	select ARCH_SPARSEMEM_ENABLE
	select BRCM_UPPER_256MB if !BRCM_HAS_XKS01
	select BRCM_UPPER_768MB if BRCM_HAS_XKS01
	default y
	help
	  Say Y to use a special mapping scheme to access the STB's
	  upper memory (all RAM above 256MB).  This supports up to 512MB
	  of ZONE_NORMAL memory on 65nm chips, and 1024MB of ZONE_NORMAL
	  memory on 40nm chips.

	  On chips where HIGHMEM is available, this option should remain
	  enabled since it will maximize the amount of memory in ZONE_NORMAL.

	  If this option is disabled, you will only be able to use the
	  first 256MB of RAM on the system (without HIGHMEM).  HIGHMEM is
	  not available on most STB chips.

	  It is recommended that this option be used in conjuction with
	  SPARSEMEM (Kernel type -> Memory model -> Sparse memory).
	  SPARSEMEM conserves about 2MB by omitting the page tables for the
	  memory hole.


config BRCM_OVERRIDE_RAM_SIZE
	bool "Override memory size detection"
	depends on BRCMSTB
	default n
	help
	  Say Y to use a compile-time default rather than detecting the
	  RAM size from strap options or reading it from the bootloader.

	  If unsure, say N.


config BRCM_FORCED_DRAM0_SIZE
	int "RAM on primary DRAM controller (MB)"
	depends on BRCM_OVERRIDE_RAM_SIZE
	default 32
	help
	  How many megabytes of RAM are on the primary DRAM controller?

config BRCM_FORCED_DRAM1_SIZE
	int "RAM on secondary DRAM controller (MB)"
	depends on BRCM_OVERRIDE_RAM_SIZE && BRCM_HAS_1GB_MEMC1
	default 256
	help
	  How many megabytes of RAM are on the secondary DRAM controller?


#####################################################################
# User options: Onchip peripherals
#####################################################################


comment "Onchip peripherals"
	depends on BRCMSTB


config BRCM_CONSOLE_DEVICE
	int "Default serial console device"
	depends on BRCMSTB
	default 0
	range 0 2
	help
	  Default UART to use for console output.  This can be overridden with
	  "console=" on the kernel command line.

	   0 = /dev/ttyS0 or /dev/ttyBCM0 (UARTA)
	   1 = /dev/ttyS1 or /dev/ttyBCM1 (UARTB)
	   2 = /dev/ttyS2 or /dev/ttyBCM2 (UARTC)

	  If unsure, choose 0.


config BRCM_FLASH
	bool "Enable onboard flash devices"
	depends on (BRCM_HAS_NOR || BRCM_HAS_NAND || BRCM_HAS_SPI) && MTD && \
		!BRCM_IKOS
	default y
	help
	  Say Y to enable NOR/ROM, NAND, and SPI flash devices.  The EBI
	  and NAND chip select registers will be scanned at boot time to
	  determine which devices are configured.

	  NOR/ROM will be handled by the standard physmap driver
	  (CONFIG_MTD_PHYSMAP) in the MTD menus.  NAND is handled by
	  CONFIG_MTD_BRCMNAND in this menu.

config BRCM_FIXED_MTD_PARTITIONS
	bool "Use fixed MTD partition map"
	depends on BRCM_FLASH
	default n
	help
	  Say Y to use the hard-coded flash partition map from
	  arch/mips/brcmstb/board.c .

	  The default setting (N) constructs the rootfs/kernel partition
	  boundaries from CFE environment variables.

	  To use this option, please edit board_get_partition_map() and
	  review brcmstb_mtd_setup().

	  If unsure, say N.


config MTD_BRCMNAND
	tristate "Broadcom NAND controller support"
	depends on BRCM_HAS_NAND && BRCM_FLASH
	default y
	help
	  Say Y to enable the onchip NAND controller.


config SPI_BRCMSTB
	tristate "Broadcom HIF SPI controller support"
	default y
	depends on BRCM_HAS_SPI && BRCM_FLASH && SPI_MASTER
	help
	  Say Y to enable support for SPI (serial) flash devices.


config BCMEMAC
	tristate "Broadcom STB 10/100 MAC/PHY support"
	depends on NET_ETHERNET
	depends on BRCMSTB && BRCM_HAS_EMAC_0 && !BRCM_IKOS
	default y
	select CRC32
	select MII
	help
	  Say Y to support the internal 10/100 MAC/PHY on Broadcom set-top
	  chips.

	  If your chipset supports power management, disabling this driver
	  will keep the device permanently powered down.

config BCMEMAC_EXTMII
	bool "Use external MII interface on EMAC_0"
	depends on BCMEMAC && BRCM_HAS_MII && !BRCM_HAS_EMAC_1
	default n
	help
	  Say Y to use the external MII interface instead of the internal
	  Ethernet PHY.  This is typically used to connect HPNA or MoCA
	  devices.

	  If unsure, say N.


config BCMGENET
	tristate "Broadcom STB 10/100/1000 MAC/PHY support"
	depends on NET_ETHERNET
	depends on BRCMSTB && (BRCM_HAS_GENET || BRCM_HAS_MOCA) && !BRCM_IKOS
	default y
	select CRC32
	select MII
	help
	  Say Y to support the internal 10/100/1000 GENET MAC/PHY on
	  Broadcom set-top chips.  This driver also supports the datapath
	  for the onchip MoCA transceiver.

	  If your chipset supports power management, disabling this driver
	  will keep the device permanently powered down.

if BCMGENET
	source drivers/net/bcmgenet/Kconfig
endif

config BRCM_MOCA
	tristate "Broadcom MoCA character driver"
	depends on BRCMSTB && BRCM_HAS_MOCA && !BRCM_IKOS
	default y
	help
	  Say Y to build the MoCA control path driver.  This is a simple
	  character driver that allows the MoCA daemon (mocad) to
	  initialize and configure the MoCA interface.

	  If your chipset supports power management, disabling this driver
	  will keep the device permanently powered down.


config SATA_BRCMSTB
	tristate "Broadcom STB SATA support"
	depends on BRCMSTB && PCI && ATA_SFF && !BRCM_IKOS && \
		BRCM_HAS_SATA2
	default y
	help
	  This option enables support for STB/DVD onchip SATA cores.

	  If your chipset supports power management, disabling this driver
	  will keep the device permanently powered down.

	  If unsure, say Y.


config BRCM_USB
	tristate "Broadcom STB USB support"
	depends on BRCMSTB && USB && !BRCM_IKOS
	default y
	help
	  Say Y to enable the drivers for the onchip USB controllers.

	  If your chipset supports power management, disabling this driver
	  will keep the device permanently powered down.

config BRCM_OVERRIDE_USB
	bool "Override USB defaults"
	depends on BRCM_USB
	default n
	help
	  Say Y to see advanced USB configuration options.

	  Normally the USB driver in the bootloader will enable the
	  appropriate settings prior to Linux boot, but this step may be
	  skipped if a customized bootloader is in use.

	  If unsure, say N.

choice
	prompt "USB VBUS power enable polarity"
	depends on BRCM_OVERRIDE_USB
	default BRCM_FORCE_USB_PWR_LO

config BRCM_FORCE_USB_PWR_LO
	bool "Active low"
	help
	  The board's USB VBUS control IC will have either an active low
	  or an active high enable.  On most Broadcom reference boards,
	  active low is used; however, on customer designs this may vary.
	  The output of the hardware signal USBx_PWRON is affected by
	  this setting, and it applies to all ports and controllers.

config BRCM_FORCE_USB_PWR_HI
	bool "Active high"

endchoice

choice
	prompt "USB overcurrent polarity"
	depends on BRCM_OVERRIDE_USB
	default BRCM_FORCE_USB_OC_LO

config BRCM_FORCE_USB_OC_LO
	bool "Active low"
	help
	  Controls the handling of the overcurrent indicator line (input
	  to BCM7xxx).  Active low is typically used when USBx_PWRFLT is
	  connected to a power switch chip, as is the case on Broadcom
	  reference boards.  Active high may be used if USBx_PWRFLT is
	  connected "downstream" from a fuse.

	  This setting applies to all USB ports and controllers.

config BRCM_FORCE_USB_OC_HI
	bool "Active high"

endchoice

config BRCM_USB_DISABLE_MASK
	hex "Bitmask of disabled USB hosts"
	depends on BRCM_OVERRIDE_USB
	default 0x00
	help
	  This is a bitmask to indicate which controllers should be
	  disabled.  Disabling unused controllers may reduce boot time
	  and free up system resources.

	  Setting bit 0 will disable the first USB host.
	  Setting bit 1 will disable the second USB host.
	  Setting bit 2 will disable the third USB host.
	  ...

	  If unsure, say 0x00.


# NOTE: SDIO_V1 hardware only (vanilla kernel driver sdhci-pltfm.c)
config BRCM_SDIO
	bool "Broadcom SDHCI (SDIO) support"
	depends on BRCM_HAS_SDIO_V1 && MMC_SDHCI && !BRCM_IKOS
	default y
	select MMC_SDHCI_IO_ACCESSORS
	help
	  Say Y to enable the driver for the onchip SDIO controller.

	  If you do not plan on using this device, disabling CONFIG_MMC
	  will save about 75KB.

	  If unsure, say Y.


config BRCM_PM
	bool "Power management for onchip peripherals"
	default y
	help
	  Say Y to enable power management (clock gating) for onchip
	  peripherals like USB, ENET/GENET, MoCA, and SATA.


choice
	prompt "System clocksource"
	depends on BRCMSTB
	default CSRC_R4K if !SMP && !BRCM_CPU_DIV
	default CSRC_WKTMR if BRCM_HAS_WKTMR
	default CSRC_UPG
	help
	  The clocksource is used to maintain the real-time clock and
	  calculate delays.

config CSRC_WKTMR
	bool "WKTMR"
	depends on BRCM_HAS_WKTMR
	help
	  Say Y to use the 27Mhz "WKTMR" clocksource.  This is usually
	  the best choice.

config CSRC_R4K
	bool "CP0 COUNT/COMPARE"
	depends on !BRCM_CPU_DIV
	help
	  Say Y to use the CP0 COUNT/COMPARE timer.  This should not be
	  used in SMP mode because each CPU (TP) has its own independent
	  counter which is not coherent with the other TP's counter.

config CSRC_UPG
	bool "UPG TIMER3"
	help
	  Say Y to use the 27Mhz UPG TIMER3 as the system clocksource.
	  On most older chips with no WKTMR, this is the best
	  choice.  However, this timer will be owned by the kernel
	  so applications will not be able to use it.

endchoice


#####################################################################
# User options: Miscellaneous options
#####################################################################


comment "Miscellaneous options"
	depends on BRCMSTB

config BRCM_FORCE_DOCSIS
	bool "Override DOCSIS detection"
	depends on BRCMSTB
	default n
	help
	  STB kernels will query the bootloader for the CFE_BOARDNAME variable
	  in order to detect DOCSIS platforms.  Say Y to override this check and
	  build a kernel that always assumes that the target is a DOCSIS board.

	  This typically affects the flash partition map and PCI interrupt
	  assignment.

	  If unsure, say N.


# PR10860 - Allow long long types to be used in modules
config BRCM_LIBGCC
	bool "Enable libgcc functions"
	depends on BRCMSTB
	default y
	help
	  This will build and export several libgcc functions that are
	  useful for 64-bit (long long) arithmetic.

	  If unsure, say Y.


config BRCM_SCSI_NO_RW10_RETRIES
	bool "No retries on SCSI READ/WRITE10 command"
	depends on SCSI
	default n
	help
	  Certain applications prefer minimal retries on reading/writing
	  bad sectors that will be performed at lower level like libata.
	  Say Y to abort the transaction early instead of attempting
	  potentially time-consuming retries.

config BRCM_WLAN_MODULES
	bool "Enable wireless extensions for external modules"
	default y
	select WIRELESS_EXT
	select WEXT_PRIV
	help
	  Say Y to enable support for wireless drivers compiled out of tree.


#####################################################################
# User options: Debugging options
#####################################################################


config BRCM_DEBUG_OPTIONS
	bool "Debugging options"
	depends on BRCMSTB
	default n
	help
	  Show extra debugging options.


config NO_INLINE
	bool "Disable inlining"
	depends on BRCM_DEBUG_OPTIONS
	default n
	help
	  Say Y here if you want to disable inlining.  This can make it easier
	  to step through disassembled code.


config BRCM_IKOS
	bool "Enable IKOS/Veloce emulation"
	depends on BRCM_DEBUG_OPTIONS
	select BRCM_OVERRIDE_RAM_SIZE
	help
	  Configure kernel for IKOS/Veloce emulation.  This has the
	  following effects:

	  Disable any drivers not supported in emulation
	  Prevent UART drivers from changing the divisor set by the bootloader

config BRCM_IKOS_DEBUG
	bool "Extra debug output during boot"
	depends on BRCM_IKOS
	default y
	help
	  Enable additional debugging output on the console by adding
	  "initcall_debug debug" to the kernel command line.  This will slow
	  down the emulation but can help troubleshoot boot failures.


#####################################################################
# Hidden options: MIPS
#####################################################################


config BMIPS3300
	bool
	select SYS_HAS_CPU_MIPS32_R1
	select BRCM_CPU_DIV

config BMIPS4380
	bool
	select SYS_HAS_CPU_MIPS32_R1
	select BRCM_CPU_DIV
	select SYS_SUPPORTS_SMP
	select SYS_SUPPORTS_HOTPLUG_CPU

config BMIPS5000
	bool
	select SYS_HAS_CPU_MIPS32_R1
	select BRCM_CPU_DIV
	select BRCM_ZSCM_L2
	select SYS_SUPPORTS_SMP
	select SYS_SUPPORTS_HOTPLUG_CPU
	select SYS_SUPPORTS_HIGHMEM
	select CPU_SUPPORTS_HIGHMEM


#####################################################################
# Hidden options: UART
#####################################################################


config BRCM_HAS_16550
	bool
	select SERIAL_8250
	select SERIAL_8250_CONSOLE

config BRCM_HAS_UARTA
	bool

config BRCM_HAS_UARTB
	bool

config BRCM_HAS_UARTC
	bool

config BRCM_UARTA_IS_16550
	bool
	select BRCM_HAS_16550
	select BRCM_HAS_UARTA

config BRCM_UARTB_IS_16550
	bool
	select BRCM_HAS_16550
	select BRCM_HAS_UARTB

config BRCM_UARTC_IS_16550
	bool
	select BRCM_HAS_16550
	select BRCM_HAS_UARTC


#####################################################################
# Hidden options: Onchip peripherals/capabilities
#####################################################################


config BRCM_HAS_PCI23
	bool
	select HW_HAS_PCI if !BRCM_IKOS

config BRCM_HAS_PCIE
	bool
	select HW_HAS_PCI if !BRCM_IKOS

config BRCM_HAS_EMAC_0
	bool

config BRCM_HAS_EMAC_1
	bool

config BRCM_HAS_MII
	bool

config BRCM_EMAC_128_DESC
	bool

config BRCM_GENET_V1
	bool

config BRCM_GENET_V2
	bool

config BRCM_GENET_V3
	bool

config BRCM_GENET_VERSION
	int
	default 1 if BRCM_GENET_V1
	default 2 if BRCM_GENET_V2
	default 3 if BRCM_GENET_V3

# standalone or MoCA GENET controller
config BRCM_HAS_GENET
	bool

# select for standalone GENET_0
config BRCM_HAS_GENET_0
	bool
	select BRCM_HAS_GENET

# select for standalone GENET_1
config BRCM_HAS_GENET_1
	bool
	select BRCM_HAS_GENET

# MoCA controller
config BRCM_HAS_MOCA
	bool

# Original MoCA 1.1
config BRCM_HAS_MOCA_11
	bool
	select BRCM_HAS_MOCA

# Cost-reduced MoCA 1.1 with limited TX RAM
config BRCM_HAS_MOCA_11_LITE
	bool
	select BRCM_HAS_MOCA

# MoCA 1.1 with selected 2.0 features
config BRCM_HAS_MOCA_11_PLUS
	bool
	select BRCM_HAS_MOCA

# MoCA 2.0
config BRCM_HAS_MOCA_20
	bool
	select BRCM_HAS_MOCA

config BRCM_MOCA_VERS
	hex
	default 0x1100 if BRCM_HAS_MOCA_11
	default 0x1101 if BRCM_HAS_MOCA_11_LITE
	default 0x1102 if BRCM_HAS_MOCA_11_PLUS
	default 0x2000 if BRCM_HAS_MOCA_20

# select for MoCA on GENET_0
config BRCM_MOCA_ON_GENET_0
	bool
	select BRCM_HAS_GENET_0

# select for MoCA on GENET_1
config BRCM_MOCA_ON_GENET_1
	bool
	select BRCM_HAS_GENET_1

# MoCA is MidRF (default is HighRF)
config BRCM_HAS_MOCA_MIDRF
	bool

config BRCM_HAS_DVD
	bool

config BRCM_HAS_SATA
	bool

config BRCM_HAS_SATA2
	bool
	select BRCM_HAS_SATA
	select HW_HAS_PCI if !BRCM_IKOS

config BRCM_HAS_SATA3
	bool
	select BRCM_HAS_SATA
	select SATA_AHCI_PLATFORM if ATA

config BRCM_SATA_75MHZ_PLL
	bool
	default n

config BRCM_SATA_SINGLE_PORT
	bool
	default n

config BRCM_HAS_NOR
	bool

config BRCM_HAS_NAND_MINOR_0
	bool

config BRCM_HAS_NAND_MINOR_1
	bool

config BRCM_HAS_NAND_MINOR_2
	bool

config BRCM_HAS_NAND_MINOR_3
	bool

config BRCM_HAS_NAND_MINOR_4
	bool

# major versions 0, 1, 2 are unsupported.
config BRCM_HAS_NAND_MAJOR_0
	bool

config BRCM_HAS_NAND_MAJOR_1
	bool

config BRCM_HAS_NAND_MAJOR_2
	bool

config BRCM_HAS_NAND_MAJOR_3
	bool
	select BRCM_HAS_NAND

config BRCM_HAS_NAND_MAJOR_4
	bool
	select BRCM_HAS_NAND

config BRCM_HAS_NAND_MAJOR_5
	bool
	select BRCM_HAS_NAND

config BRCM_HAS_NAND_MAJOR_6
	bool
	select BRCM_HAS_NAND


config BRCMNAND_MAJOR_VERS
	int
	default "6" if BRCM_HAS_NAND_MAJOR_6
	default "5" if BRCM_HAS_NAND_MAJOR_5
	default "4" if BRCM_HAS_NAND_MAJOR_4
	default "3" if BRCM_HAS_NAND_MAJOR_3
	default "2" if BRCM_HAS_NAND_MAJOR_2
	default "1" if BRCM_HAS_NAND_MAJOR_1
	default "0" if BRCM_HAS_NAND_MAJOR_0

config BRCMNAND_MINOR_VERS
	int
	default "4" if BRCM_HAS_NAND_MINOR_4
	default "3" if BRCM_HAS_NAND_MINOR_3
	default "2" if BRCM_HAS_NAND_MINOR_2
	default "1" if BRCM_HAS_NAND_MINOR_1
	default "0" if BRCM_HAS_NAND_MINOR_0

config BRCM_HAS_NAND
	bool

config BRCM_HAS_EDU
	bool

config BRCM_HAS_SPI
	bool

# v2 is not supported on 2.6.31
config BRCM_HAS_BSPI_V2
	bool

config BRCM_HAS_BSPI_V3
	bool
	select BRCM_HAS_SPI

config BRCM_HAS_BSPI_V4
	bool
	select BRCM_HAS_SPI

config BRCM_BSPI_MAJOR_VERS
	int
	default "4" if BRCM_HAS_BSPI_V4
	default "3" if BRCM_HAS_BSPI_V3
	default "2" if BRCM_HAS_BSPI_V2

config BRCM_HAS_WKTMR
	bool

config BRCM_HAS_SDIO
	bool

# V0 hardware is ignored on 2.6.37+
config BRCM_HAS_SDIO_V0
	bool

config BRCM_HAS_SDIO_V1
	bool
	select BRCM_HAS_SDIO

config BRCM_HAS_EMMC
	bool

config BRCM_ZSCM_L2
	bool
	select MIPS_CPU_SCACHE

# PM: adjustable CPU clock divisor
config BRCM_CPU_DIV
	bool

# PM: adjustable CPU clock PLL input frequency
config BRCM_CPU_PLL
	bool

# PM: low power "halt" state with IR wakeup
config BRCM_IRW_HALT
	bool

# MIPS: extended kseg0/kseg1 feature
config BRCM_HAS_XKS01
	bool

# MIPS: eXecute Inhibit (for no-exec stack)
config BRCM_HAS_XI
	bool

# MIPS: 2-core * 2-thread = 4-way SMP (BMIPS5200)
config BRCM_HAS_DUALCORE
	bool

config BRCM_HAS_UPPER_MEMORY
	bool

config BRCM_UPPER_256MB
	bool

config BRCM_UPPER_768MB
	bool

# physical address maps supporting 256MB, 512MB, or 1GB on MEMC0
config BRCM_HAS_1GB_MEMC0
	bool

# physical address map supporting 2GB on MEMC0
config BRCM_HAS_2GB_MEMC0
	bool

# MEMC1 is accessible to the CPU and all Linux peripherals
config BRCM_HAS_1GB_MEMC1
	bool

config BRCM_HAS_ANALOG_DDR_PHY
	bool

config BRCM_HAS_DIGITAL_DDR_PHY
	bool

config BRCM_HAS_STANDBY
	bool

config BRCM_HAS_AON
	bool
	select BRCM_HAS_STANDBY

# no handshake (no bsp_rdy signal) means the SW has to manually set SSPD
config BRCM_PWR_HANDSHAKE
	bool

# 40nm A0; 65nm
config BRCM_PWR_HANDSHAKE_V0
	bool
	select BRCM_PWR_HANDSHAKE

# 40nm B0
config BRCM_PWR_HANDSHAKE_V1
	bool
	select BRCM_PWR_HANDSHAKE

# USB_CAPS controller enumeration - 40nm
config BRCM_HAS_USB_CAPS
	bool

config BRCM_PLATFORM_DEFAULTS
	bool
	select SYS_SUPPORTS_32BIT_KERNEL
	select SYS_SUPPORTS_BIG_ENDIAN
	select SYS_SUPPORTS_LITTLE_ENDIAN
	select SYS_HAS_EARLY_PRINTK
	select SERIAL
	select DMA_NONCOHERENT
	select IRQ_CPU
	select SYS_SUPPORTS_KGDB
	select CEVT_R4K
	select BOOT_RAW
	select CFE
	select WEAK_ORDERING
	select SWAP_IO_SPACE
	# select ARCH_SUSPEND_POSSIBLE


#####################################################################
# Hidden options: Chip shortcuts
#####################################################################


config BCM7125
	bool

config BCM7231
	bool

config BCM7340
	bool

config BCM7344
	bool

config BCM7346
	bool

config BCM7358
	bool

config BCM7360
	bool

config BCM7405
	bool

config BCM7408
	bool

config BCM7420
	bool

config BCM7425
	bool

config BCM7429
	bool

config BCM7435
	bool

config BCM7468
	bool

config BCM7550
	bool

config BCM7552
	bool

endmenu
