/*
 * Copyright (c) 2020 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @file
 * @brief Zephyr-specific devicetree /chosen properties
 */

#ifndef ZEPHYR_INCLUDE_DEVICETREE_ZEPHYR_H_
#define ZEPHYR_INCLUDE_DEVICETREE_ZEPHYR_H_

/**
 * @defgroup devicetree-zephyr Zephyr's /chosen nodes
 * @ingroup devicetree
 * @{
 */

/*
 * This file is currently deliberately not defining macros for some
 * existing zephyr,foo chosen nodes, such as zephyr,sram, until there
 * are users for them. Feel free to extend it as needed.
 *
 * Getting doxygen to play along with all the dts-specific ifdeffery
 * proved too complex for DT_CHOSEN_ZEPHYR_ENTROPY_LABEL, so we document
 * everything under a DT_DOXYGEN define.
 */

#ifdef DT_DOXYGEN
/**
 * @def DT_CHOSEN_ZEPHYR_ENTROPY_LABEL
 *
 * @brief If there is a chosen node zephyr,entropy property which has
 *        a label property, that property's value. Undefined otherwise.
 */
#define DT_CHOSEN_ZEPHYR_ENTROPY_LABEL ""

/**
 * @def DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL
 *
 * @brief If there is a chosen node zephyr,flash-controller property which has
 *        a label property, that property's value. Undefined otherwise.
 */
#define DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL ""

/**
 * @def DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL
 *
 * @brief If there is a chosen node zephyr,can-primary property which has
 *        a label property, that property's value. Undefined otherwise.
 */
#define DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL ""

#endif /* DT_DOXYGEN */

#if (DT_NODE_HAS_PROP(DT_CHOSEN(zephyr_entropy), label))
#define DT_CHOSEN_ZEPHYR_ENTROPY_LABEL DT_LABEL(DT_CHOSEN(zephyr_entropy))
#endif

#if (DT_NODE_HAS_PROP(DT_CHOSEN(zephyr_flash_controller), label))
#define DT_CHOSEN_ZEPHYR_FLASH_CONTROLLER_LABEL \
	DT_LABEL(DT_CHOSEN(zephyr_flash_controller))
#endif

#if (DT_NODE_HAS_PROP(DT_CHOSEN(zephyr_can_primary), label))
#define DT_CHOSEN_ZEPHYR_CAN_PRIMARY_LABEL \
	DT_LABEL(DT_CHOSEN(zephyr_can_primary))
#endif
/**
 * @}
 */

#endif
