Add support for AK09918 which is register and scaling compatible with AK09912. It was tested in Xiaomi Redmi 5 Plus (vince). magnetometer@c { compatible = "asahi-kasei,ak09918", "asahi-kasei,ak09912"; reg = <0x0c>; vdd-supply = <&pm8953_l6>; mount-matrix = "1", "0", "0", "0", "1", "0", "0", "0", "1"; }; Add a fix for data reading according to datasheet [1] (9.4.3.2.) ST2 register have to be read out after read measurment data as third step because ST2 will realasing the lock on the measurment data. Without it the next reading will fail. [1] https://www.akm.com/content/dam/documents/products/electronic-compass/ak09918c/ak09918c-en-datasheet.pdf Signed-off-by: Barnabás Czémán <barnabas.czeman@xxxxxxxxxxxxxx> --- Changes in v4: - Fix commit title. - Add Fixes tag. - Add more comments inline. - Rebase on latest next. - Link to v3: https://lore.kernel.org/r/20240809-ak09918-v3-0-6b036db4d5ec@xxxxxxxxxxxxxx Changes in v3: - Relax failure on unknown device id for support more register compatible variants. - Change to fallback compatible. - Make ST2 to be always read after measuremnt read. - Reword fix commit with more explanation. - Link to v2: https://lore.kernel.org/r/20240806-ak09918-v2-0-c300da66c198@xxxxxxxxxxxxxx Changes in v2: - Remove unnecessary ak09918 compatbile. - Link to v1: https://lore.kernel.org/r/20240805-ak09918-v1-0-70837eebd7d8@xxxxxxxxxxxxxx --- Barnabás Czémán (2): iio: magnetometer: ak8975: Relax failure on unknown id iio: magnetometer: ak8975: Fix reading for ak099xx sensors Danila Tikhonov (2): dt-bindings: iio: magnetometer: Add ak09118 iio: magnetometer: ak8975: Add AK09118 support .../iio/magnetometer/asahi-kasei,ak8975.yaml | 4 ++ drivers/iio/magnetometer/Kconfig | 2 +- drivers/iio/magnetometer/ak8975.c | 78 ++++++++++++++++------ 3 files changed, 64 insertions(+), 20 deletions(-) --- base-commit: 367b5c3d53e57d51a5878816804652963da90950 change-id: 20240805-ak09918-4a6cfef91c32 Best regards, -- Barnabás Czémán <barnabas.czeman@xxxxxxxxxxxxxx>