Updates the proposed LSM303DLHC magnetometer device following review by Philippe Mathieu-Daudé.
This has been tested with Zephyr 2.6.0, as follows: $ west build -p auto -b mps2_an521 \ zephyr/samples/sensor/sensor_shell/ \ -- -DCONFIG_I2C_SHELL=y $ qemu-system-arm -M mps2-an521 -device loader,file=build/zephyr/zephyr.elf \ -serial stdio \ -monitor tcp:localhost:4444,server,nowait \ -device lsm303dlhc_mag,id=lsm303,address=0x1E uart:~$ i2c scan I2C_SHIELD1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 1 devices found on I2C_SHIELD1 Zephyr's LSM303DLHC driver can be enabled in a sample by adding the following DTS overlay: /* * Copyright (c) 2021 Linaro Limited * * SPDX-License-Identifier: Apache-2.0 */ &i2c_shield1 { lsm303dlhc-magn@1e { compatible = "st,lsm303dlhc-magn"; reg = <0x1e>; label = "LSM303DLHC-MAGN"; }; }; And the following KConfig settings: CONFIG_I2C=y CONFIG_I2C_SHELL=y CONFIG_SENSOR=y CONFIG_LSM303DLHC_MAGN=y When a sample with the above settings is run, the magnetometer can be read via the shell sensor command: uart:~$ sensor get LSM303DLHC-MAGN magn_xyz channel idx=11 magn_xyz x = 0.000000 y = 0.000000 z = 0.000000 Set the y-axis (via human monitor or qmp) to 1100, which equals 1 Gauss with the default gain settings: (qemu) qom-set lsm303 mag_y 1100 qom-set lsm303 mag_y 1100 And test again in Zephyr: uart:~$ sensor get LSM303DLHC-MAGN magn_xyz channel idx=11 magn_xyz x = 0.000000 y = 1.000000 z = 0.000000