# SPDX-License-Identifier: GPL-2.0-only
menu "Platform selection"

config ARCH_ACTIONS
	bool "Actions Semi Platforms"
	select OWL_TIMER
	select PINCTRL
	help
	  This enables support for the Actions Semiconductor S900 SoC family.

config ARCH_AIROHA
	bool "Airoha SoC Support"
	select ARM_PSCI
	select HAVE_ARM_ARCH_TIMER
	help
	  This enables support for the ARM64 based Airoha SoCs.

config ARCH_SUNXI
	bool "Allwinner sunxi 64-bit SoC Family"
	select ARCH_HAS_RESET_CONTROLLER
	select PINCTRL
	select RESET_CONTROLLER
	select SUN4I_TIMER
	select SUN6I_R_INTC
	select SUNXI_NMI_INTC
	help
	  This enables support for Allwinner sunxi based SoCs like the A64.

config ARCH_ALPINE
	bool "Annapurna Labs Alpine platform"
	select ALPINE_MSI if PCI
	help
	  This enables support for the Annapurna Labs Alpine
	  Soc family.

config ARCH_APPLE
	bool "Apple Silicon SoC family"
	select APPLE_AIC
	help
	  This enables support for Apple's in-house ARM SoC family, such
	  as the Apple M1.

config ARCH_ARTPEC
	bool "Axis Communications ARTPEC SoC Family"
	depends on ARCH_EXYNOS
	select ARM_GIC
	help
	   This enables support for the ARMv8 based ARTPEC SoC Family.

config ARCH_AXIADO
	bool "Axiado SoC Family"
	select GPIOLIB
	help
	  This enables support for Axiado SoC family like AX3000

menuconfig ARCH_BCM
	bool "Broadcom SoC Support"

if ARCH_BCM

config ARCH_BCM2835
	bool "Broadcom BCM2835 family"
	select TIMER_OF
	select GPIOLIB
	select MFD_CORE
	select PINCTRL
	select PINCTRL_BCM2835
	select ARM_AMBA
	select ARM_GIC
	select ARM_TIMER_SP804
	help
	  This enables support for the Broadcom BCM2837 and BCM2711 SoC.
	  These SoCs are used in the Raspberry Pi 3 and 4 devices.

config ARCH_BCM_IPROC
	bool "Broadcom iProc SoC Family"
	select COMMON_CLK_IPROC
	select GPIOLIB
	select PINCTRL
	help
	  This enables support for Broadcom iProc based SoCs

config ARCH_BCMBCA
	bool "Broadcom Broadband Carrier Access (BCA) origin SoC"
	select GPIOLIB
	help
	  Say Y if you intend to run the kernel on a Broadcom Broadband ARM-based
	  BCA chipset.

	  This enables support for Broadcom BCA ARM-based broadband chipsets,
	  including the DSL, PON and Wireless family of chips.

config ARCH_BRCMSTB
	bool "Broadcom Set-Top-Box SoCs"
	select ARCH_HAS_RESET_CONTROLLER
	select GENERIC_IRQ_CHIP
	select PINCTRL
	help
	  This enables support for Broadcom's ARMv8 Set Top Box SoCs

endif

config ARCH_BERLIN
	bool "Marvell Berlin SoC Family"
	select DW_APB_ICTL
	select DW_APB_TIMER_OF
	select GPIOLIB
	select PINCTRL
	help
	  This enables support for Marvell Berlin SoC Family

config ARCH_BITMAIN
	bool "Bitmain SoC Platforms"
	help
	  This enables support for the Bitmain SoC Family.

config ARCH_BLAIZE
	bool "Blaize SoC Platforms"
	help
	  This enables support for the Blaize SoC family

config ARCH_BST
	bool "Black Sesame Technologies SoC Family"
	help
	  This enables support for Black Sesame Technologies (BST) SoC family.
	  BST produces automotive-grade system-on-chips for intelligent driving,
	  focusing on computer vision and AI capabilities. The BST C1200 family
	  includes SoCs for ADAS and autonomous driving applications.

config ARCH_CIX
	bool "Cixtech SoC family"
	help
	  This enables support for the Cixtech SoC family,
	  like P1(sky1).

config ARCH_EXYNOS
	bool "Samsung Exynos SoC family"
	select COMMON_CLK_SAMSUNG
	select CLKSRC_EXYNOS_MCT
	select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
	select EXYNOS_PMU
	select PINCTRL
	select PINCTRL_EXYNOS
	select PM_GENERIC_DOMAINS if PM
	select SOC_SAMSUNG
	help
	  This enables support for ARMv8 based Samsung Exynos SoC family.

config ARCH_K3
	bool "Texas Instruments Inc. K3 multicore SoC architecture"
	select SOC_TI
	select TI_K3_SOCINFO
	help
	  This enables support for Texas Instruments' K3 multicore SoC
	  architecture.

config ARCH_LG1K
	bool "LG Electronics LG1K SoC Family"
	help
	  This enables support for LG Electronics LG1K SoC Family

config ARCH_HISI
	bool "Hisilicon SoC Family"
	select ARM_TIMER_SP804
	select HISILICON_IRQ_MBIGEN if PCI
	select PINCTRL
	help
	  This enables support for Hisilicon ARMv8 SoC family

config ARCH_KEEMBAY
	bool "Keem Bay SoC"
	help
	  This enables support for Intel Movidius SoC code-named Keem Bay.

config ARCH_MEDIATEK
	bool "MediaTek SoC Family"
	select ARM_GIC
	select PINCTRL
	select MTK_TIMER
	help
	  This enables support for MediaTek MT27xx, MT65xx, MT76xx
	  & MT81xx ARMv8 SoCs

config ARCH_MESON
	bool "Amlogic Platforms"
	help
	  This enables support for the arm64 based Amlogic SoCs
	  such as the s905, S905X/D, S912, A113X/D or S905X/D2

menu "Microchip SoC support"

config ARCH_MICROCHIP
	bool

config ARCH_LAN969X
	bool "Microchip LAN969X SoC family"
	select PINCTRL
	select DW_APB_TIMER_OF
	select ARCH_MICROCHIP
	help
	  This enables support for the Microchip LAN969X ARMv8-based
	  SoC family of TSN-capable gigabit switches.

	  The LAN969X Ethernet switch family provides a rich set of
	  switching features such as advanced TCAM-based VLAN and QoS
	  processing enabling delivery of differentiated services, and
	  security through TCAM-based frame processing using versatile
	  content aware processor (VCAP).

config ARCH_SPARX5
	bool "Microchip Sparx5 SoC family"
	select PINCTRL
	select DW_APB_TIMER_OF
	select ARCH_MICROCHIP
	help
	  This enables support for the Microchip Sparx5 ARMv8-based
	  SoC family of TSN-capable gigabit switches.

	  The SparX-5 Ethernet switch family provides a rich set of
	  switching features such as advanced TCAM-based VLAN and QoS
	  processing enabling delivery of differentiated services, and
	  security through TCAM-based frame processing using versatile
	  content aware processor (VCAP).

endmenu

config ARCH_MMP
	bool "Marvell MMP SoC Family"
	select PINCTRL
	select PINCTRL_SINGLE
	help
	  This enables support for Marvell MMP SoC family, currently
	  supporting PXA1908 aka IAP140.

config ARCH_MVEBU
	bool "Marvell EBU SoC Family"
	select ARMADA_AP806_SYSCON
	select ARMADA_CP110_SYSCON
	select ARMADA_37XX_CLK
	select GPIOLIB
	select GPIOLIB_IRQCHIP
	select MVEBU_GICP
	select MVEBU_ICU
	select MVEBU_ODMI
	select MVEBU_PIC
	select MVEBU_SEI
	select OF_GPIO
	select PINCTRL
	select PINCTRL_ARMADA_37XX
	select PINCTRL_ARMADA_AP806
	select PINCTRL_ARMADA_CP110
	select PINCTRL_AC5
	help
	  This enables support for Marvell EBU family, including:
	   - Armada 3700 SoC Family
	   - Armada 7K SoC Family
	   - Armada 8K SoC Family
	   - 98DX2530 SoC Family

menuconfig ARCH_NXP
	bool "NXP SoC support"

if ARCH_NXP

config ARCH_LAYERSCAPE
	bool "Freescale Layerscape SoC family"
	help
	  This enables support for the Freescale Layerscape SoC family.

config ARCH_MXC
	bool "NXP i.MX SoC family"
	select ARM64_ERRATUM_843419
	select ARM64_ERRATUM_845719 if COMPAT
	select IMX_GPCV2
	select IMX_GPCV2_PM_DOMAINS
	select PM
	select PM_GENERIC_DOMAINS
	select SOC_BUS
	select TIMER_IMX_SYS_CTR
	help
	  This enables support for the ARMv8 based SoCs in the
	  NXP i.MX family.

config ARCH_S32
	bool "NXP S32 SoC Family"
	help
	  This enables support for the NXP S32 family of processors.

endif

config ARCH_MA35
	bool "Nuvoton MA35 Architecture"
	select GPIOLIB
	select PINCTRL
	select RESET_CONTROLLER
	help
	  This enables support for the ARMv8 based Nuvoton MA35 series SoCs.

config ARCH_NPCM
	bool "Nuvoton NPCM Architecture"
	select PINCTRL
	select GPIOLIB
	select NPCM7XX_TIMER
	select RESET_CONTROLLER
	select MFD_SYSCON
	help
	  General support for NPCM8xx BMC (Arbel).
	  Nuvoton NPCM8xx BMC based on the Cortex A35.

config ARCH_PENSANDO
	bool "AMD Pensando Platforms"
	help
	  This enables support for the ARMv8 based AMD Pensando SoC
	  family to include the Elba SoC.

	  AMD Pensando SoCs support a range of Distributed Services
	  Cards in PCIe format installed into servers.  The Elba
	  SoC includes 16 Cortex A-72 CPU cores, 144 P4-programmable
	  cores for a minimal latency/jitter datapath, and network
	  interfaces up to 200 Gb/s.

config ARCH_QCOM
	bool "Qualcomm Platforms"
	select GPIOLIB
	select PINCTRL
	select HAVE_PWRCTRL if PCI
	select HAVE_SHARED_GPIOS
	help
	  This enables support for the ARMv8 based Qualcomm chipsets.

config ARCH_REALTEK
	bool "Realtek Platforms"
	select RESET_CONTROLLER
	help
	  This enables support for the ARMv8 based Realtek chipsets,
	  like the RTD1295.

config ARCH_RENESAS
	bool "Renesas SoC Platforms"
	help
	  This enables support for the ARMv8 based Renesas SoCs.

config ARCH_ROCKCHIP
	bool "Rockchip Platforms"
	select ARCH_HAS_RESET_CONTROLLER
	select PINCTRL
	select PM
	select ROCKCHIP_TIMER
	help
	  This enables support for the ARMv8 based Rockchip chipsets,
	  like the RK3368.

config ARCH_SEATTLE
	bool "AMD Seattle SoC Family"
	help
	  This enables support for AMD Seattle SOC Family

config ARCH_INTEL_SOCFPGA
	bool "Intel's SoCFPGA ARMv8 Families"
	help
	  This enables support for Intel's SoCFPGA ARMv8 families:
	  Stratix 10 (ex. Altera), Stratix10 Software Virtual Platform,
	  Agilex and eASIC N5X.

config ARCH_SOPHGO
	bool "Sophgo SoCs"
	select ARCH_HAS_RESET_CONTROLLER
	help
	  This enables support for Sophgo SoC platform hardware.

config ARCH_STM32
	bool "STMicroelectronics STM32 SoC Family"
	select GPIOLIB
	select PINCTRL
	select ARM_SMC_MBOX
	select ARM_SCMI_PROTOCOL
	select REGULATOR
	select REGULATOR_ARM_SCMI
	select COMMON_CLK_SCMI
	select STM32_FIREWALL
	help
	  This enables support for ARMv8 based STMicroelectronics
	  STM32 family, including:
		- STM32MP21:
			- STM32MP211, STM32MP213, STM32MP215.
		- STM32MP23:
			- STM32MP231, STM32MP233, STM32MP235.
		- STM32MP25:
			- STM32MP251, STM32MP253, STM32MP255 and STM32MP257.

config ARCH_SYNQUACER
	bool "Socionext SynQuacer SoC Family"
	select IRQ_FASTEOI_HIERARCHY_HANDLERS

config ARCH_TEGRA
	bool "NVIDIA Tegra SoC Family"
	select ARCH_HAS_RESET_CONTROLLER
	select ARM_GIC_PM
	select CLKSRC_MMIO
	select TIMER_OF
	select GPIOLIB
	select PINCTRL
	select PM
	select PM_GENERIC_DOMAINS
	select RESET_CONTROLLER
	help
	  This enables support for the NVIDIA Tegra SoC family.

config ARCH_TESLA_FSD
	bool "Tesla platform"
	depends on ARCH_EXYNOS
	help
	  Support for ARMv8 based Tesla platforms.

config ARCH_SPRD
	bool "Spreadtrum SoC platform"
	help
	  Support for Spreadtrum ARM based SoCs

config ARCH_THUNDER
	bool "Cavium Inc. Thunder SoC Family"
	help
	  This enables support for Cavium's Thunder Family of SoCs.

config ARCH_THUNDER2
	bool "Cavium ThunderX2 Server Processors"
	select GPIOLIB
	help
	  This enables support for Cavium's ThunderX2 CN99XX family of
	  server processors.

config ARCH_UNIPHIER
	bool "Socionext UniPhier SoC Family"
	select ARCH_HAS_RESET_CONTROLLER
	select PINCTRL
	select RESET_CONTROLLER
	help
	  This enables support for Socionext UniPhier SoC family.

config ARCH_VEXPRESS
	bool "ARM Ltd Platforms"
	select GPIOLIB
	select PM
	select PM_GENERIC_DOMAINS
	help
	  This enables support for the ARM Ltd Platforms.

config ARCH_VISCONTI
	bool "Toshiba Visconti SoC Family"
	select PINCTRL
	select PINCTRL_VISCONTI
	help
	  This enables support for Toshiba Visconti SoCs Family.

config ARCH_XGENE
	bool "AppliedMicro X-Gene SOC Family"
	help
	  This enables support for AppliedMicro X-Gene SOC Family

config ARCH_ZYNQMP
	bool "Xilinx ZynqMP Family"
	help
	  This enables support for Xilinx ZynqMP Family

endmenu # "Platform selection"
