From: Jonathan Cameron <jic23@kernel.org>
To: Remi Buisson via B4 Relay <devnull+remi.buisson.tdk.com@kernel.org>
Cc: remi.buisson@tdk.com, "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH v7 0/9] iio: imu: new inv_icm45600 driver
Date: Sun, 12 Oct 2025 17:42:40 +0100 [thread overview]
Message-ID: <20251012174240.24ad54df@jic23-huawei> (raw)
In-Reply-To: <20251007-add_newport_driver-v7-0-137223a1f79e@tdk.com>
On Tue, 07 Oct 2025 07:20:01 +0000
Remi Buisson via B4 Relay <devnull+remi.buisson.tdk.com@kernel.org> wrote:
> This series add a new driver for managing InvenSense ICM-456xx 6-axis IMUs.
> This next generation of chips includes new generations of 3-axis gyroscope
> and 3-axis accelerometer, support of I3C in addition to I2C and SPI, and
> intelligent MotionTracking features like pedometer, tilt detection, and
> tap detection.
>
> This series is delivering a driver supporting gyroscope, accelerometer and
> temperature data, with polling and buffering using hwfifo and watermark,
> on I2C, SPI and I3C busses.
>
> Gyroscope and accelerometer sensors are completely independent and can have
> different ODRs. Since there is only a single FIFO a specific value is used
> to mark invalid data. To keep the device standard we are de-multiplexing
> data from the FIFO to 2 IIO devices with 2 buffers, 1 for the accelerometer
> and 1 for the gyroscope. This architecture also enables to easily turn each
> sensor on/off without impacting the other. The device interrupt is used to
> read the FIFO and launch parsing of accelerometer and gyroscope data.
> This driver relies on the common Invensense timestamping mechanism to
> handle correctly FIFO watermark and dynamic changes of settings.
>
> The structure of the driver is quite similar to the inv_icm42600 driver,
> however there are significant reasons for adding a different driver for
> inv_icm45600, such as:
> - A completely different register map.
> - Different FIFO management, based on number of samples instead of bytes.
> - Different indirect register access mechanism.
>
> Note that regmap cache will be added in a dedicated patch set, to avoid
> increasing too much this one.
>
> Signed-off-by: Remi Buisson <remi.buisson@tdk.com>
I fixed up the patch 1 tags thing. b4 did it for me - though it
found both an Ack and a RB from Conor. I dropped the RB as that
combination makes no sense and didn't come from the same reply from Conor.
Please be careful about picking up such tags for future series.
Series applied to the testing branch of iio.git. That will get some brief
testing by 0-day. I'll rebase that on rc1 once available and then push it
out as the togreg branch which gets picked up by linux-next.
Nice work.
Thanks,
Jonathan
> ---
> Changes in v7:
> - Fix SPI module missing header.
> - Add comments on sub-field for fifo structure.
> - Use designated initializers in odr_to_period table.
> - Fix typo.
> - Rework regmap usage in inv_icm45600_buffer_set_fifo_en.
> - Added a comment to explain why we dont use fallbacks in DT.
> - Link to v6: https://lore.kernel.org/r/20250924-add_newport_driver-v6-0-76687b9d8a6e@tdk.com
>
> Changes in v6:
> - Reviewed headers inclusion
> - Formatting (line too short, ...)
> - moving code to patch it belongs
> - kernel doc fixes
> - Comments reviewed and simplified
> - removed dev_error_probe with ENOMEM
> - fixed useless ssize_t to size_t
> - removed useless pack attribute
> - Fixed unclear or malformed if
> - Removed useless fifo_is_data_valid wrapper
> - Use available macros instead of hardcoded values
> - Link to v5: https://lore.kernel.org/r/20250820-add_newport_driver-v5-0-2fc9f13dddee@tdk.com
>
> Changes in v5:
> - Simplified device tree, removed interrupts from mandatory param list
> - Allocated regmap_bulk_read/write buffers to dma-capable memory (for indirect reg accesses)
> - Use min/max to simplify code
> - Reordered some code/include/prototypes to the patch they belong
> - Updated to latest iio_push_to_buffers_with_ts API
> - Fix build warning with clang 18.1.8
> - Fixed some alignements
> - Avoiding irq_type silly assignation
> - Simplified fwnode_irq_get_byname error management
> - Re-ordered suspend/resume process to match + comments
> - Reverted VDDIO init to make it work without PM
> - Avoid PM underflow on VDDIO when removing inv_icm456000 module, by checking suspend state
> - Link to v4: https://lore.kernel.org/r/20250814-add_newport_driver-v4-0-4464b6600972@tdk.com
>
> Changes in v4:
> - Introduce gyro and accel in different patches.
> - Move IRQ probe to next patch.
> - Allocate fifo memory instead of static definition.
> - Rework VDDIO management to avoid underflow.
> - Rework suspend/resume using force suspend/resume API.
> - Use helper min, clamp and sizeof instead of custom implementation.
> - Re-scoping some variables, using reverse xmas tree for declarations.
> - Fix formatting: end of list, end of file, spaces, alignments.
> - Use dev_err_probe for I3C errors.
> - Factorizing default config code.
> - Link to v3: https://lore.kernel.org/r/20250717-add_newport_driver-v3-0-c6099e02c562@tdk.com
>
> Changes in v3:
> - Macros renamed and added to the patch using it.
> - Using unsigned for sensor configuration parameters.
> - Using sizeof instead of raw values.
> - Using fsleep instead of usleep.
> - Simplified dt-bindings examples, setting supplies as mandatory
> - Fix bad or useless casts.
> - Partially aligned power management following 20250709-icm42pmreg-v1-0-3d0e793c99b2@geanix.com
> - Fix "uninitialized symbols" warnings.
> - Link to v2: https://lore.kernel.org/r/20250710-add_newport_driver-v2-0-bf76d8142ef2@tdk.com
>
> Changes in v2:
> - Reworked patches order and content to ease review and make sure everything compiles
> - Reworked gyro and accel FSR as 2D arrays
> - Moved temperature processed sensor to core module
> - Use latest API to claim/release device
> - Implemented chip_info structure instead of relying on an enum
> - Removed power-mode ABI, only relying on ODR to switch power_mode
> - Reworked regulator control to use devm_ API where relevant
> - Reworked inv_icm45600_state.buffer as a union to avoid casts, using getter/setter instead of memcpy
> - Fixed dt-binding error and moved patch at the beginning of the patch-set
> - Reworked macros to use FIELD_PREP inline instead of inside the header
> - Fixed comment's grammar
> - Removed extra blank lines
> - Reordered part numbers alphanumerically
> - Removed useless default/error fallbacks
> - Typed accel, gyro and timestamp data when parsing FIFO
> - Fixed I2C module return code
> - Use Linux types instead of C standard
> - Reviewed headers inclusion to remove useless #include and to add missing ones
> - Link to v1: https://lore.kernel.org/r/20250411-add_newport_driver-v1-0-15082160b019@tdk.com
>
> ---
> Remi Buisson (9):
> dt-bindings: iio: imu: Add inv_icm45600
> iio: imu: inv_icm45600: add new inv_icm45600 driver
> iio: imu: inv_icm45600: add buffer support in iio devices
> iio: imu: inv_icm45600: add IMU IIO gyroscope device
> iio: imu: inv_icm45600: add IMU IIO accelerometer device
> iio: imu: inv_icm45600: add I2C driver for inv_icm45600 driver
> iio: imu: inv_icm45600: add SPI driver for inv_icm45600 driver
> iio: imu: inv_icm45600: add I3C driver for inv_icm45600 driver
> MAINTAINERS: add entry for inv_icm45600 6-axis imu sensor
>
> .../bindings/iio/imu/invensense,icm45600.yaml | 90 ++
> MAINTAINERS | 8 +
> drivers/iio/imu/Kconfig | 1 +
> drivers/iio/imu/Makefile | 1 +
> drivers/iio/imu/inv_icm45600/Kconfig | 70 ++
> drivers/iio/imu/inv_icm45600/Makefile | 16 +
> drivers/iio/imu/inv_icm45600/inv_icm45600.h | 385 ++++++++
> drivers/iio/imu/inv_icm45600/inv_icm45600_accel.c | 782 ++++++++++++++++
> drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.c | 557 ++++++++++++
> drivers/iio/imu/inv_icm45600/inv_icm45600_buffer.h | 101 +++
> drivers/iio/imu/inv_icm45600/inv_icm45600_core.c | 988 +++++++++++++++++++++
> drivers/iio/imu/inv_icm45600/inv_icm45600_gyro.c | 791 +++++++++++++++++
> drivers/iio/imu/inv_icm45600/inv_icm45600_i2c.c | 98 ++
> drivers/iio/imu/inv_icm45600/inv_icm45600_i3c.c | 78 ++
> drivers/iio/imu/inv_icm45600/inv_icm45600_spi.c | 108 +++
> 15 files changed, 4074 insertions(+)
> ---
> base-commit: 411e8b72c181e4f49352c12ced0fd8426eb683aa
> change-id: 20250411-add_newport_driver-529cf5b71ea8
>
> Best regards,
prev parent reply other threads:[~2025-10-12 16:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-07 7:20 [PATCH v7 0/9] iio: imu: new inv_icm45600 driver Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 1/9] dt-bindings: iio: imu: Add inv_icm45600 Remi Buisson via B4 Relay
2025-10-07 7:22 ` Krzysztof Kozlowski
2025-10-07 7:20 ` [PATCH v7 2/9] iio: imu: inv_icm45600: add new inv_icm45600 driver Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 3/9] iio: imu: inv_icm45600: add buffer support in iio devices Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 4/9] iio: imu: inv_icm45600: add IMU IIO gyroscope device Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 5/9] iio: imu: inv_icm45600: add IMU IIO accelerometer device Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 6/9] iio: imu: inv_icm45600: add I2C driver for inv_icm45600 driver Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 7/9] iio: imu: inv_icm45600: add SPI " Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 8/9] iio: imu: inv_icm45600: add I3C " Remi Buisson via B4 Relay
2025-10-07 7:20 ` [PATCH v7 9/9] MAINTAINERS: add entry for inv_icm45600 6-axis imu sensor Remi Buisson via B4 Relay
2025-10-12 16:42 ` Jonathan Cameron [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251012174240.24ad54df@jic23-huawei \
--to=jic23@kernel.org \
--cc=andy@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=devnull+remi.buisson.tdk.com@kernel.org \
--cc=dlechner@baylibre.com \
--cc=krzk+dt@kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
--cc=remi.buisson@tdk.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).