blob: 3bbfc22ea924055b02dcf8632ab8dcf2c32ac34c [file] [log] [blame]
/*
* Copyright (c) 2020 Vestas Wind Systems A/S
* Copyright 2022 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
/**
* @file
* @brief Extended public API for the NXP MCUX Analog Comparator (ACMP)
*/
#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCUX_ACMP_H_
#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCUX_ACMP_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <zephyr/drivers/sensor.h>
#if defined(FSL_FEATURE_ACMP_HAS_C1_INPSEL_BIT) && (FSL_FEATURE_ACMP_HAS_C1_INPSEL_BIT == 1U)
#define MCUX_ACMP_HAS_INPSEL 1
#else
#define MCUX_ACMP_HAS_INPSEL 0
#endif
#if defined(FSL_FEATURE_ACMP_HAS_C1_INNSEL_BIT) && (FSL_FEATURE_ACMP_HAS_C1_INNSEL_BIT == 1U)
#define MCUX_ACMP_HAS_INNSEL 1
#else
#define MCUX_ACMP_HAS_INNSEL 0
#endif
#if defined(FSL_FEATURE_ACMP_HAS_C0_OFFSET_BIT) && (FSL_FEATURE_ACMP_HAS_C0_OFFSET_BIT == 1U)
#define MCUX_ACMP_HAS_OFFSET 1
#else
#define MCUX_ACMP_HAS_OFFSET 0
#endif
#if defined(FSL_FEATURE_ACMP_HAS_C3_REG) && (FSL_FEATURE_ACMP_HAS_C3_REG != 0U)
#define MCUX_ACMP_HAS_DISCRETE_MODE 1
#else
#define MCUX_ACMP_HAS_DISCRETE_MODE 0
#endif
enum sensor_channel_mcux_acmp {
/** Analog Comparator Output. */
SENSOR_CHAN_MCUX_ACMP_OUTPUT = SENSOR_CHAN_PRIV_START,
};
enum sensor_trigger_type_mcux_acmp {
/** Analog Comparator Output rising event trigger. */
SENSOR_TRIG_MCUX_ACMP_OUTPUT_RISING = SENSOR_TRIG_PRIV_START,
/** Analog Comparator Output falling event trigger. */
SENSOR_TRIG_MCUX_ACMP_OUTPUT_FALLING,
};
enum sensor_attribute_mcux_acmp {
/** Analog Comparator hard block offset. */
SENSOR_ATTR_MCUX_ACMP_OFFSET_LEVEL = SENSOR_ATTR_COMMON_COUNT,
/** Analog Comparator hysteresis level. */
SENSOR_ATTR_MCUX_ACMP_HYSTERESIS_LEVEL,
/**
* Analog Comparator Digital-to-Analog Converter voltage
* reference source.
*/
SENSOR_ATTR_MCUX_ACMP_DAC_VOLTAGE_REFERENCE,
/** Analog Comparator Digital-to-Analog Converter value. */
SENSOR_ATTR_MCUX_ACMP_DAC_VALUE,
/** Analog Comparator positive port input. */
SENSOR_ATTR_MCUX_ACMP_POSITIVE_PORT_INPUT,
/** Analog Comparator positive mux input. */
SENSOR_ATTR_MCUX_ACMP_POSITIVE_MUX_INPUT,
/** Analog Comparator negative port input. */
SENSOR_ATTR_MCUX_ACMP_NEGATIVE_PORT_INPUT,
/** Analog Comparator negative mux input. */
SENSOR_ATTR_MCUX_ACMP_NEGATIVE_MUX_INPUT,
#if MCUX_ACMP_HAS_DISCRETE_MODE
/** Analog Comparator Positive Channel Discrete Mode Enable. */
SENSOR_ATTR_MCUX_ACMP_POSITIVE_DISCRETE_MODE,
/** Analog Comparator Negative Channel Discrete Mode Enable. */
SENSOR_ATTR_MCUX_ACMP_NEGATIVE_DISCRETE_MODE,
/** Analog Comparator discrete mode clock selection. */
SENSOR_ATTR_MCUX_ACMP_DISCRETE_CLOCK,
/** Analog Comparator resistor divider enable. */
SENSOR_ATTR_MCUX_ACMP_DISCRETE_ENABLE_RESISTOR_DIVIDER,
/** Analog Comparator discrete sample selection. */
SENSOR_ATTR_MCUX_ACMP_DISCRETE_SAMPLE_TIME,
/** Analog Comparator discrete phase1 sampling time selection. */
SENSOR_ATTR_MCUX_ACMP_DISCRETE_PHASE1_TIME,
/** Analog Comparator discrete phase2 sampling time selection. */
SENSOR_ATTR_MCUX_ACMP_DISCRETE_PHASE2_TIME,
#endif
};
#ifdef __cplusplus
}
#endif
#endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCUX_ACMP_H_ */