# Kconfig.bmc150_magn - BMC150 magnetometer sensor 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 BMC150_MAGN
	bool "BMC150_MAGN I2C Magnetometer Chip"
	depends on SENSOR && I2C && NANO_TIMEOUTS
	default n
	help
	  Enable driver for BMC150 I2C-based magnetometer sensor.

config BMC150_MAGN_SYS_LOG_LEVEL
	int "BMC150 Magnetometer Log level"
	depends on SYS_LOG && BMC150_MAGN
	default 0
	range 0 4
	help
	  Sets log level for BMC150 Magnetometer driver.
	  Levels are:
	  0 OFF, do not write
	  1 ERROR, only write SYS_LOG_ERR
	  2 WARNING, write SYS_LOG_WRN in addition to previous level
	  3 INFO, write SYS_LOG_INF in addition to previous levels
	  4 DEBUG, write SYS_LOG_DBG in addition to previous levels

config BMC150_MAGN_DEV_NAME
	string "BMC150_MAGN device name"
	depends on BMC150_MAGN
	default "bmc150_magn"

config BMC150_MAGN_INIT_PRIORITY
	int
	depends on BMC150_MAGN
	default 70
	prompt "Init priority"
	help
	  Device driver initialization priority.

choice
	prompt "BMC150_MAGN I2C slave address"
	default BMC150_MAGN_I2C_ADDR_12
	depends on BMC150_MAGN
	help
	  Specify the I2C slave address for the BMC150_MAGN.

config BMC150_MAGN_I2C_ADDR_12
	bool
	prompt "0x12 (GND)"

config BMC150_MAGN_I2C_ADDR_13
	bool
	prompt "0x13 (VCC)"

endchoice

config BMC150_MAGN_I2C_MASTER_DEV_NAME
	string "I2C master where BMC150_MAGN is connected"
	depends on BMC150_MAGN
	default "I2C_0"
	help
	  Specify the device name of the I2C master device to which BMC150_MAGN
	  is connected.

menu "Attributes"
	depends on BMC150_MAGN

choice
	prompt "Default preset"
	default BMC150_MAGN_PRESET_REGULAR
	depends on BMC150_MAGN
	help
	  Specify the default preset (x/y oversampling, z oversampling, sampling
	  frequency).

config BMC150_MAGN_PRESET_LOW_POWER
	bool
	prompt "Low power (3, 3, 10)"

config BMC150_MAGN_PRESET_REGULAR
	bool
	prompt "Regular (9, 15, 10)"

config BMC150_MAGN_PRESET_ENHANCED_REGULAR
	bool
	prompt "Enhanced regular (15, 27, 10)"

config BMC150_MAGN_PRESET_HIGH_ACCURACY
	bool
	prompt "High accuracy (47, 83, 20)"

endchoice

config BMC150_MAGN_SAMPLING_RATE_RUNTIME
	bool "Enable dynamic sampling rate"
	depends on BMC150_MAGN
	default n
	help
	  Enable alteration of sampling rate attribute at runtime.

config BMC150_MAGN_SAMPLING_REP_XY
	bool "Enable dynamic XY oversampling"
	depends on BMC150_MAGN
	default n
	help
	  Enable alteration of XY oversampling at runtime.

config BMC150_MAGN_SAMPLING_REP_Z
	bool "Enable dynamic Z oversampling"
	depends on BMC150_MAGN
	default n
	help
	  Enable alteration of Z oversampling at runtime.

endmenu

config BMC150_MAGN_TRIGGER
	bool "Enable triggers"
	depends on BMC150_MAGN && GPIO
	default n
	help
	  Enable triggers for BMC150 magnetometer

config BMC150_MAGN_TRIGGER_FIBER_STACK
	int "Fiber stack size"
	depends on BMC150_MAGN_TRIGGER
	default 1024
	help
	  Specify the internal fiber stack size.

config BMC150_MAGN_TRIGGER_DRDY
	bool "Enable data ready trigger"
	depends on BMC150_MAGN_TRIGGER
	default n
	help
	  Enable data ready interrupt for BMC150 magnetometer

config BMC150_MAGN_GPIO_DRDY_DEV_NAME
	string "GPIO device where BMC150_MAGN data ready interrupt is connected"
	depends on BMC150_MAGN_TRIGGER_DRDY
	default GPIO_0
	help
	  Specify the device name of the GPIO controller the BMC150_MAGN interrupt
	  is connected to.

config BMC150_MAGN_GPIO_DRDY_INT_PIN
	int
	default 3
	depends on BMC150_MAGN_TRIGGER_DRDY
	prompt "GPIO pin number for the data ready interrupt pin"
	help
	  GPIO pin number for the data ready interrupt pin.
