config ARCH_BCM
	bool "Broadcom SoC Support"
	depends on ARCH_MULTIPLATFORM
	help
	  This enables support for Broadcom ARM based SoC
          chips

if ARCH_BCM

menu "Broadcom SoC Selection"

config ARCH_BCM_MOBILE
	bool "Broadcom Mobile SoC" if ARCH_MULTI_V7
	depends on MMU
	select ARCH_REQUIRE_GPIOLIB
	select ARM_ERRATA_754322
	select ARM_ERRATA_764369 if SMP
	select ARM_GIC
	select CPU_V7
	select CLKSRC_OF
	select GENERIC_CLOCKEVENTS
	select GENERIC_TIME
	select GPIO_BCM_KONA
	select SPARSE_IRQ
	select TICK_ONESHOT
	select CACHE_L2X0
	select HAVE_ARM_ARCH_TIMER
	select PINCTRL
	help
	  This enables support for systems based on Broadcom mobile SoCs.
	  It currently supports the 'BCM281XX' family, which includes
	  BCM11130, BCM11140, BCM11351, BCM28145 and
	  BCM28155 variants.

config ARCH_BRCMSTB
	bool "Broadcom BCM7XXX based boards" if ARCH_MULTI_V7
	depends on MMU
	select ARM_GIC
	select MIGHT_HAVE_PCI
	select HAVE_SMP
	select HAVE_ARM_ARCH_TIMER
	select POWER_RESET_BRCMSTB
	select BRCMSTB
	select ARCH_HAS_OPP
	select ARCH_HAS_CPUFREQ
	select PM_OPP if PM
	select ARM_ERRATA_798181 if SMP
	select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
	select GENERIC_IRQ_CHIP
	help
	  Say Y if you intend to run the kernel on a Broadcom ARM-based STB
	  chipset.

	  This enables support for Broadcom ARM-based set-top box chipsets,
	  including the 7445 family of chips.

endmenu

endif

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

config BCM3390A0
	bool "3390 Ax"
	select BCM7145
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS

config BCM7145A0
	bool "7145 Ax"
	select BCM7145
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_USE_MEGA_BARRIER

config BCM7145B0
	bool "7145 Bx"
	select BCM7145
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS

config BCM7250B0
	bool "7250 Bx"
	select BCM7250
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_XPT_HASH if PM

config BCM7364A0
	bool "7364 Ax"
	select BCM7364
	select BRCM_GENET_V4
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_XPT_HASH if PM

config BCM7366B0
	bool "7366 Bx"
	select BCM7366
	select BRCM_GENET_V4
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_XPT_HASH if PM

config BCM7366C0
	bool "7366 Cx"
	select BCM7366
	select BRCM_GENET_V4
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_XPT_HASH if PM

config BCM74371A0
	bool "74371 Ax"
	select BCM74371
	select BRCM_GENET_V4
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS

config BCM7439A0
	bool "7439 Ax"
	select BCM7439
	select BRCM_GENET_V4
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_0
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_USE_MEGA_BARRIER

config BCM7439B0
	bool "7439 Bx"
	select BCM7439
	select BRCM_GENET_V4
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_XPT_HASH if PM

config BCM7445D0
	bool "7445 Dx"
	select BCM7445
	select BRCM_GENET_V4
	select BRCM_HAS_MOCA_20_GEN23
	select BRCM_HAS_NAND_MAJOR_7
	select BRCM_HAS_NAND_MINOR_1
	select BRCM_HAS_BSPI_V4
	select BRCM_MSPI_64B_WORDS
	select BRCMSTB_XPT_HASH if PM

endchoice

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

config BCMGENET
	tristate "Broadcom STB 10/100/1000 MAC/PHY support"
	depends on ETHERNET && BRCMSTB
	default y
	select CRC32
	select MII
	select PHYLIB
	select FIXED_PHY
	select BCM7XXX_PHY
	select BCM531XX_PHY
	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.

config BRCM_MOCA
	tristate "Broadcom MoCA character driver"
	depends on BRCMSTB && (BRCM_HAS_GENET || BRCM_HAS_MOCA_20_GEN21 || \
		BRCM_HAS_MOCA_20_GEN22 || BRCM_HAS_MOCA_20_GEN23) && !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 BRCM_USB
	tristate "Broadcom STB USB support"
	depends on BRCMSTB && USB
	select BRCM_USB_OHCI if USB_OHCI_HCD
	select BRCM_USB_EHCI if USB_EHCI_HCD
	select BRCM_USB_XHCI if USB_XHCI_HCD
	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 MTD_NAND_BRCMSTB
	tristate "Broadcom NAND controller support"
	default y
	depends on OF && OF_MTD
	select MTD_NAND
	help
	  Say Y to enable the onchip NAND controller.

config BRCM_SDIO
	tristate "Broadcom SDHCI (SDIO) support"
	depends on BRCMSTB && MMC_SDHCI
	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.

#####################################################################
# Hidden options
#####################################################################

config BRCMSTB
	bool

config BCM7145
	bool

config BCM7250
	bool

config BCM7364
	bool

config BCM7366
	bool

config BCM74371
	bool

config BCM7439
	bool

config BCM7445
	bool

config BRCM_GENET_V3
	bool

config BRCM_GENET_V4
	bool

config BRCM_GENET_VERSION
	int
	default 3 if BRCM_GENET_V3
	default 4 if BRCM_GENET_V4

# MoCA controller
config BRCM_HAS_MOCA
	bool

# Original MoCA 1.1 (gen1 firmware)
config BRCM_HAS_MOCA_11
	bool
	select BRCM_HAS_MOCA

# Cost-reduced MoCA 1.1 with limited TX RAM (gen1 firmware)
config BRCM_HAS_MOCA_11_LITE
	bool
	select BRCM_HAS_MOCA

# MoCA 1.1 with selected 2.0 features (gen2 firmware)
config BRCM_HAS_MOCA_11_PLUS
	bool
	select BRCM_HAS_MOCA

# MoCA 2.0 (gen3 firmware for 1.1, gen2x firmware for 2.0)
config BRCM_HAS_MOCA_20_GEN21
	bool
	select BRCM_HAS_MOCA

config BRCM_HAS_MOCA_20_GEN22
	bool
	select BRCM_HAS_MOCA

config BRCM_HAS_MOCA_20_GEN23
	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 0x2001 if BRCM_HAS_MOCA_20_GEN21
	default 0x2002 if BRCM_HAS_MOCA_20_GEN22
	default 0x2003 if BRCM_HAS_MOCA_20_GEN23

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

config BRCM_HAS_NAND_MAJOR_5
	bool
	select BRCM_HAS_NAND

config BRCM_HAS_NAND_MAJOR_6
	bool
	select BRCM_HAS_NAND

config BRCM_HAS_NAND_MAJOR_7
	bool
	select BRCM_HAS_NAND

config BRCMNAND_MAJOR_VERS
	int
	default "7" if BRCM_HAS_NAND_MAJOR_7
	default "6" if BRCM_HAS_NAND_MAJOR_6
	default "5" if BRCM_HAS_NAND_MAJOR_5

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

# For MSPI prior to v1.5 (first version with a revision register)
config BRCM_MSPI_LEGACY
	bool

# MSPI can transfer either 64b or 8b per slot
config BRCM_MSPI_64B_WORDS
	bool

# Apply the mega-barrier prior to DMA operations to workaround
# issue noted in HW7445-1301 and derivatives.
config BRCMSTB_USE_MEGA_BARRIER
	bool
	select CMA

# Perform memory hashing before entering S3, using XPT DMA
config BRCMSTB_XPT_HASH
	bool

config BRCM_USB_OHCI
       tristate

config BRCM_USB_EHCI
       tristate

config BRCM_USB_XHCI
       tristate
