Line data Source code
1 0 : /* 2 : * Copyright (c) 2022 Intel Corporation 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : #ifndef _ADC_NPCX_THRESHOLD_H_ 8 : #define _ADC_NPCX_THRESHOLD_H_ 9 : 10 : #include <zephyr/device.h> 11 : 12 0 : enum adc_npcx_threshold_param_l_h { 13 : ADC_NPCX_THRESHOLD_PARAM_L_H_HIGHER, 14 : ADC_NPCX_THRESHOLD_PARAM_L_H_LOWER, 15 : }; 16 : 17 0 : enum adc_npcx_threshold_param_type { 18 : /* Selects ADC channel to be used for measurement */ 19 : ADC_NPCX_THRESHOLD_PARAM_CHNSEL, 20 : /* Sets relation between measured value and assetion threshold value.*/ 21 : ADC_NPCX_THRESHOLD_PARAM_L_H, 22 : /* Sets the threshold value to which measured data is compared. */ 23 : ADC_NPCX_THRESHOLD_PARAM_THVAL, 24 : /* Sets worker queue thread to be notified */ 25 : ADC_NPCX_THRESHOLD_PARAM_WORK, 26 : 27 : ADC_NPCX_THRESHOLD_PARAM_MAX, 28 : }; 29 : 30 0 : struct adc_npcx_threshold_param { 31 : /* Threshold ocntrol parameter */ 32 0 : enum adc_npcx_threshold_param_type type; 33 : /* Parameter value */ 34 0 : uint32_t val; 35 : }; 36 : 37 : /** 38 : * @brief Convert input value in millivolts to corresponding threshold register 39 : * value. 40 : * 41 : * @note This function is available only if @kconfig{CONFIG_ADC_CMP_NPCX} 42 : * is selected. 43 : * 44 : * @param dev Pointer to the device structure for the driver instance. 45 : * @param val_mv Input value in millivolts to be converted. 46 : * @param thrval Pointer of variable to hold the result of conversion. 47 : * 48 : * @returns 0 on success, negative result if input cannot be converted due to 49 : * overflow. 50 : */ 51 1 : int adc_npcx_threshold_mv_to_thrval(const struct device *dev, uint32_t val_mv, 52 : uint32_t *thrval); 53 : 54 : /** 55 : * @brief Set ADC threshold parameter. 56 : * 57 : * @note This function is available only if @kconfig{CONFIG_ADC_CMP_NPCX} 58 : * is selected. 59 : * 60 : * @param dev Pointer to the device structure for the driver instance. 61 : * @param th_sel Threshold selected. 62 : * @param param Pointer of parameter structure. 63 : * See struct adc_npcx_threshold_param for supported 64 : * parameters. 65 : * 66 : * @returns 0 on success, negative error code otherwise. 67 : */ 68 1 : int adc_npcx_threshold_ctrl_set_param(const struct device *dev, 69 : const uint8_t th_sel, 70 : const struct adc_npcx_threshold_param 71 : *param); 72 : 73 : /** 74 : * @brief Enables/Disables ADC threshold interruption. 75 : * 76 : * @note This function is available only if @kconfig{CONFIG_ADC_CMP_NPCX} 77 : * is selected. 78 : * 79 : * @param dev Pointer to the device structure for the driver instance. 80 : * @param th_sel Threshold selected. 81 : * @param enable Enable or disables threshold interruption. 82 : * 83 : * @returns 0 on success, negative error code otherwise. 84 : * all parameters must be configure prior enabling threshold 85 : * interruption, otherwise error will be returned. 86 : */ 87 1 : int adc_npcx_threshold_ctrl_enable(const struct device *dev, uint8_t th_sel, 88 : const bool enable); 89 : 90 : #endif /*_ADC_NPCX_THRESHOLD_H_ */