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 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_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 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 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
