# Kconfig.lsm6ds0 - LSM6DS0 accelerometer and gyroscope 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 LSM6DS0
	bool "LSM6DS0 I2C accelerometer and gyroscope Chip"
	depends on SENSOR && I2C && NANO_TIMEOUTS
	default n
	help
	  Enable driver for LSM6DS0 I2C-based accelerometer and gyroscope
	  sensor.

config LSM6DS0_SYS_LOG_LEVEL
	int "LSM6DS0 Log level"
	depends on SYS_LOG && LSM6DS0
	default 0
	range 0 4
	help
	  Sets log level for LSM6DS0 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 LSM6DS0_DEV_NAME
	string "LSM6DS0 device name"
	depends on LSM6DS0
	default "lsm6ds0"

config LSM6DS0_INIT_PRIORITY
	int
	depends on LSM6DS0
	default 70
	prompt "Init priority"
	help
	  Device driver initialization priority.

config LSM6DS0_I2C_ADDR
	hex
	prompt "I2C address"
	depends on LSM6DS0
	default "0x6B"
	help
	  I2C address of the LSM6DS0 sensor.
	  Use 0x6A if the SA0 pin is pulled to GND or 0x6B if the SA0 pin
	  is pulled to VCC.

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

config LSM6DS0_ACCEL_ENABLE_X_AXIS
	bool "Enable accelerometer X axis"
	depends on LSM6DS0
	default y
	help
	  Enable/disable accelerometer X axis totally by stripping everything
	  related in driver.

config LSM6DS0_ACCEL_ENABLE_Y_AXIS
	bool "Enable accelerometer Y axis"
	depends on LSM6DS0
	default y
	help
	  Enable/disable accelerometer Y axis totally by stripping everything
	  related in driver.

config LSM6DS0_ACCEL_ENABLE_Z_AXIS
	bool "Enable accelerometer Z axis"
	depends on LSM6DS0
	default y
	help
	  Enable/disable accelerometer Z axis totally by stripping everything
	  related in driver.

config LSM6DS0_GYRO_ENABLE_X_AXIS
	bool "Enable gyroscope X axis"
	depends on LSM6DS0
	default y
	help
	  Enable/disable gyroscope X axis totally by stripping everything
	  related in driver.

config LSM6DS0_GYRO_ENABLE_Y_AXIS
	bool "Enable gyroscope Y axis"
	depends on LSM6DS0
	default y
	help
	  Enable/disable gyroscope Y axis totally by stripping everything
	  related in driver.

config LSM6DS0_GYRO_ENABLE_Z_AXIS
	bool "Enable gyroscope Z axis"
	depends on LSM6DS0
	default y
	help
	  Enable/disable gyroscope Z axis totally by stripping everything
	  related in driver.

config LSM6DS0_ENABLE_TEMP
	bool "Enable temperature"
	depends on LSM6DS0
	default n
	help
	  Enable/disable temperature totally by stripping everything related in
	  driver.

menu "Attributes"
	depends on LSM6DS0

config LSM6DS0_GYRO_FULLSCALE
	int
	prompt "Gyroscope full-scale range"
	depends on LSM6DS0
	default 245
	help
	  Specify the default gyroscope full-scale range.
	  An X value for the config represents a range of +/- X degree per
	  second. Valid values are 245, 500 and 2000.

config LSM6DS0_GYRO_SAMPLING_RATE
	int
	prompt "Output data rate"
	depends on LIS3MDL
	default 15
	help
	  Specify the default gyroscope output data rate expressed in samples
	  per second (Hz).
	  Data rates supported by the chip are 0, 15, 60, 119, 238, 476,
	  952.

config LSM6DS0_ACCEL_FULLSCALE
	int
	prompt "Accelerometer full-scale range"
	depends on LSM6DS0
	default 2
	help
	  Specify the default accelerometer full-scale range.
	  An X value for the config represents a range of +/- X G. Valid values
	  are 2, 4, 8 and 16.

config LSM6DS0_ACCEL_SAMPLING_RATE
	int
	prompt "Output data rate"
	depends on LIS3MDL
	default 10
	help
	  Specify the default accelerometer output data rate expressed in
	  samples per second (Hz).
	  Data rates supported by the chip are 0, 10, 50, 119, 238, 476, 952.

endmenu
