linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 7/8] dt-bindings: iio: imu: Add inv_icm45600 documentation
Date: Sat, 12 Apr 2025 19:24:28 +0100	[thread overview]
Message-ID: <20250412192428.1938b08c@jic23-huawei> (raw)
In-Reply-To: <20250411-add_newport_driver-v1-7-15082160b019@tdk.com>

On Fri, 11 Apr 2025 13:28:39 +0000
Remi Buisson via B4 Relay <devnull+remi.buisson.tdk.com@kernel.org> wrote:

> From: Remi Buisson <remi.buisson@tdk.com>
> 
> Document the ICM-456xxx devices devicetree bindings.
> Describe custom sysfs API for controlling the power modes.
> 
> Signed-off-by: Remi Buisson <remi.buisson@tdk.com>
> ---
>  .../ABI/testing/sysfs-bus-iio-inv_icm45600         |  37 ++++++
>  .../bindings/iio/imu/invensense,icm45600.yaml      | 136 +++++++++++++++++++++
>  2 files changed, 173 insertions(+)
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-iio-inv_icm45600 b/Documentation/ABI/testing/sysfs-bus-iio-inv_icm45600
> new file mode 100644
> index 0000000000000000000000000000000000000000..8d2d9b68ad9e35fe0d6c157e984afc327eab92ec
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-bus-iio-inv_icm45600
> @@ -0,0 +1,37 @@

As has been noted, wrong place. This goes in the patch with the relevant ABI
being added to the driver.

> +What:		/sys/bus/iio/devices/iio:deviceX/in_accel_power_mode
> +KernelVersion:	6.16
> +Contact:	linux-iio@vger.kernel.org
> +Description:
> +		Accelerometer power mode. Setting this attribute will set the
> +		requested power mode to use if the ODR support it. If ODR
> +		support only 1 mode, power mode will be enforced.
If the mode id enforced, then the ODR will change?  I hope not. ODR should dominate here
though note you should match ABI terms anyway so sampling_frequency.

Also as noted, these already exist in some form in the main docs. Add entries
there.

> +		Reading this attribute will return the current accelerometer
> +		power mode if the sensor is on, or the requested value if the
> +		sensor is off. The value between real and requested value can
> +		be different for ODR supporting only 1 mode.

I'd just fail the set. If the ODR is changed in a fashion that requires this
to change, just do it and have this attribute return the new value. All ABI
is allowed when necessary to have side effects on other IIO ABI elements.
We try to keep that as intuitive as possible, but sometimes the hardware
puts very complex requirements on us.

> +
> +What:		/sys/bus/iio/devices/iio:deviceX/in_accel_power_mode_available
> +KernelVersion:	6.16
> +Contact:	linux-iio@vger.kernel.org
> +Description:
> +		List of available accelerometer power modes that can be set in
> +		in_accel_power_mode attribute.
> +
> +What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_power_mode
> +KernelVersion:	6.16
> +Contact:	linux-iio@vger.kernel.org
> +Description:
> +		Gyroscope power mode. Setting this attribute will set the
> +		requested power mode to use if the ODR support it. If ODR
> +		support only 1 mode, power mode will be enforced.
> +		Reading this attribute will return the current gyroscope
> +		power mode if the sensor is on, or the requested value if the
> +		sensor is off. The value between real and requested value can
> +		be different for ODR supporting only 1 mode.
> +
> +What:		/sys/bus/iio/devices/iio:deviceX/in_anglvel_power_mode_available
> +KernelVersion:	6.16
> +Contact:	linux-iio@vger.kernel.org
> +Description:
> +		List of available gyroscope power modes that can be set in
> +		in_anglvel_power_mode attribute.


> diff --git a/Documentation/devicetree/bindings/iio/imu/invensense,icm45600.yaml b/Documentation/devicetree/bindings/iio/imu/invensense,icm45600.yaml
> new file mode 100644
> index 0000000000000000000000000000000000000000..51455f0b5cb90abdd823f154e45891ad364296e6
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/imu/invensense,icm45600.yaml
> @@ -0,0 +1,136 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/imu/invensense,icm45600.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: InvenSense ICM-456xx Inertial Measurement Unit
I'd go with Invensense ICM-45600 and similar Inertial Measurement Units.

We have been bitten too many times in the past by wild cards and manufacturers
who love to put something in a numbering scheme for marketing reasons (or just
because they feel like it) rather than because they are in any way related
at the hardware level.

> +
> +maintainers:
> +  - Remi Buisson <remi.buisson@tdk.com>
> +
> +description: |
> +  6-axis MotionTracking device that combines a 3-axis gyroscope and a 3-axis
> +  accelerometer.
> +
> +  It has a configurable host interface that supports I3C, I2C and SPI serial
> +  communication, features up to 8kB FIFO and 2 programmable interrupts with
> +  ultra-low-power wake-on-motion support to minimize system power consumption.
> +
> +  Other industry-leading features include InvenSense on-chip APEX Motion
> +  Processing engine for gesture recognition, activity classification, and
> +  pedometer, along with programmable digital filters, and an embedded
> +  temperature sensor.
> +
> +  https://invensense.tdk.com/wp-content/uploads/documentation/DS-000576_ICM-45605.pdf
> +
> +properties:
> +  compatible:
> +    enum:
> +      - invensense,icm45605

Alpha numeric order for these.

> +      - invensense,icm45686
> +      - invensense,icm45688p
> +      - invensense,icm45608
> +      - invensense,icm45634
> +      - invensense,icm45689
> +      - invensense,icm45606
> +      - invensense,icm45687
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    minItems: 1
> +    maxItems: 2
> +
> +  interrupt-names:
> +    minItems: 1
> +    maxItems: 2
> +    items:
> +      enum:
> +        - INT1
> +        - INT2
> +    description: Choose chip interrupt pin to be used as interrupt input.
> +
> +  drive-open-drain:
> +    type: boolean
> +
> +  vdd-supply:
> +    description: Regulator that provides power to the sensor
For really 'standard' supplies like these it is also acceptable to just
do
    vdd-supply: true
    vddio-supply: true

When description adds little there is no need to give one.

> +
> +  vddio-supply:
> +    description: Regulator that provides power to the bus
> +
I think you need
    mount-matrix: true
as well.

> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - interrupt-names
> +
> +allOf:
> +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> +
> +unevaluatedProperties: false

> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        icm45605@68 {
> +            compatible = "invensense,icm45605";
> +            reg = <0x68>;
> +            interrupt-parent = <&gpio2>;
> +            interrupt-names = "INT1";
> +            interrupts = <7 IRQ_TYPE_EDGE_RAISING>;
> +            vdd-supply = <&vdd>;
> +            vddio-supply = <&vddio>;
> +            mount-matrix = "1", "0", "0",
> +                           "0", "1", "0",
> +                           "0", "0", "1";
> +        };
> +    };
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    spi {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        icm45605@0 {
> +            compatible = "invensense,icm45605";
> +            reg = <0>;
> +            spi-max-frequency = <24000000>;
> +            interrupt-parent = <&gpio1>;
> +            interrupt-names = "INT1";
> +            interrupts = <6 IRQ_TYPE_EDGE_RAISING>;
> +            vdd-supply = <&vdd>;
> +            vddio-supply = <&vddio>;
> +            mount-matrix = "1", "0", "0",
> +                           "0", "1", "0",
> +                           "0", "0", "1";
> +        };
> +    };
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    i3c {
> +        #address-cells = <3>;
> +        #size-cells = <0>;
> +
> +        icm45600@68,46A00000011 {
> +            compatible = "invensense,icm45600";
> +            reg = <0x68 0x46A 0x84>;
> +            interrupt-parent = <&gpio1>;
> +            interrupt-names = "INT1";
> +            interrupts = <5 IRQ_TYPE_EDGE_RISING>;
> +            vdd-supply = <&vdd>;
> +            vddio-supply = <&vddio>;
> +            mount-matrix = "1", "0", "0",
> +                           "0", "1", "0",
> +                           "0", "0", "1";
> +        };
> +    };
> 


  parent reply	other threads:[~2025-04-12 18:24 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-11 13:28 [PATCH 0/8] iio: imu: new inv_icm45600 driver Remi Buisson via B4 Relay
2025-04-11 13:28 ` [PATCH 1/8] iio: imu: inv_icm45600: add " Remi Buisson via B4 Relay
2025-04-12 19:10   ` Jonathan Cameron
2025-04-11 13:28 ` [PATCH 2/8] iio: imu: inv_icm45600: add I2C driver for " Remi Buisson via B4 Relay
2025-04-11 19:21   ` Andy Shevchenko
2025-04-11 13:28 ` [PATCH 3/8] iio: imu: inv_icm45600: add SPI " Remi Buisson via B4 Relay
2025-04-11 13:28 ` [PATCH 4/8] iio: imu: inv_icm45600: add I3C " Remi Buisson via B4 Relay
2025-04-11 13:28 ` [PATCH 5/8] iio: imu: inv_icm45600: add buffer support in iio devices Remi Buisson via B4 Relay
2025-04-12 19:13   ` Jonathan Cameron
2025-04-12 19:15     ` Andy Shevchenko
2025-04-11 13:28 ` [PATCH 6/8] iio: imu: add Kconfig and Makefile for inv_icm45600 driver Remi Buisson via B4 Relay
2025-04-11 17:36   ` Jonathan Cameron
2025-04-11 13:28 ` [PATCH 7/8] dt-bindings: iio: imu: Add inv_icm45600 documentation Remi Buisson via B4 Relay
2025-04-11 14:39   ` Rob Herring (Arm)
2025-04-11 21:16   ` Rob Herring
2025-04-11 21:18   ` David Lechner
2025-04-12 18:17     ` Jonathan Cameron
2025-04-12 18:24   ` Jonathan Cameron [this message]
2025-04-11 13:28 ` [PATCH 8/8] MAINTAINERS: add entry for inv_icm45600 6-axis imu sensor Remi Buisson via B4 Relay

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=20250412192428.1938b08c@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).