#
#    Copyright (c) 2024 Project CHIP Authors
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
#

#### Radio core selection
config NRF_DEFAULT_IPC_RADIO
	default y

# Enable IEEE802.15.4 serialization to network core
config NETCORE_IPC_RADIO_IEEE802154
	default y if SOC_SERIES_NRF53

# Enable Bluetooth serialization to network core
config NETCORE_IPC_RADIO_BT_HCI_IPC
	default y if SOC_SERIES_NRF53

source "${ZEPHYR_BASE}/share/sysbuild/Kconfig"
