.../bindings/iio/imu/bosch,bmi270.yaml | 4 +- drivers/iio/imu/bmi270/Kconfig | 1 + drivers/iio/imu/bmi270/bmi270.h | 10 + drivers/iio/imu/bmi270/bmi270_core.c | 424 +++++++++++++++++- drivers/iio/imu/bmi270/bmi270_i2c.c | 9 + drivers/iio/imu/bmi270/bmi270_spi.c | 2 + 6 files changed, 448 insertions(+), 2 deletions(-)
Add support for the Bosch BMI260 IMU to the BMI270 device driver. The BMI270 and BMI260 have nearly identical register maps, but have different chip IDs and firmware. The BMI260 is the IMU on a number of handheld PCs. Unfortunately, these devices often misidentify it in ACPI as a BMI160 ("BMI0160," for example), and it can only be correctly identified using the chip ID. To avoid conflicts with the bmi160 driver, this driver will not probe if it detects a BMI160 chip ID. Also add triggered buffer and scale / sampling frequency attributes, which the input tools commonly used on handheld PCs require to support IMUs. Like the BMI270, the BMI260 requires firmware to be provided. Signed-off-by: Justin Weiss <justin@justinweiss.com> --- Changelog: V4 - Move triggered buffer and attributes patches to the front of the set - Add more detailed commit message to DT documentation patch - Remove ACPI IDs from SPI driver - Remove 10EC5280 and BMI0260 ACPI IDs from I2C driver - Add DSDT excerpt for BMI0160 ACPI ID V3 https://lore.kernel.org/lkml/20241020220011.212395-1-justin@justinweiss.com/ - Fix: Remove SCALE and FREQUENCY attributes - Use separate configuration structures instead of an array - Add bmi260 as compatible ID in bmi270 dt binding doc - Check chip ID against value in configuration instead of constant - Update comment for DMA alignment - Remove unreachable return statement V2 https://lore.kernel.org/all/20241018233723.28757-1-justin@justinweiss.com/ - Fix commit titles - Fix: Change FREQUENCY to SAMP_FREQ - Split chip_info refactor into a separate commit from adding bmi260 - Only fail probe when BMI160 is detected - Update chip_info based on detected chip ID - Add BMI260 to DT documentation - Add BMI260 to of_device_id - Add expected BMI260 ACPI ID to the SPI driver - Remove unused/unexpected BMI260 ACPI IDs - Remove trailing comma for null terminators - Use DMA_MINALIGN for channel buffer - Read channels in bulk - Improve for loops for detecting scale / odr attrs - Add missing masks - Use FIELD_GET - Use read_avail instead of custom attrs - Misc. formatting and line wrapping improvements V1 https://lore.kernel.org/all/20241011153751.65152-1-justin@justinweiss.com/ Justin Weiss (4): iio: imu: bmi270: Add triggered buffer for Bosch BMI270 IMU iio: imu: bmi270: Add scale and sampling frequency to BMI270 IMU dt-bindings: iio: imu: bmi270: Add Bosch BMI260 iio: imu: bmi270: Add support for BMI260 .../bindings/iio/imu/bosch,bmi270.yaml | 4 +- drivers/iio/imu/bmi270/Kconfig | 1 + drivers/iio/imu/bmi270/bmi270.h | 10 + drivers/iio/imu/bmi270/bmi270_core.c | 424 +++++++++++++++++- drivers/iio/imu/bmi270/bmi270_i2c.c | 9 + drivers/iio/imu/bmi270/bmi270_spi.c | 2 + 6 files changed, 448 insertions(+), 2 deletions(-) base-commit: 9090ececac9ff1e22fb7e042f3c886990a8fb090 -- 2.47.0
On Sun, 27 Oct 2024 10:20:21 -0700 Justin Weiss <justin@justinweiss.com> wrote: > Add support for the Bosch BMI260 IMU to the BMI270 device driver. > > The BMI270 and BMI260 have nearly identical register maps, but have > different chip IDs and firmware. > > The BMI260 is the IMU on a number of handheld PCs. Unfortunately, > these devices often misidentify it in ACPI as a BMI160 ("BMI0160," for > example), and it can only be correctly identified using the chip > ID. To avoid conflicts with the bmi160 driver, this driver will not > probe if it detects a BMI160 chip ID. > > Also add triggered buffer and scale / sampling frequency attributes, > which the input tools commonly used on handheld PCs require to support > IMUs. > > Like the BMI270, the BMI260 requires firmware to be provided. > Signed-off-by: Justin Weiss <justin@justinweiss.com> Applied with a few tweaks thanks to Andy's review. I'll push this out as testing to let 0-day poke at it before it goes into linux-next in a few days time. Thanks, Jonathan > --- > > Changelog: > > V4 > - Move triggered buffer and attributes patches to the front of the set > - Add more detailed commit message to DT documentation patch > - Remove ACPI IDs from SPI driver > - Remove 10EC5280 and BMI0260 ACPI IDs from I2C driver > - Add DSDT excerpt for BMI0160 ACPI ID > > V3 > https://lore.kernel.org/lkml/20241020220011.212395-1-justin@justinweiss.com/ > - Fix: Remove SCALE and FREQUENCY attributes > - Use separate configuration structures instead of an array > - Add bmi260 as compatible ID in bmi270 dt binding doc > - Check chip ID against value in configuration instead of constant > - Update comment for DMA alignment > - Remove unreachable return statement > > V2 > https://lore.kernel.org/all/20241018233723.28757-1-justin@justinweiss.com/ > - Fix commit titles > - Fix: Change FREQUENCY to SAMP_FREQ > - Split chip_info refactor into a separate commit from adding bmi260 > - Only fail probe when BMI160 is detected > - Update chip_info based on detected chip ID > - Add BMI260 to DT documentation > - Add BMI260 to of_device_id > - Add expected BMI260 ACPI ID to the SPI driver > - Remove unused/unexpected BMI260 ACPI IDs > - Remove trailing comma for null terminators > - Use DMA_MINALIGN for channel buffer > - Read channels in bulk > - Improve for loops for detecting scale / odr attrs > - Add missing masks > - Use FIELD_GET > - Use read_avail instead of custom attrs > - Misc. formatting and line wrapping improvements > > V1 > https://lore.kernel.org/all/20241011153751.65152-1-justin@justinweiss.com/ > > Justin Weiss (4): > iio: imu: bmi270: Add triggered buffer for Bosch BMI270 IMU > iio: imu: bmi270: Add scale and sampling frequency to BMI270 IMU > dt-bindings: iio: imu: bmi270: Add Bosch BMI260 > iio: imu: bmi270: Add support for BMI260 > > .../bindings/iio/imu/bosch,bmi270.yaml | 4 +- > drivers/iio/imu/bmi270/Kconfig | 1 + > drivers/iio/imu/bmi270/bmi270.h | 10 + > drivers/iio/imu/bmi270/bmi270_core.c | 424 +++++++++++++++++- > drivers/iio/imu/bmi270/bmi270_i2c.c | 9 + > drivers/iio/imu/bmi270/bmi270_spi.c | 2 + > 6 files changed, 448 insertions(+), 2 deletions(-) > > > base-commit: 9090ececac9ff1e22fb7e042f3c886990a8fb090
Jonathan Cameron <jic23@kernel.org> writes: > Applied with a few tweaks thanks to Andy's review. > > I'll push this out as testing to let 0-day poke at it before it goes > into linux-next in a few days time. > Thank you, and thanks for all the help! Justin > Thanks, > > Jonathan
© 2016 - 2024 Red Hat, Inc.