# Kconfig.mpu6050 - MPU6050 Six-Axis Motion Tracking device 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 MPU6050
	bool
	prompt "MPU6050 Six-Axis Motion Tracking Device"
	depends on SENSOR && I2C
	default n
	help
	  Enable driver for MPU6050 I2C-based six-axis motion tracking device.

config MPU6050_SYS_LOG_LEVEL
	int "MPU6050 Log level"
	depends on SYS_LOG && MPU6050
	default 0
	range 0 4
	help
	Sets log level for MPU6050 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 MPU6050_NAME
	string
	prompt "Driver name"
	default "MPU6050"
	depends on MPU6050
	help
	  Device name with which the MPU6050 sensor is identified.

config MPU6050_INIT_PRIORITY
	int
	prompt "Init priority"
	depends on MPU6050
	default 70
	help
	  Device driver initialization priority.

config MPU6050_I2C_ADDR
	hex
	prompt "I2C address"
	depends on MPU6050
	default 0x68
	range 0x68 0x69
	help
	  I2C address of the MPU6050 sensor.
	  Choose 0x68 if the AD0 pin is pulled to GND or 0x69 if the AD0 pin
	  is pulled to VDD.

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

choice
	prompt "Trigger mode"
	depends on MPU6050
	default MPU6050_TRIGGER_GLOBAL_FIBER
	help
	  Specify the type of triggering to be used by the driver.

config MPU6050_TRIGGER_NONE
	bool
	prompt "No trigger"

config MPU6050_TRIGGER_GLOBAL_FIBER
	bool
	prompt "Use global fiber"
	depends on GPIO && SYSTEM_WORKQUEUE
	select MPU6050_TRIGGER

config MPU6050_TRIGGER_OWN_FIBER
	bool
	prompt "Use own fiber"
	depends on GPIO
	select MPU6050_TRIGGER

endchoice

config MPU6050_TRIGGER
	bool
	depends on MPU6050

config MPU6050_GPIO_DEV_NAME
	string
	prompt "GPIO device"
	default "GPIO_0"
	depends on MPU6050 && MPU6050_TRIGGER
	help
	  The device name of the GPIO device to which the MPU6050 interrupt pin
	  is connected.

config MPU6050_GPIO_PIN_NUM
	int
	prompt "Interrupt GPIO pin number"
	default 0
	depends on MPU6050 && MPU6050_TRIGGER
	help
	  The number of the GPIO on which the interrupt signal from the MPU6050
	  chip will be received.

config MPU6050_FIBER_PRIORITY
	int
	prompt "Fiber priority"
	depends on MPU6050 && MPU6050_TRIGGER_OWN_FIBER
	default 10
	help
	  Priority of fiber used by the driver to handle interrupts.

config MPU6050_FIBER_STACK_SIZE
	int
	prompt "Fiber stack size"
	depends on MPU6050 && MPU6050_TRIGGER_OWN_FIBER
	default 1024
	help
	  Stack size of fiber used by the driver to handle interrupts.

config MPU6050_ACCEL_FS
	int
	prompt "Accelerometer full-scale range"
	depends on MPU6050
	default 2
	help
	  Magnetometer full-scale range.
	  An X value for the config represents a range of +/- X g. Valid
	  values are 2, 4, 8 and 16.

config MPU6050_GYRO_FS
	int
	prompt "Gyroscope full-scale range"
	depends on MPU6050
	default 250
	help
	  Gyroscope full-scale range.
	  An X value for the config represents a range of +/- X degrees/second.
	  Valid values are 250, 500, 1000, 2000.
