# Distributed Switch Architecture [DSA] configuration options

# Copyright (c) 2020 DENX Software Engineering GmbH
#               Lukasz Majewski <lukma@denx.de>
# SPDX-License-Identifier: Apache-2.0

menuconfig NET_DSA
	bool "Distributed Switch Architecture support"
	depends on ETH_MCUX || ETH_SAM_GMAC
	help
	  Enable Distributed Switch Architecture support. For now it
	  only supports Kinetics ENET driver.

if NET_DSA

config DSA_KSZ8XXX
	bool

config DSA_KSZ8794
	bool "Support for KSZ8794"
	select DSA_KSZ8XXX
	help
	  Add support for KSZ8794 DSA device driver.

config DSA_KSZ8863
	bool "Support for KSZ8863"
	select DSA_KSZ8XXX
	help
	  Add support for KSZ8863 DSA device driver.

config DSA_KSZ_TAIL_TAGGING
	bool "Support for tail tagging"
	depends on DSA_KSZ8794 || DSA_KSZ8863
	help
	  Add support for tail tagging on DSA device.

config DSA_SPI
	bool "Support for PHY SPI interface"
	depends on SPI && (DSA_KSZ8794 || DSA_KSZ8863)
	help
	  Use SPI bus to communicate with PHY

module = NET_DSA
module-dep = NET_LOG
module-str = Log level for DSA
module-help = Enables core DSA code to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

endif # NET_DSA
