# Kconfig - HopeRF Electronic HP206C precision barometer and
#                  altimeter configuration options
#
# Copyright (c) 2016 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
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.
