# Copyright (c) 2020 Gerson Fernando Budke <nandojve@gmail.com>
# SPDX-License-Identifier: Apache-2.0

if SHIELD_ATMEL_RF2XX || \
	SHIELD_ATMEL_RF2XX_ARDUINO || \
	SHIELD_ATMEL_RF2XX_MIKROBUS || \
	SHIELD_ATMEL_RF2XX_XPRO || \
	SHIELD_ATMEL_RF2XX_LEGACY || \
	SHIELD_ATMEL_RF2XX_XPLAINED

if NETWORKING

config IEEE802154_RF2XX
	default y
	depends on IEEE802154

config NET_CONFIG_IEEE802154_DEV_NAME
	default "RF2XX_0"
	depends on IEEE802154_RF2XX

orsource "boards/*.defconfig"

endif	# NETWORKING

endif	# SHIELD_ATMEL_RF2XX || \
	# SHIELD_ATMEL_RF2XX_ARDUINO || \
	# SHIELD_ATMEL_RF2XX_MIKROBUS || \
	# SHIELD_ATMEL_RF2XX_XPRO || \
	# SHIELD_ATMEL_RF2XX_LEGACY || \
	# SHIELD_ATMEL_RF2XX_XPLAINED
