The QST QMC6308 is a 3-axis AMR magnetometer on I2C, a single-supply 4-pin WLCSP part with no interrupt/DRDY pin, found e.g. in the Fairphone 6. Its register map differs from the QMC5883L (chip ID at 0x00 instead of 0x0D, data at 0x01..0x06, and the range field living in control register 2), so add a separate driver rather than extending the QMC5883L driver. Support raw X/Y/Z reads, output data rates 10/50/100/200 Hz, field ranges +-30/12/8/2 Gauss, filter oversampling ratios (OSR1) 8/4/2/1, the mount matrix, and runtime PM. The second-stage decimation filter (OSR2) is left at its power-on default. The package has no DRDY pin, so there is no trigger support. Run measurements in the chip's periodic "normal" mode paced by the DRDY flag rather than in its one-shot "single" mode: the datasheet specifies no conversion time that could bound a one-shot wait, while normal mode is paced by the specified output data rates, which also keeps the sampling_frequency ABI meaningful. Runtime PM puts the chip into its suspend mode after 500 ms without a reading, dropping supply current from tens-to-hundreds of microamps to 2-3 uA (datasheet Table 2). The suspended chip retains its registers and keeps responding on I2C, so resuming only rewrites the mode field and discards one stale sample, and configuration changes can be applied even while suspended. VDD is left enabled across runtime suspend: the on-chip suspend draw is already negligible, and register retention is what keeps the resume path trivial. Assisted-by: Claude:claude-fable-5 Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
312 lines
8.7 KiB
Text
312 lines
8.7 KiB
Text
# 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 QMC6308
|
|
tristate "QST QMC6308 3-Axis Magnetic Sensor"
|
|
depends on I2C
|
|
select REGMAP_I2C
|
|
help
|
|
Say Y here to add support for the QST QMC6308 3-Axis
|
|
Magnetic Sensor.
|
|
|
|
To compile this driver as a module, choose M here: the
|
|
module will be called qmc6308.
|
|
|
|
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
|