# LSM6DS0 accelerometer and gyroscope sensor configuration
# options

# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menuconfig LSM6DS0
	bool "LSM6DS0 I2C accelerometer and gyroscope Chip"
	depends on I2C && HAS_DTS_I2C
	help
	  Enable driver for LSM6DS0 I2C-based accelerometer and gyroscope
	  sensor.

if LSM6DS0

config LSM6DS0_ACCEL_ENABLE_X_AXIS
	bool "Enable accelerometer X axis"
	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"
	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"
	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"
	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"
	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"
	default y
	help
	  Enable/disable gyroscope Z axis totally by stripping everything
	  related in driver.

config LSM6DS0_ENABLE_TEMP
	bool "Enable temperature"
	help
	  Enable/disable temperature totally by stripping everything related in
	  driver.

menu "Attributes"

config LSM6DS0_GYRO_FULLSCALE
	int "Gyroscope full-scale range"
	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 "Output data rate"
	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 "Accelerometer full-scale range"
	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 "Output data rate"
	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

endif # LSM6DS0
