# ST Microelectronics LPS22HH pressure and temperature sensor

# Copyright (c) 2019 STMicroelectronics
# SPDX-License-Identifier: Apache-2.0

menuconfig LPS22HH
	bool "LPS22HH pressure and temperature"
	depends on I2C || SPI
	select HAS_STMEMSC
	select USE_STDC_LPS22HH
	help
	  Enable driver for LPS22HH I2C-based pressure and temperature
	  sensor.

if LPS22HH

choice LPS22HH_TRIGGER_MODE
	prompt "Trigger mode"
	default LPS22HH_TRIGGER_GLOBAL_THREAD
	help
	  Specify the type of triggering to be used by the driver.

config LPS22HH_TRIGGER_NONE
	bool "No trigger"

config LPS22HH_TRIGGER_GLOBAL_THREAD
	bool "Use global thread"
	depends on GPIO
	select LPS22HH_TRIGGER

config LPS22HH_TRIGGER_OWN_THREAD
	bool "Use own thread"
	depends on GPIO
	select LPS22HH_TRIGGER

endchoice # LPS22HH_TRIGGER_MODE

config LPS22HH_TRIGGER
	bool

config LPS22HH_THREAD_PRIORITY
	int "Thread priority"
	depends on LPS22HH_TRIGGER_OWN_THREAD
	default 10
	help
	  Priority of thread used by the driver to handle interrupts.

config LPS22HH_THREAD_STACK_SIZE
	int "Thread stack size"
	depends on LPS22HH_TRIGGER_OWN_THREAD
	default 1024
	help
	  Stack size of thread used by the driver to handle interrupts.

endif # LPS22HH
