blob: cfaa8821da949b8ca73cf2b230bfade93e5e298d [file] [log] [blame]
/*
* Copyright (c) 2021 Microchip Technology Inc. All Rights Reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _MICROCHIP_XEC_SOC_DT_H_
#define _MICROCHIP_XEC_SOC_DT_H_
#include <zephyr/devicetree.h>
#define MCHP_XEC_PIN_FEAT_EN 0x1
#define MCHP_XEC_NO_PULL 0x1
#define MCHP_XEC_PULL_UP 0x1
#define MCHP_XEC_PULL_DOWN 0x1
#define MCHP_XEC_PUSH_PULL 0x1
#define MCHP_XEC_OPEN_DRAIN 0x1
#define MCHP_XEC_OUT_DIS 0x1
#define MCHP_XEC_OUT_EN 0x1
#define MCHP_XEC_OUT_DRV_LOW 0x1
#define MCHP_XEC_OUT_DRV_HIGH 0x1
#define MCHP_XEC_DRVSTR_NONE 0x0
#define MCHP_XEC_DRVSTR_2MA 0x1
#define MCHP_XEC_DRVSTR_4MA 0x2
#define MCHP_XEC_DRVSTR_8MA 0x3
#define MCHP_XEC_DRVSTR_12MA 0x4
#define MCHP_XEC_FUNC_INVERT 0x1
#define MCHP_XEC_PIN_INPUT_DIS 0x1
#define MCHP_DT_ESPI_VW_FLAG_STATUS_POS 0
#define MCHP_DT_ESPI_VW_FLAG_DIR_POS 1
#define MCHP_DT_ESPI_VW_FLAG_RST_STATE_POS 2
#define MCHP_DT_ESPI_VW_FLAG_RST_STATE_MSK0 0x3
#define MCHP_DT_ESPI_VW_FLAG_RST_SRC_POS 4
#define MCHP_DT_ESPI_VW_FLAG_RST_SRC_MSK0 0x7
#define MCHP_DT_NODE_FROM_VWTABLE(name) DT_CHILD(DT_PATH(mchp_xec_espi_vw_routing), name)
#define MCHP_DT_VW_NODE_HAS_STATUS(name) DT_NODE_HAS_STATUS(MCHP_DT_NODE_FROM_VWTABLE(name), okay)
/* Macro to store eSPI virtual wire DT flags
* b[0] = DT status property 0 is disabled, 1 enabled,
* b[1] = VW direction 0(EC target to host controller), 1(host controller to EC target)
* b[3:2] = default virtual wire state 0(HW default), 1(low), 2(high)
* b[6:4] = virtual wire state reset event:
* 0(HW default), 1(ESPI_RESET), 2(RESET_SYS), 3(RESET_SIO), 4(PLTRST)
*/
#define MCHP_DT_ESPI_VW_FLAGS(vw) \
((uint8_t)(MCHP_DT_VW_NODE_HAS_STATUS(vw)) & 0x01U) | \
((((uint8_t)DT_PROP_BY_IDX(MCHP_DT_NODE_FROM_VWTABLE(vw), vw_reg, 1)) & 0x1) << 1) | \
((((uint8_t)DT_ENUM_IDX_OR(MCHP_DT_NODE_FROM_VWTABLE(vw), reset_state, 0)) & 0x3) << 2) | \
((((uint8_t)DT_ENUM_IDX_OR(MCHP_DT_NODE_FROM_VWTABLE(vw), reset_source, 0)) & 0x7) << 4)
/* Macro for the eSPI driver VW table entries.
* e is a symbol from enum espi_vwire_signal.
* vw is a node from the XEC ESPI VW routing file.
*/
#define MCHP_DT_ESPI_VW_ENTRY(e, vw) \
[(e)] = { \
.host_idx = DT_PROP_BY_IDX(MCHP_DT_NODE_FROM_VWTABLE(vw), vw_reg, 0), \
.bit = DT_PROP_BY_IDX(MCHP_DT_NODE_FROM_VWTABLE(vw), vw_reg, 3), \
.xec_reg_idx = DT_PROP_BY_IDX(MCHP_DT_NODE_FROM_VWTABLE(vw), vw_reg, 2), \
.flags = MCHP_DT_ESPI_VW_FLAGS(vw), \
}
#endif /* _MICROCHIP_XEC_SOC_DT_H_ */