2020-05-07 09:54:29 +08:00
|
|
|
/**
|
|
|
|
* @file
|
|
|
|
* @brief Flash Devicetree macro public API header file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (c) 2020, Linaro Ltd.
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef ZEPHYR_INCLUDE_DEVICETREE_FIXED_PARTITION_H_
|
|
|
|
#define ZEPHYR_INCLUDE_DEVICETREE_FIXED_PARTITION_H_
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @defgroup devicetree-fixed-partition Devicetree Fixed Partition API
|
|
|
|
* @ingroup devicetree
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
2020-05-26 06:37:25 +08:00
|
|
|
* @brief Get a node identifier for a fixed partition with
|
|
|
|
* a given label property
|
|
|
|
*
|
|
|
|
* Example devicetree fragment:
|
|
|
|
*
|
|
|
|
* flash@... {
|
|
|
|
* partitions {
|
|
|
|
* compatible = "fixed-partitions";
|
|
|
|
* boot_partition: partition@0 {
|
|
|
|
* label = "mcuboot";
|
|
|
|
* };
|
|
|
|
* slot0_partition: partition@c000 {
|
|
|
|
* label = "image-0";
|
|
|
|
* };
|
|
|
|
* ...
|
|
|
|
* };
|
|
|
|
* };
|
|
|
|
*
|
|
|
|
* Example usage:
|
|
|
|
*
|
|
|
|
* DT_NODE_BY_FIXED_PARTITION_LABEL(mcuboot) // node identifier for boot_partition
|
|
|
|
* DT_NODE_BY_FIXED_PARTITION_LABEL(image_0) // node identifier for slot0_partition
|
|
|
|
*
|
|
|
|
* @param label lowercase-and-underscores label property value
|
|
|
|
* @return a node identifier for the partition with that label property
|
2020-05-07 09:54:29 +08:00
|
|
|
*/
|
|
|
|
#define DT_NODE_BY_FIXED_PARTITION_LABEL(label) \
|
|
|
|
DT_CAT(DT_COMPAT_fixed_partitions_LABEL_, label)
|
|
|
|
|
|
|
|
/**
|
2020-05-26 06:37:25 +08:00
|
|
|
* @brief Test if a fixed partition with a given label property exists
|
|
|
|
* @param label lowercase-and-underscores label property value
|
|
|
|
* @return 1 if any "fixed-partitions" child node has the given label,
|
2020-05-07 09:54:29 +08:00
|
|
|
* 0 otherwise.
|
|
|
|
*/
|
|
|
|
#define DT_HAS_FIXED_PARTITION_LABEL(label) \
|
|
|
|
IS_ENABLED(DT_COMPAT_fixed_partitions_LABEL_##label##_EXISTS)
|
|
|
|
|
|
|
|
/**
|
2020-05-26 06:37:25 +08:00
|
|
|
* @brief Get a numeric identifier for a fixed partition
|
|
|
|
* @param node_id node identifier for a fixed-partitions child node
|
|
|
|
* @return the partition's ID, a unique zero-based index number
|
2020-05-07 09:54:29 +08:00
|
|
|
*/
|
|
|
|
#define DT_FIXED_PARTITION_ID(node_id) DT_CAT(node_id, _PARTITION_ID)
|
|
|
|
|
2020-11-01 04:43:34 +08:00
|
|
|
/**
|
|
|
|
* @brief Get the node identifier of the flash device for a partition
|
|
|
|
* @param node_id node identifier for a fixed-partitions child node
|
|
|
|
* @return the node identifier of the memory technology device that
|
|
|
|
* contains the fixed-partitions node.
|
|
|
|
*/
|
|
|
|
#define DT_MTD_FROM_FIXED_PARTITION(node_id) \
|
|
|
|
COND_CODE_1(DT_NODE_HAS_COMPAT(DT_GPARENT(node_id), soc_nv_flash), \
|
|
|
|
(DT_PARENT(DT_GPARENT(node_id))), \
|
|
|
|
(DT_GPARENT(node_id)))
|
|
|
|
|
2020-05-07 09:54:29 +08:00
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* ZEPHYR_INCLUDE_DEVICETREE_FIXED_PARTITION_H_ */
|