zephyr/soc/ite/ec/common/soc_dt.h

90 lines
2.7 KiB
C

/*
* Copyright (c) 2021 ITE Corporation. All Rights Reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _ITE_IT8XXX2_SOC_DT_H_
#define _ITE_IT8XXX2_SOC_DT_H_
/*
* For it8xxx2 wake-up controller (WUC)
*/
#define IT8XXX2_DEV_WUC(idx, inst) \
DEVICE_DT_GET(DT_PHANDLE(IT8XXX2_DT_INST_WUCCTRL(inst, idx), wucs))
#define IT8XXX2_DEV_WUC_MASK(idx, inst) \
DT_PHA(IT8XXX2_DT_INST_WUCCTRL(inst, idx), wucs, mask)
/**
* @brief For it8xxx2, get a node identifier from a wucctrl property
* for a DT_DRV_COMPAT instance
*
* @param inst instance number
* @param idx index in the wucctrl property
* @return node identifier for the phandle at index idx in the wucctrl
* property of that DT_DRV_COMPAT instance
*/
#define IT8XXX2_DT_INST_WUCCTRL(inst, idx) \
DT_INST_PHANDLE_BY_IDX(inst, wucctrl, idx)
/**
* @brief For it8xxx2, construct wuc map structure in LISTIFY extension
*
* @param idx index in LISTIFY extension
* @param inst instance number for compatible defined in DT_DRV_COMPAT
* @return a structure of *_wuc_map_cfg
*/
#define IT8XXX2_DT_WUC_ITEMS_FUNC(idx, inst) \
{ \
.wucs = IT8XXX2_DEV_WUC(idx, inst), \
.mask = IT8XXX2_DEV_WUC_MASK(idx, inst), \
}
/**
* @brief For it8xxx2, get the length of wucctrl property which
* type is 'phandle-array' for a DT_DRV_COMPAT instance
*
* @param inst instance number
* @return length of wucctrl property which type is 'phandle-array'
*/
#define IT8XXX2_DT_INST_WUCCTRL_LEN(inst) \
DT_INST_PROP_LEN(inst, wucctrl)
/**
* @brief For it8xxx2, construct an array of it8xxx2 wuc map structure
* with compatible defined in DT_DRV_COMPAT by LISTIFY func
*
* @param inst instance number for compatible defined in DT_DRV_COMPAT
* @return an array of *_wuc_map_cfg structure
*/
#define IT8XXX2_DT_WUC_ITEMS_LIST(inst) { \
LISTIFY(IT8XXX2_DT_INST_WUCCTRL_LEN(inst), \
IT8XXX2_DT_WUC_ITEMS_FUNC, (,), \
inst) \
}
/**
* @brief Macro function to construct it8xxx2 GPIO IRQ in LISTIFY extension.
*
* @param idx index in LISTIFY extension.
* @param inst instance number for compatible defined in DT_DRV_COMPAT.
* @return an IRQ number of GPIO.
*/
#define IT8XXX2_DT_GPIO_IRQ_FUNC(idx, inst) \
DT_INST_IRQ_BY_IDX(inst, idx, irq)
/**
* @brief Macro function to construct a list of it8xxx2 GPIO IRQ number
* with compatible defined in DT_DRV_COMPAT by LISTIFY func.
*
* @param inst instance number for compatible defined in DT_DRV_COMPAT.
* @return an array of GPIO IRQ number.
*/
#define IT8XXX2_DT_GPIO_IRQ_LIST(inst) { \
LISTIFY(DT_INST_PROP(inst, ngpios), \
IT8XXX2_DT_GPIO_IRQ_FUNC, (,), \
inst) \
}
#endif /* _ITE_IT8XXX2_SOC_DT_H_ */