Message ID | 20230415231130.115094-1-mail@mariushoch.de (mailing list archive) |
---|---|
Headers | show |
Series | iio: st_sensors: Add lsm303d support | expand |
Hi Marius, On 4/16/23 01:11, Marius Hoch wrote: > Hi! > > This patch series adds support for the LSM303D accelerometer and > magnetometer. As the LSM303D is basically, as far as I can tell, > the LSM9DS0 without gyroscope, we can easily re-use its definitions. > > This was tested on a Lenovo Yoga Tablet 2 1051-F. Thank you for your work on this. I have had this on my own todo list since 2020 at least and I did not realize that Andy already added ST IMU support in 2021 so this just needed some extra device-ids :) I have tested this successfully on the following models: Lenovo Yoga Tablet 2 851F (Windows version 8") This version needs an accel-mount-matrix quick in hwdb since it has a portrait screen rather then a landscape screen (so 90° rotated): https://github.com/systemd/systemd/pull/27295 Note I've made sure that this quirk only applies to the 851 and not to the 1051. Lenovo Yoga Tablet 2 830F (Android version 8") Since the ACPI tables are broken in the Android BIOS these need a patch to x86-android-tablets to instantiate the i2c_client for the sensor, I'm still finalizing this patch and I'll submit it upstream when its finished. Tested-by: Hans de Goede <hansg@kernel.org> Regards, Hans p.s. 1: I noticed that auto-screen rotation using iio-sensor-proxy is quite slow so I wrote a patch to fix this :) : https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/merge_requests/366 2: There are some other unsupported sensors on these models too, perhaps you are interested in adding support for these too? Here are my personal notes on this: -Light sensor should work with drivers/iio/light/al3320a.c https://github.com/JideTechnology/remixos-kernel/commit/c52d55b4bd907e87b7b115b3943219f3e089a77a -MXM1120 HALL sensor, have datasheet, measures angle of kickstand thingie, use for SW_TABLET_MODE. Do a pdx86 driver just for the Tab 2 which checks that the kick stand is out *and* the BT keyboard is paired, in that case report SW_TABLET_MODE=0, in all other cases report SW_TABLET_MODE=1 ?? For the commit msg: Datasheet available here: http://haechitech.com/tech-support/ Requires creating an account, once you have an account you can immediately download the provided datasheets (or let me know if you want me to email you a copy) Especially the light sensor should be an easy win and light sensors are already supported in e.g. iio-sensor-proxy > Changes in v3: > Simplified the ACPI tables in the LSM9DS0 IMU driver, per Jonathan Cameron. > > Marius Hoch (6): > iio: accel: st_accel: Add LSM303D > iio: magnetometer: st_accel: Add LSM303D > iio: st_sensors: Add lsm303d support to the LSM9DS0 IMU driver > iio: st_sensors: Add ACPI support for lsm303d to the LSM9DS0 IMU > driver > iio: Comment that the LSM303D also has the Magnetometer DRDY > dt-bindings: iio: st-sensors: Add LSM303D accelerometer+magnetometer > > .../devicetree/bindings/iio/st,st-sensors.yaml | 1 + > drivers/iio/accel/st_accel_core.c | 1 + > drivers/iio/imu/st_lsm9ds0/Kconfig | 3 ++- > drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c | 12 ++++++++++++ > drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c | 12 ++++++++++++ > drivers/iio/magnetometer/st_magn_core.c | 1 + > include/linux/iio/common/st_sensors.h | 1 + > include/linux/platform_data/st_sensors_pdata.h | 2 +- > 8 files changed, 31 insertions(+), 2 deletions(-) > > > base-commit: e62252bc55b6d4eddc6c2bdbf95a448180d6a08d
Hi Hans, On 16/04/2023 22:19, Hans de Goede wrote: > Hi Marius, > > On 4/16/23 01:11, Marius Hoch wrote: >> Hi! >> >> This patch series adds support for the LSM303D accelerometer and >> magnetometer. As the LSM303D is basically, as far as I can tell, >> the LSM9DS0 without gyroscope, we can easily re-use its definitions. >> >> This was tested on a Lenovo Yoga Tablet 2 1051-F. > Thank you for your work on this. I have had this on my own todo list > since 2020 at least and I did not realize that Andy already added ST IMU > support in 2021 so this just needed some extra device-ids :) > > I have tested this successfully on the following models: > > Lenovo Yoga Tablet 2 851F (Windows version 8") > > This version needs an accel-mount-matrix quick in hwdb since it has > a portrait screen rather then a landscape screen (so 90° rotated): > https://github.com/systemd/systemd/pull/27295 > Note I've made sure that this quirk only applies to the 851 and not to the 1051. > > Lenovo Yoga Tablet 2 830F (Android version 8") > > Since the ACPI tables are broken in the Android BIOS these need > a patch to x86-android-tablets to instantiate the i2c_client > for the sensor, I'm still finalizing this patch and I'll submit > it upstream when its finished. > > Tested-by: Hans de Goede <hansg@kernel.org> > > Regards, > > Hans > > > p.s. > > 1: I noticed that auto-screen rotation using iio-sensor-proxy is quite slow > so I wrote a patch to fix this :) : > https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/merge_requests/366 Nice, that should make rotating fast (well, as fast these devices can handle). > > 2: There are some other unsupported sensors on these models too, > perhaps you are interested in adding support for these too? > > Here are my personal notes on this: > -Light sensor should work with drivers/iio/light/al3320a.c > https://github.com/JideTechnology/remixos-kernel/commit/c52d55b4bd907e87b7b115b3943219f3e089a77a That indeed worked like a charm, I'll post the patch later today. > > -MXM1120 HALL sensor, have datasheet, measures angle of kickstand thingie, use > for SW_TABLET_MODE. Do a pdx86 driver just for the Tab 2 which checks that the > kick stand is out *and* the BT keyboard is paired, in that case report > SW_TABLET_MODE=0, in all other cases report SW_TABLET_MODE=1 ?? > For the commit msg: > Datasheet available here: http://haechitech.com/tech-support/ > Requires creating an account, once you have an account you can immediately download > the provided datasheets (or let me know if you want me to email you a copy) Thanks for the pointers, that sounds like a nice little project. I'll give it a shot :) > > Especially the light sensor should be an easy win and light sensors > are already supported in e.g. iio-sensor-proxy Cheers, Marius > > > > > > > > > >> Changes in v3: >> Simplified the ACPI tables in the LSM9DS0 IMU driver, per Jonathan Cameron. >> >> Marius Hoch (6): >> iio: accel: st_accel: Add LSM303D >> iio: magnetometer: st_accel: Add LSM303D >> iio: st_sensors: Add lsm303d support to the LSM9DS0 IMU driver >> iio: st_sensors: Add ACPI support for lsm303d to the LSM9DS0 IMU >> driver >> iio: Comment that the LSM303D also has the Magnetometer DRDY >> dt-bindings: iio: st-sensors: Add LSM303D accelerometer+magnetometer >> >> .../devicetree/bindings/iio/st,st-sensors.yaml | 1 + >> drivers/iio/accel/st_accel_core.c | 1 + >> drivers/iio/imu/st_lsm9ds0/Kconfig | 3 ++- >> drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_i2c.c | 12 ++++++++++++ >> drivers/iio/imu/st_lsm9ds0/st_lsm9ds0_spi.c | 12 ++++++++++++ >> drivers/iio/magnetometer/st_magn_core.c | 1 + >> include/linux/iio/common/st_sensors.h | 1 + >> include/linux/platform_data/st_sensors_pdata.h | 2 +- >> 8 files changed, 31 insertions(+), 2 deletions(-) >> >> >> base-commit: e62252bc55b6d4eddc6c2bdbf95a448180d6a08d
Hi Marius, On 4/16/23 22:19, Hans de Goede wrote: <snip> > 2: There are some other unsupported sensors on these models too, > perhaps you are interested in adding support for these too? > > Here are my personal notes on this: > -Light sensor should work with drivers/iio/light/al3320a.c > https://github.com/JideTechnology/remixos-kernel/commit/c52d55b4bd907e87b7b115b3943219f3e089a77a > > -MXM1120 HALL sensor, have datasheet, measures angle of kickstand thingie, use > for SW_TABLET_MODE. Do a pdx86 driver just for the Tab 2 which checks that the > kick stand is out *and* the BT keyboard is paired, in that case report > SW_TABLET_MODE=0, in all other cases report SW_TABLET_MODE=1 ?? > For the commit msg: > Datasheet available here: http://haechitech.com/tech-support/ > Requires creating an account, once you have an account you can immediately download > the provided datasheets (or let me know if you want me to email you a copy) A quick follow up on this, since you said you were going to take a look. I think with the way bluetooth works under Linux, with a bunch of the work being done in userspace that figuring out if the BT keyboard is paired is not going to work in kernelspace. So I think the best we can do here is simply export the angle of the kickstand as an iio angle sensor. Regards, Hans