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>
43 lines
1.3 KiB
Makefile
43 lines
1.3 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
#
|
|
# Makefile for industrial I/O Magnetometer sensor drivers
|
|
#
|
|
|
|
# When adding new entries keep the list in alphabetical order
|
|
obj-$(CONFIG_AF8133J) += af8133j.o
|
|
obj-$(CONFIG_AK8974) += ak8974.o
|
|
obj-$(CONFIG_AK8975) += ak8975.o
|
|
obj-$(CONFIG_ALS31300) += als31300.o
|
|
obj-$(CONFIG_BMC150_MAGN) += bmc150_magn.o
|
|
obj-$(CONFIG_BMC150_MAGN_I2C) += bmc150_magn_i2c.o
|
|
obj-$(CONFIG_BMC150_MAGN_SPI) += bmc150_magn_spi.o
|
|
|
|
obj-$(CONFIG_MAG3110) += mag3110.o
|
|
obj-$(CONFIG_HID_SENSOR_MAGNETOMETER_3D) += hid-sensor-magn-3d.o
|
|
obj-$(CONFIG_MMC35240) += mmc35240.o
|
|
obj-$(CONFIG_MMC5633) += mmc5633.o
|
|
|
|
obj-$(CONFIG_IIO_ST_MAGN_3AXIS) += st_magn.o
|
|
st_magn-y := st_magn_core.o
|
|
st_magn-$(CONFIG_IIO_BUFFER) += st_magn_buffer.o
|
|
|
|
obj-$(CONFIG_IIO_ST_MAGN_I2C_3AXIS) += st_magn_i2c.o
|
|
obj-$(CONFIG_IIO_ST_MAGN_SPI_3AXIS) += st_magn_spi.o
|
|
|
|
obj-$(CONFIG_INFINEON_TLV493D) += tlv493d.o
|
|
|
|
obj-$(CONFIG_QMC6308) += qmc6308.o
|
|
|
|
obj-$(CONFIG_SENSORS_HMC5843) += hmc5843_core.o
|
|
obj-$(CONFIG_SENSORS_HMC5843_I2C) += hmc5843_i2c.o
|
|
obj-$(CONFIG_SENSORS_HMC5843_SPI) += hmc5843_spi.o
|
|
|
|
obj-$(CONFIG_SENSORS_RM3100) += rm3100-core.o
|
|
obj-$(CONFIG_SENSORS_RM3100_I2C) += rm3100-i2c.o
|
|
obj-$(CONFIG_SENSORS_RM3100_SPI) += rm3100-spi.o
|
|
|
|
obj-$(CONFIG_SI7210) += si7210.o
|
|
|
|
obj-$(CONFIG_TI_TMAG5273) += tmag5273.o
|
|
|
|
obj-$(CONFIG_YAMAHA_YAS530) += yamaha-yas530.o
|