/*
 * Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_ESP_PINCTRL_COMMON_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_ESP_PINCTRL_COMMON_H_

#include <zephyr/sys/util_macro.h>

#define ESP32_PIN_NUM_SHIFT      0U
#define ESP32_PIN_NUM_MASK       0x3FU

/*
 * Definitions used to extract I/O
 * signal indexes used by the GPIO
 * matrix signal routing mechanism
 */
#define ESP32_PIN_SIGI_MASK      0x1FFU
#define ESP32_PIN_SIGI_SHIFT     6U
#define ESP32_PIN_SIGO_MASK      0x1FFU
#define ESP32_PIN_SIGO_SHIFT     15U
#define ESP_SIG_INVAL            ESP32_PIN_SIGI_MASK

#define ESP32_PINMUX(pin, sig_i, sig_o)						\
		(((pin & ESP32_PIN_NUM_MASK) << ESP32_PIN_NUM_SHIFT) |		\
		((sig_i & ESP32_PIN_SIGI_MASK) << ESP32_PIN_SIGI_SHIFT) |	\
		((sig_o & ESP32_PIN_SIGO_MASK) << ESP32_PIN_SIGO_SHIFT))

/*
 * Definitions used to extract pin
 * properties: bias, drive and
 * initial pin level
 */
#define ESP32_PIN_BIAS_SHIFT     0U
#define ESP32_PIN_BIAS_MASK      0x3U
#define ESP32_PIN_DRV_SHIFT      2U
#define ESP32_PIN_DRV_MASK       0x3U
#define ESP32_PIN_OUT_SHIFT      4U
#define ESP32_PIN_OUT_MASK       0x3U

/* Bias definitions */
#define ESP32_NO_PULL            0x1
#define ESP32_PULL_UP            0x2
#define ESP32_PULL_DOWN          0x3

/* Pin drive definitions */
#define ESP32_PUSH_PULL          0x1
#define ESP32_OPEN_DRAIN         0x2

/*
 * An output pin can be initialized
 * to either high or low
 */
#define ESP32_PIN_OUT_HIGH       0x1
#define ESP32_PIN_OUT_LOW        0x2

/*
 * These flags are used by the pinctrl
 * driver, based on the DTS properties
 * assigned to a specific pin state
 */
#define ESP32_NO_PULL_FLAG       BIT(0)
#define ESP32_PULL_UP_FLAG       BIT(1)
#define ESP32_PULL_DOWN_FLAG     BIT(2)
#define ESP32_PUSH_PULL_FLAG     BIT(3)
#define ESP32_OPEN_DRAIN_FLAG    BIT(4)
#define ESP32_DIR_INP_FLAG       BIT(5)
#define ESP32_DIR_OUT_FLAG       BIT(6)
#define ESP32_PIN_OUT_HIGH_FLAG  BIT(7)
#define ESP32_PIN_OUT_LOW_FLAG   BIT(8)

#endif	/* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_ESP_PINCTRL_COMMON_H_ */
