zephyr/include/zephyr/devicetree/mbox.h
Yuval Peress 53ef68d459 include: Prefix includes to use a scope
Move include paths and add new target_include_directories to support
backwards compatibility:
* /include -> /include/zephyr
  example: <irq.h> -> <zephyr/irq.h>

Issue #41543

Signed-off-by: Yuval Peress <peress@google.com>
2022-04-08 19:03:32 +02:00

101 lines
2.3 KiB
C

/**
* @file
* @brief MBOX Devicetree macro public API header file.
*/
/*
* Copyright (c) 2022 Carlo Caione <ccaione@baylibre.com>
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DEVICETREE_MBOX_H_
#define ZEPHYR_INCLUDE_DEVICETREE_MBOX_H_
#ifdef __cplusplus
extern "C" {
#endif
/**
* @defgroup devicetree-mbox Devicetree MBOX API
* @ingroup devicetree
* @{
*/
/**
* @brief Get the node identifier for the MBOX controller from a mboxes
* property by name
*
* Example devicetree fragment:
*
* mbox1: mbox-controller@... { ... };
*
* n: node {
* mboxes = <&mbox1 8>,
* <&mbox1 9>;
* mbox-names = "tx", "rx";
* };
*
* Example usage:
*
* DT_MBOX_CTLR_BY_NAME(DT_NODELABEL(n), tx) // DT_NODELABEL(mbox1)
* DT_MBOX_CTLR_BY_NAME(DT_NODELABEL(n), rx) // DT_NODELABEL(mbox1)
*
* @param node_id node identifier for a node with a mboxes property
* @param name lowercase-and-underscores name of a mboxes element
* as defined by the node's mbox-names property
*
* @return the node identifier for the MBOX controller in the named element
*
* @see DT_PHANDLE_BY_NAME()
*/
#define DT_MBOX_CTLR_BY_NAME(node_id, name) \
DT_PHANDLE_BY_NAME(node_id, mboxes, name)
/**
* @brief Get a MBOX channel value by name
*
* Example devicetree fragment:
*
* mbox1: mbox@... {
* #mbox-cells = <1>;
* };
*
* n: node {
* mboxes = <&mbox1 1>,
* <&mbox1 6>;
* mbox-names = "tx", "rx";
* };
*
* Bindings fragment for the mbox compatible:
*
* mbox-cells:
* - channel
*
* Example usage:
*
* DT_MBOX_CHANNEL_BY_NAME(DT_NODELABEL(n), tx) // 1
* DT_MBOX_CHANNEL_BY_NAME(DT_NODELABEL(n), rx) // 6
*
* @param node_id node identifier for a node with a mboxes property
* @param name lowercase-and-underscores name of a mboxes element
* as defined by the node's mbox-names property
*
* @return the channel value in the specifier at the named element or 0 if no
* channels are supported
*
* @see DT_PHA_BY_NAME_OR()
*/
#define DT_MBOX_CHANNEL_BY_NAME(node_id, name) \
DT_PHA_BY_NAME_OR(node_id, mboxes, name, channel, 0)
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_INCLUDE_DEVICETREE_MBOX_H_ */