text: /*
   * Copyright (c) 2020 Nuvoton Technology Corporation.
   *
   * SPDX-License-Identifier: Apache-2.0
   */
  
  #ifndef _NUVOTON_NPCX_SOC_ESPI_H_
  #define _NUVOTON_NPCX_SOC_ESPI_H_
  
  #include <device.h>
  #include <sys/util.h>
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /* 8042 event data format */
  #define NPCX_8042_EVT_POS 16U
  #define NPCX_8042_DATA_POS 8U
  #define NPCX_8042_TYPE_POS 0U
  
  /* 8042 event type format */
  #define NPCX_8042_EVT_IBF BIT(0)
  #define NPCX_8042_EVT_OBE BIT(1)
  
  /*
   * The format of event data for KBC 8042 protocol:
   * [23:16] - 8042 event type: 1: Input buffer full, 2: Output buffer empty.
   * [15:8]  - 8042 data: 8-bit 8042 data.
   * [0:7]   - 8042 protocol type: 0: data type, 1: command type.
   */
  #define NPCX_8042_EVT_DATA(event, data, type) (((event) << NPCX_8042_EVT_POS) \
  	| ((data) << NPCX_8042_DATA_POS) | ((type) << NPCX_8042_TYPE_POS));
  
  /* ACPI event data format */
  #define NPCX_ACPI_DATA_POS 8U
  #define NPCX_ACPI_TYPE_POS 0U
  
  /**
   * @brief Turn on all interrupts of eSPI host interface module.
   *
   * @param dev Pointer to structure device of eSPI module
   */
  void npcx_espi_enable_interrupts(const struct device *dev);
  
  /**
   * @brief Turn off all interrupts of eSPI host interface module.
   *
   * @param dev Pointer to structure device of eSPI module
   */
  void npcx_espi_disable_interrupts(const struct device *dev);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* _NUVOTON_NPCX_SOC_ESPI_H_ */
  