Commit b921db66 authored by Clément Laigle's avatar Clément Laigle Committed by Benjamin Cabé
Browse files

driver: sensor: as6212: fix sampling frequency

AS6212 supports 0.25Hz, 1Hz, 4Hz, and 8Hz sampling frequencies, but the
current driver supports 0.25Hz, 1Hz, 4Hz, and 16Hz sampling frequencies.

Signed-off-by: default avatarClément Laigle <c.laigle@catie.fr>
parent 905e3032
Loading
Loading
Loading
Loading
+18 −1
Changes for drivers/sensor/ti/tmp108/tmp108.c: 18 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -201,6 +201,7 @@ static int tmp108_attr_set(const struct device *dev,
			   const struct sensor_value *val)
{
	struct tmp108_data *drv_data = dev->data;
	const struct tmp108_config *config = dev->config;
	__maybe_unused uint16_t reg_value;
	__maybe_unused int32_t uval;
	uint16_t mode;
@@ -273,7 +274,21 @@ static int tmp108_attr_set(const struct device *dev,
		break;
#endif /* CONFIG_TMP108_ALERT_INTERRUPTS */

	case SENSOR_ATTR_SAMPLING_FREQUENCY:
	case SENSOR_ATTR_SAMPLING_FREQUENCY: {
		struct tmp_108_reg_def ams_as6212_reg_def = AMS_AS6212_CONF;

		if (memcmp(&config->reg_def, &ams_as6212_reg_def, sizeof(struct tmp_108_reg_def)) ==
		    0) {
			if (val->val1 < 1) {
				mode = TI_TMP108_FREQ_4_SECS(dev);
			} else if (val->val1 < 4) {
				mode = TI_TMP108_FREQ_1_HZ(dev);
			} else if (val->val1 < 8) {
				mode = TI_TMP108_FREQ_4_HZ(dev);
			} else {
				mode = AMS_AS6212_FREQ_8_HZ(dev);
			}
		} else {
			if (val->val1 < 1) {
				mode = TI_TMP108_FREQ_4_SECS(dev);
			} else if (val->val1 < 4) {
@@ -283,10 +298,12 @@ static int tmp108_attr_set(const struct device *dev,
			} else {
				mode = TI_TMP108_FREQ_16_HZ(dev);
			}
		}
		result = tmp108_write_config(dev,
					     TI_TMP108_FREQ_MASK(dev),
					     mode);
		break;
	}

	case SENSOR_ATTR_TMP108_SHUTDOWN_MODE:
		result = tmp108_write_config(dev,
+1 −0
Changes for drivers/sensor/ti/tmp108/tmp108.h: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@
#define TI_TMP108_FREQ_4_HZ(x) TI_TMP108_GET_CONF(x, CONF_CR1)
#define TI_TMP108_FREQ_16_HZ(x)	(TI_TMP108_GET_CONF(x, CONF_CR1) | \
				TI_TMP108_GET_CONF(x, CONF_CR0))
#define AMS_AS6212_FREQ_8_HZ(x) (TI_TMP108_GET_CONF(x, CONF_CR1) | TI_TMP108_GET_CONF(x, CONF_CR0))
#define TI_TMP108_FREQ_MASK(x)	~(TI_TMP108_GET_CONF(x, CONF_CR1) | \
				TI_TMP108_GET_CONF(x, CONF_CR0))