| /* |
| * Copyright (c) 2022 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef _ADC_NPCX_THRESHOLD_H_ |
| #define _ADC_NPCX_THRESHOLD_H_ |
| |
| #include <zephyr/device.h> |
| |
| enum adc_npcx_threshold_param_l_h { |
| ADC_NPCX_THRESHOLD_PARAM_L_H_HIGHER, |
| ADC_NPCX_THRESHOLD_PARAM_L_H_LOWER, |
| }; |
| |
| enum adc_npcx_threshold_param_type { |
| /* Selects ADC channel to be used for measurement */ |
| ADC_NPCX_THRESHOLD_PARAM_CHNSEL, |
| /* Sets relation between measured value and assetion threshold value.*/ |
| ADC_NPCX_THRESHOLD_PARAM_L_H, |
| /* Sets the threshol value to which measured data is compared. */ |
| ADC_NPCX_THRESHOLD_PARAM_THVAL, |
| /* Sets worker queue thread to be notified */ |
| ADC_NPCX_THRESHOLD_PARAM_WORK, |
| |
| ADC_NPCX_THRESHOLD_PARAM_MAX, |
| }; |
| |
| struct adc_npcx_threshold_param { |
| /* Threshold ocntrol parameter */ |
| enum adc_npcx_threshold_param_type type; |
| /* Parameter value */ |
| uint32_t val; |
| }; |
| |
| /** |
| * @brief Convert input value in millivolts to corresponding threshold register |
| * value. |
| * |
| * @note This function is available only if @kconfig{CONFIG_ADC_CMP_NPCX} |
| * is selected. |
| * |
| * @param val_mv Input value in millivolts to be converted. |
| * @param thrval Pointer of variable to hold the result of conversion. |
| * |
| * @returns 0 on success, negative result if input cannot be converted due to |
| * overflow. |
| */ |
| int adc_npcx_threshold_mv_to_thrval(uint32_t val_mv, uint32_t *thrval); |
| |
| /** |
| * @brief Set ADC threshold parameter. |
| * |
| * @note This function is available only if @kconfig{CONFIG_ADC_CMP_NPCX} |
| * is selected. |
| * |
| * @param dev Pointer to the device structure for the driver instance. |
| * @param th_sel Threshold selected. |
| * @param param Pointer of parameter structure. |
| * See struct adc_npcx_threshold_param for supported |
| * parameters. |
| * |
| * @returns 0 on success, negative error code otherwise. |
| */ |
| int adc_npcx_threshold_ctrl_set_param(const struct device *dev, |
| const uint8_t th_sel, |
| const struct adc_npcx_threshold_param |
| *param); |
| |
| /** |
| * @brief Enables/Disables ADC threshold interruption. |
| * |
| * @note This function is available only if @kconfig{CONFIG_ADC_CMP_NPCX} |
| * is selected. |
| * |
| * @param dev Pointer to the device structure for the driver instance. |
| * @param th_sel Threshold selected. |
| * @param enable Enable or disables threshold interruption. |
| * |
| * @returns 0 on success, negative error code otherwise. |
| * all parameters must be configure prior enabling threshold |
| * interruption, otherwhise error will be returned. |
| */ |
| int adc_npcx_threshold_ctrl_enable(const struct device *dev, uint8_t th_sel, |
| const bool enable); |
| |
| #endif /*_ADC_NPCX_THRESHOLD_H_ */ |