Commit dde8ceec authored by Crt Mori's avatar Crt Mori Committed by Jonathan Cameron
Browse files

iio: temperature: mlx90632: Interface to change object ambient temperature



Since object temperature might be different than the sensor temperature
the infrared sensors should provide an interface to inject ambient
temperature. This was in past done via write to ambient temperature
interface (in_temp_ambient_raw), but I think most people did not know
about it. This solution introduces a new iio type of the CALIBAMBIENT
which is hopefully more descriptive and more explicit about the purpose
and capabilities of the sensors.

Signed-off-by: default avatarCrt Mori <cmo@melexis.com>
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20200906210231.383976-1-cmo@melexis.com


Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent d3333e21
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -1758,6 +1758,14 @@ Contact: linux-iio@vger.kernel.org
Description:
		One of the following thermocouple types: B, E, J, K, N, R, S, T.

What:		/sys/bus/iio/devices/iio:deviceX/in_temp_object_calibambient
What:		/sys/bus/iio/devices/iio:deviceX/in_tempX_object_calibambient
KernelVersion:	5.10
Contact:	linux-iio@vger.kernel.org
Description:
		Calibrated ambient temperature for object temperature
		calculation in milli degrees Celsius.

What:		/sys/bus/iio/devices/iio:deviceX/in_intensity_x_raw
What:		/sys/bus/iio/devices/iio:deviceX/in_intensity_y_raw
What:		/sys/bus/iio/devices/iio:deviceX/in_intensity_z_raw
+1 −0
Original line number Diff line number Diff line
@@ -166,6 +166,7 @@ static const char * const iio_chan_info_postfix[] = {
	[IIO_CHAN_INFO_CALIBEMISSIVITY] = "calibemissivity",
	[IIO_CHAN_INFO_OVERSAMPLING_RATIO] = "oversampling_ratio",
	[IIO_CHAN_INFO_THERMOCOUPLE_TYPE] = "thermocouple_type",
	[IIO_CHAN_INFO_CALIBAMBIENT] = "calibambient",
};

#if defined(CONFIG_DEBUG_FS)
+7 −2
Original line number Diff line number Diff line
@@ -761,7 +761,9 @@ static int mlx90632_read_raw(struct iio_dev *indio_dev,
			*val2 = data->emissivity * 1000;
		}
		return IIO_VAL_INT_PLUS_MICRO;

	case IIO_CHAN_INFO_CALIBAMBIENT:
		*val = data->object_ambient_temperature;
		return IIO_VAL_INT;
	default:
		return -EINVAL;
	}
@@ -781,6 +783,9 @@ static int mlx90632_write_raw(struct iio_dev *indio_dev,
			return -EINVAL;
		data->emissivity = val * 1000 + val2 / 1000;
		return 0;
	case IIO_CHAN_INFO_CALIBAMBIENT:
		data->object_ambient_temperature = val;
		return 0;
	default:
		return -EINVAL;
	}
@@ -798,7 +803,7 @@ static const struct iio_chan_spec mlx90632_channels[] = {
		.modified = 1,
		.channel2 = IIO_MOD_TEMP_OBJECT,
		.info_mask_separate = BIT(IIO_CHAN_INFO_PROCESSED) |
			BIT(IIO_CHAN_INFO_CALIBEMISSIVITY),
			BIT(IIO_CHAN_INFO_CALIBEMISSIVITY) | BIT(IIO_CHAN_INFO_CALIBAMBIENT),
	},
};

+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ enum iio_chan_info_enum {
	IIO_CHAN_INFO_CALIBEMISSIVITY,
	IIO_CHAN_INFO_OVERSAMPLING_RATIO,
	IIO_CHAN_INFO_THERMOCOUPLE_TYPE,
	IIO_CHAN_INFO_CALIBAMBIENT,
};

#endif /* _IIO_TYPES_H_ */