# Copyright (c) 2019 Synopsys, Inc. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

config SOC_ARC_EMSDP
	bool

config SOC_EMSDP_EM4
	bool
	select SOC_ARC_EMSDP
	help
	  Synopsys ARC EM4 of EMSDP

config SOC_EMSDP_EM5D
	bool
	select SOC_ARC_EMSDP
	help
	  Synopsys ARC EM5D of EMSDP

config SOC_EMSDP_EM6
	bool
	select SOC_ARC_EMSDP
	help
	  Synopsys ARC EM6 of EMSDP

config SOC_EMSDP_EM7D
	bool
	select SOC_ARC_EMSDP
	help
	  Synopsys ARC EM7D of EMSDP

config SOC_EMSDP_EM7D_ESP
	bool
	select SOC_ARC_EMSDP
	help
	  Synopsys ARC EM7D+ESP of EMSDP

config SOC_EMSDP_EM9D
	bool
	select SOC_ARC_EMSDP
	help
	  Synopsys ARC EM9D of EMSDP

config SOC_EMSDP_EM11D
	bool
	select SOC_ARC_EMSDP
	help
	  Synopsys ARC EM11D of EMSDP

config SOC_SERIES
	default "emsdp" if SOC_ARC_EMSDP

config SOC
	default "emsdp_em4" if SOC_EMSDP_EM4
	default "emsdp_em5d" if SOC_EMSDP_EM5D
	default "emsdp_em6" if SOC_EMSDP_EM6
	default "emsdp_em7d" if SOC_EMSDP_EM7D
	default "emsdp_em7d_esp" if SOC_EMSDP_EM7D_ESP
	default "emsdp_em9d" if SOC_EMSDP_EM9D
	default "emsdp_em11d" if SOC_EMSDP_EM11D
