# SPDX-License-Identifier: GPL-2.0-only
#
# Magnetometer sensors
#
# When adding new entries keep the list in alphabetical order

menu "Magnetometer sensors"

config AF8133J
	tristate "Voltafield AF8133J 3-Axis Magnetometer"
	depends on I2C
	depends on OF
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Voltafield AF8133J I2C-based
	  3-axis magnetometer chip.

	  To compile this driver as a module, choose M here: the module
	  will be called af8133j.

config AK8974
	tristate "Asahi Kasei AK8974 3-Axis Magnetometer"
	depends on I2C
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Asahi Kasei AK8974, AMI305 or
	  AMI306 I2C-based 3-axis magnetometer chips.

	  To compile this driver as a module, choose M here: the module
	  will be called ak8974.

config AK8975
	tristate "Asahi Kasei AK8975 3-Axis Magnetometer"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for Asahi Kasei AK8975, AK8963,
	  AK09911, AK09912, AK09916 or AK09918 3-Axis Magnetometer.

	  To compile this driver as a module, choose M here: the module
	  will be called ak8975.

config AK09911
	tristate "Asahi Kasei AK09911 3-axis Compass"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	select AK8975
	help
	  Deprecated: AK09911 is now supported by AK8975 driver.

config ALS31300
	tristate "Allegro MicroSystems ALS31300 3-D Linear Hall Effect Sensor"
	depends on I2C
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for the Allegro MicroSystems
	  ALS31300 Hall Effect Sensor through its I2C interface.

	  To compile this driver as a module, choose M here: the
	  module will be called als31300.

config BMC150_MAGN
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config BMC150_MAGN_I2C
	tristate "Bosch BMC150 I2C Magnetometer Driver"
	depends on I2C
	select BMC150_MAGN
	select REGMAP_I2C
	help
	  Say yes here to build support for the BMC150 magnetometer with
	  I2C interface.

	  This is a combo module with both accelerometer and magnetometer.
	  This driver is only implementing magnetometer part, which has
	  its own address and register map.

	  This driver also supports I2C Bosch BMC156 and BMM150 chips.
	  To compile this driver as a module, choose M here: the module will be
	  called bmc150_magn_i2c.

config BMC150_MAGN_SPI
	tristate "Bosch BMC150 SPI Magnetometer Driver"
	depends on SPI
	select BMC150_MAGN
	select REGMAP_SPI
	help
	  Say yes here to build support for the BMC150 magnetometer with
	  SPI interface.

	  This is a combo module with both accelerometer and magnetometer.
	  This driver is only implementing magnetometer part, which has
	  its own address and register map.

	  This driver also supports SPI Bosch BMC156 and BMM150 chips.
	  To compile this driver as a module, choose M here: the module will be
	  called bmc150_magn_spi.

config MAG3110
	tristate "Freescale MAG3110 3-Axis Magnetometer"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say yes here to build support for the Freescale MAG3110 3-Axis
	  magnetometer.

	  To compile this driver as a module, choose M here: the module
	  will be called mag3110.

config HID_SENSOR_MAGNETOMETER_3D
	depends on HID_SENSOR_HUB
	select IIO_BUFFER
	select HID_SENSOR_IIO_COMMON
	select HID_SENSOR_IIO_TRIGGER
	tristate "HID Magnetometer 3D"
	help
	  Say yes here to build support for the HID SENSOR
	  Magnetometer 3D.

config MMC35240
	tristate "MEMSIC MMC35240 3-axis magnetic sensor"
	select REGMAP_I2C
	depends on I2C
	help
	  Say yes here to build support for the MEMSIC MMC35240 3-axis
	  magnetic sensor.

	  To compile this driver as a module, choose M here: the module
	  will be called mmc35240.

config MMC5633
	tristate "MEMSIC MMC5633 3-axis magnetic sensor"
	select REGMAP_I2C
	select REGMAP_I3C if I3C
	depends on I3C_OR_I2C
	help
	  Say yes here to build support for the MEMSIC MMC5633 3-axis
	  magnetic sensor.

	  To compile this driver as a module, choose M here: the module
	  will be called mmc5633

config IIO_ST_MAGN_3AXIS
	tristate "STMicroelectronics magnetometers 3-Axis Driver"
	depends on (I2C || SPI_MASTER) && SYSFS
	select IIO_ST_SENSORS_CORE
	select IIO_TRIGGERED_BUFFER if (IIO_BUFFER)
	help
	  Say yes here to build support for STMicroelectronics magnetometers:
	  LSM303C, LSM303DLHC, LSM303DLM, LIS3MDL.

	  Also need to enable at least one of I2C and SPI interface drivers
	  below.

config IIO_ST_MAGN_I2C_3AXIS
	tristate "STMicroelectronics magnetometers 3-Axis I2C Interface"
	depends on I2C && IIO_ST_MAGN_3AXIS
	default I2C && IIO_ST_MAGN_3AXIS
	select IIO_ST_SENSORS_I2C
	help
	  Build support for STMicroelectronics magnetometers I2C interface.

	  To compile this driver as a module, choose M here. The module
	  will be called st_magn_i2c.

config IIO_ST_MAGN_SPI_3AXIS
	tristate "STMicroelectronics magnetometers 3-Axis SPI Interface"
	depends on SPI_MASTER && IIO_ST_MAGN_3AXIS
	default SPI_MASTER && IIO_ST_MAGN_3AXIS
	select IIO_ST_SENSORS_SPI
	help
	  Build support for STMicroelectronics magnetometers SPI interface.

	  To compile this driver as a module, choose M here. The module
	  will be called st_magn_spi.

config INFINEON_TLV493D
	tristate "Infineon TLV493D Low-Power 3D Magnetic Sensor"
	depends on I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here to add support for the Infineon TLV493D-A1B6 Low-
	  Power 3D Magnetic Sensor.

	  This driver can also be compiled as a module.
	  To compile this driver as a module, choose M here: the module
	  will be called tlv493d.

config SENSORS_HMC5843
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config SENSORS_HMC5843_I2C
	tristate "Honeywell HMC5843/5883/5883L 3-Axis Magnetometer (I2C)"
	depends on I2C
	select SENSORS_HMC5843
	select REGMAP_I2C
	help
	  Say Y here to add support for the Honeywell HMC5843, HMC5883 and
	  HMC5883L 3-Axis Magnetometer (digital compass).

	  This driver can also be compiled as a set of modules.
	  If so, these modules will be created:
	  - hmc5843_core (core functions)
	  - hmc5843_i2c (support for HMC5843, HMC5883, HMC5883L and HMC5983)

config SENSORS_HMC5843_SPI
	tristate "Honeywell HMC5983 3-Axis Magnetometer (SPI)"
	depends on SPI_MASTER
	select SENSORS_HMC5843
	select REGMAP_SPI
	help
	  Say Y here to add support for the Honeywell HMC5983 3-Axis Magnetometer
	  (digital compass).

	  This driver can also be compiled as a set of modules.
	  If so, these modules will be created:
	  - hmc5843_core (core functions)
	  - hmc5843_spi (support for HMC5983)

config SENSORS_RM3100
	tristate
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER

config SENSORS_RM3100_I2C
	tristate "PNI RM3100 3-Axis Magnetometer (I2C)"
	depends on I2C
	select SENSORS_RM3100
	select REGMAP_I2C
	help
	  Say Y here to add support for the PNI RM3100 3-Axis Magnetometer.

	  This driver can also be compiled as a module.
	  To compile this driver as a module, choose M here: the module
	  will be called rm3100-i2c.

config SENSORS_RM3100_SPI
	tristate "PNI RM3100 3-Axis Magnetometer (SPI)"
	depends on SPI_MASTER
	select SENSORS_RM3100
	select REGMAP_SPI
	help
	  Say Y here to add support for the PNI RM3100 3-Axis Magnetometer.

	  This driver can also be compiled as a module.
	  To compile this driver as a module, choose M here: the module
	  will be called rm3100-spi.

config SI7210
	tristate "SI7210 Hall effect sensor"
	depends on I2C
	select REGMAP_I2C
	help
	  Say Y here to add support for the SI7210 Hall effect sensor.

	  This driver can also be compiled as a module.
	  To compile this driver as a module, choose M here: the module
	  will be called si7210.

config TI_TMAG5273
	tristate "TI TMAG5273 Low-Power Linear 3D Hall-Effect Sensor"
	depends on I2C
	select REGMAP_I2C
	help
	  Say Y here to add support for the TI TMAG5273 Low-Power
	  Linear 3D Hall-Effect Sensor.

	  This driver can also be compiled as a module.
	  To compile this driver as a module, choose M here: the module
	  will be called tmag5273.

config YAMAHA_YAS530
	tristate "Yamaha YAS530 family of 3-Axis Magnetometers (I2C)"
	depends on I2C
	select REGMAP_I2C
	select IIO_BUFFER
	select IIO_TRIGGERED_BUFFER
	help
	  Say Y here to add support for the Yamaha YAS530 series of
	  3-Axis Magnetometers. YAS530, YAS532, YAS533 and YAS537 are
	  supported.

	  This driver can also be compiled as a module.
	  To compile this driver as a module, choose M here: the module
	  will be called yamaha-yas.

endmenu
