# Kconfig - HopeRF Electronic HP206C precision barometer and
#                  altimeter configuration options
#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
menuconfig HP206C
	bool "HopeRF HP206C precision barometer and altimeter sensor"
	depends on SENSOR
	depends on I2C
	default n
	help
	  Enable HopeRF HP206C barometer and altimeter support.

config  HP206C_DRV_NAME
	string "Driver's name"
	depends on HP206C
	default "hp206c"
	help
	  Name for the HP206C driver which will be used for binding.

config HP206C_I2C_PORT_NAME
	string "I2C master controller port name"
	depends on HP206C
	default "I2C_0"
	help
	  Master I2C port name through which HP206C chip is accessed.

config HP206C_OSR_RUNTIME
	bool "Oversampling rate set at runtime"
	depends on HP206C
	default y

config HP206C_OSR
	int "Oversampling rate"
	depends on HP206C && !HP206C_OSR_RUNTIME
	default 4096
	help
	  Allowed values: 4096, 2048, 1024, 512, 256, 128

config HP206C_ALT_OFFSET_RUNTIME
	bool "Altitude offset set at runtime"
	depends on HP206C
	default y

config HP206C_ALT_OFFSET
	int "Altitude offset (in cm)"
	depends on HP206C && !HP206C_ALT_OFFSET_RUNTIME
	default 0
	help
	  Value, in cm, that will be used to compensate altitude calculation.
	  For more info on how to choose this value, consult section 6.1.1 in
	  the datasheet.
