# Copyright (c) 2023 Andriy Gelman <andriy.gelman@gmail.com>
# SPDX-License-Identifier: Apache-2.0

config XMC4XXX_TEMP
	bool "XMC4XXX Temperature Sensor"
	default y
	depends on DT_HAS_INFINEON_XMC4XXX_TEMP_ENABLED
	help
	  Enable driver for temperature sensor on Infineon XMC4XXX targets.

if XMC4XXX_TEMP

config XMC4XXX_TEMP_CALIBRATE_OFFSET
	int "Offset adjumstment of the temperature reading"
	default 0
	help
	  Offset adjustment is defined as a shift of the conversion result.
	  The value is 7 bits in the range [-64, 63] which maps to -/+ 12.5C.

config XMC4XXX_TEMP_CALIBRATE_GAIN
	int "Gain adjumstment of the temperature reading"
	default 32
	help
	  Gain adjustment of the temperature reading. Range [0, 63].

endif # XMC4XXX_TEMP
