| /* |
| * Copyright (c) 2021 Nuvoton Technology Corporation. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_DRIVERS_PS2_PS2_NPCX_CONTROLLER_H_ |
| #define ZEPHYR_DRIVERS_PS2_PS2_NPCX_CONTROLLER_H_ |
| |
| #include <zephyr/device.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * @brief Write @p value to a PS/2 device via the PS/2 controller. |
| * |
| * @param dev Pointer to the device structure for PS/2 controller instance. |
| * @param channel_id Channel ID of the PS/2 to write data. |
| * @param value the data write to the PS/2 device. |
| * |
| * @retval 0 If successful. |
| * @retval -EINVAL Channel ID is invalid. |
| * @retval -ETIMEDOUT Timeout occurred for a PS/2 write transaction. |
| */ |
| int ps2_npcx_ctrl_write(const struct device *dev, uint8_t channel_id, |
| uint8_t value); |
| |
| /** |
| * @brief Set the PS/2 controller to turn on/off the PS/2 channel. |
| * |
| * @param dev Pointer to the device structure for PS/2 controller instance. |
| * @param channel_id Channel ID of the PS/2 to enable or disable. |
| * @param enable True to enable channel, false to disable channel. |
| * |
| * @retval 0 If successful. |
| * @retval -EINVAL Channel ID is invalid. |
| */ |
| int ps2_npcx_ctrl_enable_interface(const struct device *dev, uint8_t channel, |
| bool enable); |
| |
| /** |
| * @brief Record the callback_isr function pointer for the given PS/2 channel. |
| * |
| * @param dev Pointer to the device structure for PS/2 controller instance. |
| * @param channel_id Channel ID of the PS/2 to configure the callback_isr. |
| * @param callback_isr Pointer to the callback_isr. |
| * |
| * @retval 0 If successful. |
| * @retval -EINVAL callback_isr is NULL. |
| */ |
| int ps2_npcx_ctrl_configure(const struct device *dev, uint8_t channel_id, |
| ps2_callback_t callback_isr); |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* ZEPHYR_DRIVERS_PS2_PS2_NPCX_CONTROLLER_H_ */ |