milos-linux/drivers/iio
Jorijn van der Graaf 50cd4e823f iio: magnetometer: add support for QST QMC6308
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>
2026-07-14 22:17:49 +02:00
..
accel Linux 7.0-rc7 2026-04-06 09:04:53 +02:00
adc iio: adc: ti-ads1298: add bounds check to pga_settings index 2026-06-27 11:08:17 +01:00
addac iio: addac: ad74413r: simplify timeout return 2026-02-23 21:22:08 +00:00
afe
amplifiers iio: amplifiers: ad8366: add support for adrf5702/3 2026-03-26 20:10:26 +00:00
buffer iio: buffer: hw-consumer: fix use-after-free in error path 2026-05-15 12:05:34 +01:00
cdc iio: cdc: fix spelling mistakes in comments 2026-03-21 19:29:49 +00:00
chemical iio: chemical: scd30: fix division by zero in write_raw 2026-04-28 16:36:09 +01:00
common iio: ssp_sensors: cancel delayed work_refresh on remove 2026-05-15 12:05:34 +01:00
dac iio: dac: ad5686: fix powerdown control on dual-channel devices 2026-05-15 12:05:35 +01:00
dummy
filter iio: filter: admv8818: use dev_err_probe() 2026-02-28 11:35:31 +00:00
frequency iio: frequency: adf4350: replace TODO with NOTE in adf4350_set_freq() 2026-03-25 20:20:16 +00:00
gyro iio: gyro: itg3200: fix i2c read into the wrong stack location 2026-05-15 12:05:35 +01:00
health
humidity iio: humidity: hdc2010: remove unused interrupt_config 2026-03-03 21:20:02 +00:00
imu iio: imu: adis16550: fix stack leak in trigger handler 2026-05-15 12:01:38 +01:00
light iio: light: veml6075: add bounds check to veml6075_it_ms index 2026-06-27 11:08:17 +01:00
magnetometer iio: magnetometer: add support for QST QMC6308 2026-07-14 22:17:49 +02:00
multiplexer
orientation iio: orientation: hid-sensor-rotation: add timestamp hack to not break userspace 2026-03-14 12:15:58 +00:00
position
potentiometer
potentiostat
pressure iio: pressure: bmp280: fix stack leak in bmp580 trigger handler 2026-05-15 12:01:38 +01:00
proximity Linux 7.0-rc7 2026-04-06 09:04:53 +02:00
resolver iio: resolver: fix typo from degredation to degradation 2026-03-21 19:21:25 +00:00
temperature iio: temperature: tsys01: fix broken PROM checksum validation 2026-05-15 12:05:35 +01:00
test iio: test: fix typo from neeeds to needs in comment 2026-03-21 19:27:32 +00:00
trigger
iio_core.h
iio_core_trigger.h
industrialio-acpi.c
industrialio-backend.c iio: backend: use __free(fwnode_handle) for automatic cleanup 2026-03-21 12:02:24 +00:00
industrialio-buffer.c iio: buffer: Fix DMA fence leak in iio_buffer_enqueue_dmabuf() 2026-05-15 12:01:37 +01:00
industrialio-configfs.c
industrialio-core.c
industrialio-event.c iio: core: Add IIO_EV_INFO_SCALE to event info 2026-03-01 12:04:07 +00:00
industrialio-gts-helper.c
industrialio-sw-device.c
industrialio-sw-trigger.c
industrialio-trigger.c
industrialio-triggered-event.c
inkern.c iio: Fix iio_multiply_value use in iio_read_channel_processed_scale 2026-04-28 16:36:09 +01:00
Kconfig
Makefile
TODO