[PATCH v4 00/17] iio: magnetometer: ak8975: modernize and cleanup driver

Joshua Crofts via B4 Relay
2026-05-04T09:48:34Z

This series modernizes and cleans up the ak8975 driver, migrating to
more modern kernel APIs and cleaning up legacy code. Patches 7 through
17 were provided by Andy Shevchenko.

The series was compile-tested and ran in QEMU with i2c-stub and
no issues were found.

The patch regarding switching to devm_* functions might have to
go through an additional revision, otherwise everything else seems
good to go.

Changes include:
- replacing usleep_range() with fsleep() for optimization
- migrating to iopoll macros for better device polling
- removing unused headers and adding new ones
- checkpatch.pl fixes
- switching driver to use devm_* functions

v2:
- PATCH 1: reverted alphabetical header ordering per logical change
separation
- PATCH 2: added newline between fsleep() and return
- PATCH 3: fixed open parenthesis formatting
- PATCH 4: fixed whitespace issues, added <linux/time.h> for
USEC_PER_MSEC macro
v3:
- PATCH 1 & 2: split alphabetical ordering and header removal into two
separate patches
- PATCH 4: commit message fix
- PATCH 5 & 6: split error handling and polling loop replacement into
two separate patches
v4:
- PATCH 7-17: am Andy's changes into this series
- PATCH 2, 5, 6: fixup Andy's changes to existing patches

Signed-off-by: Joshua Crofts <joshua.crofts1@gmail.com>
---
Andy Shevchenko (11):
iio: magnetometer: ak8975: pass conversion timeouts as arguments
iio: magnetometer: ak8975: avoid using temporary variable
iio: magnetometer: ak8975: drop duplicate NULL check
iio: magnetometer: ak8975: remove duplicate error message
iio: magnetometer: ak8975: reduce usage of magic lengths of the buffer
iio: magnetometer: ak8975: unify return code variable name
iio: magnetometer: ak8975: switch to using managed resources
iio: magnetometer: ak8975: consistently use 'data' parameter
iio: magnetometer: ak8975: unify messages with help of dev_err_probe()
iio: magnetometer: ak8975: use temporary variable for struct device
iio: magnetometer: ak8975: make use of the macros from bits.h

Joshua Crofts (6):
iio: magnetometer: ak8975: sort headers alphabetically
iio: magnetometer: ak8975: update headers per IWYU principle
iio: magnetometer: ak8975: replace usleep_range() with fsleep()
iio: magnetometer: ak8975: change 'u8*' to 'u8 *' in cast
iio: magnetometer: ak8975: fix wrong errno on return
iio: magnetometer: ak8975: modernize polling loops with iopoll() macros

drivers/iio/magnetometer/ak8975.c | 375 ++++++++++++++++++--------------------
1 file changed, 181 insertions(+), 194 deletions(-)
---
base-commit: eade2b843d9b1f668fc1775f15611bb0a1999cd9
change-id: 20260423-magnetometer-fixes-18b993041763

Best regards,
--
Joshua Crofts <joshua.crofts1@gmail.com>