menuconfig ARCH_BCM
	bool "Broadcom SoC Support" if ARCH_MULTI_V6_V7
	help
	  This enables support for Broadcom ARM based SoC chips

if ARCH_BCM

comment "IPROC architected SoCs"

config ARCH_BCM_IPROC
	bool
	select ARM_GIC
	select CACHE_L2X0
	select HAVE_ARM_SCU if SMP
	select HAVE_ARM_TWD if SMP
	select ARM_GLOBAL_TIMER

	select CLKSRC_MMIO
	select ARCH_REQUIRE_GPIOLIB
	select ARM_AMBA
	select PINCTRL
	help
	  This enables support for systems based on Broadcom IPROC architected SoCs.
	  The IPROC complex contains one or more ARM CPUs along with common
	  core periperals. Application specific SoCs are created by adding a
	  uArchitecture containing peripherals outside of the IPROC complex.
	  Currently supported SoCs are Cygnus.

config ARCH_BCM_CYGNUS
	bool "Broadcom Cygnus Support" if ARCH_MULTI_V7
	select ARCH_BCM_IPROC
	help
	  Enable support for the Cygnus family,
	  which includes the following variants:
	  BCM11300, BCM11320, BCM11350, BCM11360,
	  BCM58300, BCM58302, BCM58303, BCM58305.

config ARCH_BCM_5301X
	bool "Broadcom BCM470X / BCM5301X ARM SoC" if ARCH_MULTI_V7
	select ARCH_BCM_IPROC
	help
	  Support for Broadcom BCM470X and BCM5301X SoCs with ARM CPU cores.

	  This is a network SoC line mostly used in home routers and
	  wifi access points, it's internal name is Northstar.
	  This inclused the following SoC: BCM53010, BCM53011, BCM53012,
	  BCM53014, BCM53015, BCM53016, BCM53017, BCM53018, BCM4707,
	  BCM4708 and BCM4709.

	  Do not confuse this with the BCM4760 which is a totally
	  different SoC or with the older BCM47XX and BCM53XX based
	  network SoC using a MIPS CPU, they are supported by arch/mips/bcm47xx

comment "KONA architected SoCs"

config ARCH_BCM_MOBILE
	bool
	select ARCH_REQUIRE_GPIOLIB
	select ARM_ERRATA_754322
	select ARM_ERRATA_775420
	select ARM_GIC
	select GPIO_BCM_KONA
	select TICK_ONESHOT
	select HAVE_ARM_ARCH_TIMER
	select PINCTRL
	select ARCH_BCM_MOBILE_SMP if SMP
	help
	  This enables support for systems based on Broadcom mobile SoCs.

config ARCH_BCM_281XX
	bool "Broadcom BCM281XX SoC family"
	select ARCH_BCM_MOBILE
	select HAVE_SMP
	help
	  Enable support for the BCM281XX family, which includes
	  BCM11130, BCM11140, BCM11351, BCM28145 and BCM28155
	  variants.

config ARCH_BCM_21664
	bool "Broadcom BCM21664 SoC family"
	select ARCH_BCM_MOBILE
	select HAVE_SMP
	help
	  Enable support for the BCM21664 family, which includes
	  BCM21663 and BCM21664 variants.

config ARCH_BCM_MOBILE_L2_CACHE
	bool "Broadcom mobile SoC level 2 cache support"
	depends on ARCH_BCM_MOBILE
	default y
	select CACHE_L2X0
	select ARCH_BCM_MOBILE_SMC

config ARCH_BCM_MOBILE_SMC
	bool
	depends on ARCH_BCM_MOBILE

config ARCH_BCM_MOBILE_SMP
	bool
	depends on ARCH_BCM_MOBILE
	select HAVE_ARM_SCU
	select ARM_ERRATA_764369
	help
	  SMP support for the BCM281XX and BCM21664 SoC families.
	  Provided as an option so SMP support for SoCs of this type
	  can be disabled for an SMP-enabled kernel.

comment "Other Architectures"

config ARCH_BCM2835
	bool "Broadcom BCM2835 family" if ARCH_MULTI_V6
	select ARCH_REQUIRE_GPIOLIB
	select ARM_AMBA
	select ARM_ERRATA_411920
	select ARM_TIMER_SP804
	select CLKSRC_OF
	select PINCTRL
	select PINCTRL_BCM2835
	help
	  This enables support for the Broadcom BCM2835 SoC. This SoC is
	  used in the Raspberry Pi and Roku 2 devices.

config ARCH_BCM_63XX
	bool "Broadcom BCM63xx DSL SoC" if ARCH_MULTI_V7
	depends on MMU
	select ARM_ERRATA_754322
	select ARM_ERRATA_764369 if SMP
	select ARM_GIC
	select ARM_GLOBAL_TIMER
	select CACHE_L2X0
	select HAVE_ARM_ARCH_TIMER
	select HAVE_ARM_TWD if SMP
	select HAVE_ARM_SCU if SMP
	select HAVE_SMP
	help
	  This enables support for systems based on Broadcom DSL SoCs.
	  It currently supports the 'BCM63XX' ARM-based family, which includes
	  the BCM63138 variant.

config ARCH_BRCMSTB
	bool "Broadcom BCM7XXX based boards" if ARCH_MULTI_V7
	select ARM_GIC
	select HAVE_ARM_ARCH_TIMER
	select BRCMSTB_GISB_ARB
	select BRCMSTB_L2_IRQ
	select BCM7120_L2_IRQ
	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.

endif
