[PATCH v2 4/4] docs: iio: adxl345: update math and examples for scaling

Taha Ed-Dafili posted 4 patches 5 days, 19 hours ago
[PATCH v2 4/4] docs: iio: adxl345: update math and examples for scaling
Posted by Taha Ed-Dafili 5 days, 19 hours ago
Update the documentation to reflect the addition of event scaling
and correct existing technical errors inscale values.

key changes:
- Fix the 62.5 g/LSB typo to 62.5 mg/LSB and add SI unit conversion.
- Correct decimal precision of in_accel_scale and
in_accel_scale_available to match actual SI unit (m/s^2)
values reported by the driver.
- Add sysfs example showing how to read and interpret the
newly implemented event scale factor.

Suggested-by: Jonathan Cameron <jic23@kernel.org>
Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com>
---
 Documentation/iio/adxl345.rst | 41 +++++++++++++++++++++++------------
 1 file changed, 27 insertions(+), 14 deletions(-)

diff --git a/Documentation/iio/adxl345.rst b/Documentation/iio/adxl345.rst
index 41d209a4dccf..2f51a2a4fbd0 100644
--- a/Documentation/iio/adxl345.rst
+++ b/Documentation/iio/adxl345.rst
@@ -13,7 +13,11 @@ This driver supports Analog Device's ADXL345/375 on SPI/I2C bus.
 * `ADXL375 <https://www.analog.com/ADXL375>`_
 
 The ADXL345 is a general-purpose, low-power, 3-axis accelerometer with selectable
-measurement ranges. The ADXL345 supports the ±2 g, ±4 g, ±8 g, and ±16 g ranges.
+measurement ranges. The ADXL345 supports the following ranges:
+- ±2g  (approx. ±19.61 m/s^2)
+- ±4g  (approx. ±39.23 m/s^2)
+- ±8g  (approx. ±78.45 m/s^2)
+- ±16g (approx. ±156.91 m/s^2)
 
 2. Device Attributes
 ====================
@@ -98,23 +102,28 @@ listed.
 +---------------------------------------------+---------------------------------------------+
 | in_accel_gesture_singletap_timeout          | Single tap duration in [us]                 |
 +---------------------------------------------+---------------------------------------------+
-| in_accel_gesture_singletap_value            | Single tap threshold value in 62.5/LSB      |
+| in_accel_gesture_singletap_value            | Single tap threshold value in               |
+|                                             | 0.612915 m/s^2/LSB                          |
 +---------------------------------------------+---------------------------------------------+
 | in_accel_mag_falling_period                 | Inactivity time in seconds                  |
 +---------------------------------------------+---------------------------------------------+
-| in_accel_mag_falling_value                  | Inactivity threshold value in 62.5/LSB      |
+| in_accel_mag_falling_value                  | Inactivity threshold value in               |
+|                                             | 0.612915 m/s^2/LSB                          |
 +---------------------------------------------+---------------------------------------------+
 | in_accel_mag_adaptive_rising_en             | Enable AC coupled activity on X axis        |
 +---------------------------------------------+---------------------------------------------+
 | in_accel_mag_adaptive_falling_period        | AC coupled inactivity time in seconds       |
 +---------------------------------------------+---------------------------------------------+
-| in_accel_mag_adaptive_falling_value         | AC coupled inactivity threshold in 62.5/LSB |
+| in_accel_mag_adaptive_falling_value         | AC coupled inactivity threshold in          |
+|                                             | 0.612915 m/s^2/LSB                          |
 +---------------------------------------------+---------------------------------------------+
-| in_accel_mag_adaptive_rising_value          | AC coupled activity threshold in 62.5/LSB   |
+| in_accel_mag_adaptive_rising_value          | AC coupled activity threshold in            |
+|                                             | 0.612915 m/s^2/LSB                          |
 +---------------------------------------------+---------------------------------------------+
 | in_accel_mag_rising_en                      | Enable activity detection on X axis         |
 +---------------------------------------------+---------------------------------------------+
-| in_accel_mag_rising_value                   | Activity threshold value in 62.5/LSB        |
+| in_accel_mag_rising_value                   | Activity threshold value in                 |
+|                                             | 0.612915 m/s^2/LSB                          |
 +---------------------------------------------+---------------------------------------------+
 | in_accel_x_gesture_singletap_en             | Enable single tap detection on X axis       |
 +---------------------------------------------+---------------------------------------------+
@@ -140,8 +149,8 @@ When changing the **g range** configuration, the driver attempts to estimate
 appropriate activity and inactivity thresholds by scaling the default values
 based on the ratio of the previous range to the new one. The resulting threshold
 will never be zero and will always fall between 1 and 255, corresponding to up
-to 62.5 g/LSB as specified in the datasheet. However, you can override these
-estimated thresholds by setting explicit values.
+to 62.5 mg/LSB (0.612915 m/s^2/LSB) as specified in the datasheet. However,
+you can override these estimated thresholds by setting explicit values.
 
 When **activity** and **inactivity** events are enabled, the driver
 automatically manages hysteresis behavior by setting the **link** and
@@ -270,13 +279,13 @@ Scale range configuration:
 .. code-block:: bash
 
         root:/sys/bus/iio/devices/iio:device0> cat ./in_accel_scale
-        0.478899
+        0.004789
         root:/sys/bus/iio/devices/iio:device0> cat ./in_accel_scale_available
-        0.478899 0.957798 1.915595 3.831190
+        0.004789 0.009578 0.019156 0.038312
 
-        root:/sys/bus/iio/devices/iio:device0> echo 1.915595 > ./in_accel_scale
+        root:/sys/bus/iio/devices/iio:device0> echo 0.019156 > ./in_accel_scale
         root:/sys/bus/iio/devices/iio:device0> cat ./in_accel_scale
-        1.915595
+        0.019156
 
 Set output data rate (ODR):
 
@@ -312,10 +321,14 @@ Configure one or several events:
 
         root:/sys/bus/iio/devices/iio:device0> echo 24 > ./buffer0/length
 
-        ## AC coupled activity, threshold [62.5/LSB]
+        ## Check the event scale factor (0.0625 * 9.80665)
+        root:/sys/bus/iio/devices/iio:device0> cat ./events/in_accel_gesture_scale
+        0.612915
+
+        ## AC coupled activity, threshold [0.612915 m/s^2/LSB]
         root:/sys/bus/iio/devices/iio:device0> echo 6 > ./events/in_accel_mag_adaptive_rising_value
 
-        ## AC coupled inactivity, threshold, [62.5/LSB]
+        ## AC coupled inactivity, threshold, [0.612915 m/s^2/LSB]
         root:/sys/bus/iio/devices/iio:device0> echo 4 > ./events/in_accel_mag_adaptive_falling_value
 
         ## AC coupled inactivity, time [s]
-- 
2.47.3

Re: [PATCH v2 4/4] docs: iio: adxl345: update math and examples for scaling
Posted by David Lechner 5 days, 18 hours ago
On 2/1/26 12:33 PM, Taha Ed-Dafili wrote:
> Update the documentation to reflect the addition of event scaling
> and correct existing technical errors inscale values.

s/inscale/in scale/

> 
> key changes:
> - Fix the 62.5 g/LSB typo to 62.5 mg/LSB and add SI unit conversion.
> - Correct decimal precision of in_accel_scale and
> in_accel_scale_available to match actual SI unit (m/s^2)
> values reported by the driver.
> - Add sysfs example showing how to read and interpret the
> newly implemented event scale factor.
> 
> Suggested-by: Jonathan Cameron <jic23@kernel.org>
> Signed-off-by: Taha Ed-Dafili <0rayn.dev@gmail.com>
> ---
>  Documentation/iio/adxl345.rst | 41 +++++++++++++++++++++++------------
>  1 file changed, 27 insertions(+), 14 deletions(-)
> 
> diff --git a/Documentation/iio/adxl345.rst b/Documentation/iio/adxl345.rst
> index 41d209a4dccf..2f51a2a4fbd0 100644
> --- a/Documentation/iio/adxl345.rst
> +++ b/Documentation/iio/adxl345.rst
> @@ -13,7 +13,11 @@ This driver supports Analog Device's ADXL345/375 on SPI/I2C bus.
>  * `ADXL375 <https://www.analog.com/ADXL375>`_
>  
>  The ADXL345 is a general-purpose, low-power, 3-axis accelerometer with selectable
> -measurement ranges. The ADXL345 supports the ±2 g, ±4 g, ±8 g, and ±16 g ranges.
> +measurement ranges. The ADXL345 supports the following ranges:
> +- ±2g  (approx. ±19.61 m/s^2)
> +- ±4g  (approx. ±39.23 m/s^2)
> +- ±8g  (approx. ±78.45 m/s^2)
> +- ±16g (approx. ±156.91 m/s^2)
>  
>  2. Device Attributes
>  ====================
> @@ -98,23 +102,28 @@ listed.
>  +---------------------------------------------+---------------------------------------------+
>  | in_accel_gesture_singletap_timeout          | Single tap duration in [us]                 |
>  +---------------------------------------------+---------------------------------------------+
> -| in_accel_gesture_singletap_value            | Single tap threshold value in 62.5/LSB      |
> +| in_accel_gesture_singletap_value            | Single tap threshold value in               |
> +|                                             | 0.612915 m/s^2/LSB                          |
>  +---------------------------------------------+---------------------------------------------+
>  | in_accel_mag_falling_period                 | Inactivity time in seconds                  |
>  +---------------------------------------------+---------------------------------------------+
> -| in_accel_mag_falling_value                  | Inactivity threshold value in 62.5/LSB      |
> +| in_accel_mag_falling_value                  | Inactivity threshold value in               |
> +|                                             | 0.612915 m/s^2/LSB                          |
>  +---------------------------------------------+---------------------------------------------+
>  | in_accel_mag_adaptive_rising_en             | Enable AC coupled activity on X axis        |
>  +---------------------------------------------+---------------------------------------------+
>  | in_accel_mag_adaptive_falling_period        | AC coupled inactivity time in seconds       |
>  +---------------------------------------------+---------------------------------------------+
> -| in_accel_mag_adaptive_falling_value         | AC coupled inactivity threshold in 62.5/LSB |
> +| in_accel_mag_adaptive_falling_value         | AC coupled inactivity threshold in          |
> +|                                             | 0.612915 m/s^2/LSB                          |
>  +---------------------------------------------+---------------------------------------------+
> -| in_accel_mag_adaptive_rising_value          | AC coupled activity threshold in 62.5/LSB   |
> +| in_accel_mag_adaptive_rising_value          | AC coupled activity threshold in            |
> +|                                             | 0.612915 m/s^2/LSB                          |
>  +---------------------------------------------+---------------------------------------------+
>  | in_accel_mag_rising_en                      | Enable activity detection on X axis         |
>  +---------------------------------------------+---------------------------------------------+
> -| in_accel_mag_rising_value                   | Activity threshold value in 62.5/LSB        |
> +| in_accel_mag_rising_value                   | Activity threshold value in                 |
> +|                                             | 0.612915 m/s^2/LSB                          |
>  +---------------------------------------------+---------------------------------------------+
>  | in_accel_x_gesture_singletap_en             | Enable single tap detection on X axis       |
>  +---------------------------------------------+---------------------------------------------+

Why not also adding the new in_accel_*_scale attributes to the table?