diff mbox series

[RFC,v2,3/5] dt-bindings: iio: Add KX022A accelerometer

Message ID 80fa42040f385eb47f4f3c71b9b02f643a643e38.1665066397.git.mazziesaccount@gmail.com (mailing list archive)
State Changes Requested
Headers show
Series iio: Support ROHM/Kionix kx022a | expand

Commit Message

Matti Vaittinen Oct. 6, 2022, 2:37 p.m. UTC
KX022A is a 3-axis Accelerometer from ROHM/Kionix. The sensor features
include variable ODRs, I2C and SPI control, FIFO/LIFO with watermark IRQ,
tap/motion detection, wake-up & back-to-sleep events, four acceleration
ranges (2, 4, 8 and 16g) and probably some other cool features.

Add the basic device tree description for the accelerometer. Only basic
accelerometer features are considered as of now - new properties may or
may not be needed in the future when rest of the features are supported.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>

---
RFCv1 => v2:
Based on a review by Krzysztof:
- fix a typo from commit message
- const compatible
- drop unnecessary descriptions/words
- io_vdd-supply => io-vdd-supply
- fix the binding example indentiation
Also,
- change my email address
- support both INT pins
---
 .../bindings/iio/accel/kionix,kx022a.yaml     | 67 +++++++++++++++++++
 1 file changed, 67 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/accel/kionix,kx022a.yaml

Comments

Krzysztof Kozlowski Oct. 6, 2022, 3:23 p.m. UTC | #1
On 06/10/2022 16:37, Matti Vaittinen wrote:
> KX022A is a 3-axis Accelerometer from ROHM/Kionix. The sensor features
> include variable ODRs, I2C and SPI control, FIFO/LIFO with watermark IRQ,
> tap/motion detection, wake-up & back-to-sleep events, four acceleration
> ranges (2, 4, 8 and 16g) and probably some other cool features.
> 

Thank you for your patch. There is something to discuss/improve.

> +
> +properties:
> +  compatible:
> +    const: kionix,kx022a
> +
> +  reg:
> +    maxItems: 1
> +
> +  interrupts:
> +    minItems: 1
> +    maxItems: 2
> +
> +  interrupt-names:
> +    minItems: 1
> +    maxItems: 2
> +    items:
> +      enum:
> +        - INT1
> +        - INT2

This allows any order, which I assume was your intention. However maybe
at least fix it a bit like:
minItems: 1
items:
  - enum: [ int1, int2]
  - const: int2

OTOH, the names are not really descriptive. Do they match pin names?


Best regards,
Krzysztof
Matti Vaittinen Oct. 6, 2022, 3:32 p.m. UTC | #2
Hi dee Ho Krzysztof,

On 10/6/22 18:23, Krzysztof Kozlowski wrote:
> On 06/10/2022 16:37, Matti Vaittinen wrote:
>> KX022A is a 3-axis Accelerometer from ROHM/Kionix. The sensor features
>> include variable ODRs, I2C and SPI control, FIFO/LIFO with watermark IRQ,
>> tap/motion detection, wake-up & back-to-sleep events, four acceleration
>> ranges (2, 4, 8 and 16g) and probably some other cool features.
>>
> 
> Thank you for your patch. There is something to discuss/improve.
> 
>> +
>> +properties:
>> +  compatible:
>> +    const: kionix,kx022a
>> +
>> +  reg:
>> +    maxItems: 1
>> +
>> +  interrupts:
>> +    minItems: 1
>> +    maxItems: 2
>> +
>> +  interrupt-names:
>> +    minItems: 1
>> +    maxItems: 2
>> +    items:
>> +      enum:
>> +        - INT1
>> +        - INT2
> 
> This allows any order, which I assume was your intention.

Yes. I don't see real need to restrict ordering - besides, with my 
yaml/schema skills it'd took eternity to find corrct example(s) ;)

My intention is that the user can give either one of these - or both. 
Order needs naturally to match the order of IRQs - but this we can't know.

> However maybe
> at least fix it a bit like:
> minItems: 1
> items:
>    - enum: [ int1, int2]
>    - const: int2

If you say so XD
I can fix this for v3 :)

> 
> OTOH, the names are not really descriptive. Do they match pin names?
> 

Yes. They match to pin names used in the data-sheet.


Yours
	-- Matti

Ps. I've heard this year has not been that good with the mushrooms here 
in Finland ;)
Jonathan Cameron Oct. 9, 2022, 12:27 p.m. UTC | #3
On Thu, 6 Oct 2022 18:32:22 +0300
Matti Vaittinen <mazziesaccount@gmail.com> wrote:

> Hi dee Ho Krzysztof,
> 
> On 10/6/22 18:23, Krzysztof Kozlowski wrote:
> > On 06/10/2022 16:37, Matti Vaittinen wrote:  
> >> KX022A is a 3-axis Accelerometer from ROHM/Kionix. The sensor features
> >> include variable ODRs, I2C and SPI control, FIFO/LIFO with watermark IRQ,
> >> tap/motion detection, wake-up & back-to-sleep events, four acceleration
> >> ranges (2, 4, 8 and 16g) and probably some other cool features.
> >>  
> > 
> > Thank you for your patch. There is something to discuss/improve.
> >   
> >> +
> >> +properties:
> >> +  compatible:
> >> +    const: kionix,kx022a
> >> +
> >> +  reg:
> >> +    maxItems: 1
> >> +
> >> +  interrupts:
> >> +    minItems: 1
> >> +    maxItems: 2
> >> +
> >> +  interrupt-names:
> >> +    minItems: 1
> >> +    maxItems: 2
> >> +    items:
> >> +      enum:
> >> +        - INT1
> >> +        - INT2  
> > 
> > This allows any order, which I assume was your intention.  
> 
> Yes. I don't see real need to restrict ordering - besides, with my 
> yaml/schema skills it'd took eternity to find corrct example(s) ;)
> 
> My intention is that the user can give either one of these - or both. 
> Order needs naturally to match the order of IRQs - but this we can't know.
> 
> > However maybe
> > at least fix it a bit like:
> > minItems: 1
> > items:
> >    - enum: [ int1, int2]
> >    - const: int2  
> 
> If you say so XD
> I can fix this for v3 :)
If my limited understanding is correct, one advantage of this restriction
is that we can't have

"INT1", "INT1"
though that may be prevented elsewhere...

There is no loss of useful flexibility in how Krzysztof suggested doing it
so looks like a good suggestion to me.

Jonathan
Matti Vaittinen Oct. 10, 2022, 9:28 a.m. UTC | #4
On 10/9/22 15:27, Jonathan Cameron wrote:
> On Thu, 6 Oct 2022 18:32:22 +0300
> Matti Vaittinen <mazziesaccount@gmail.com> wrote:
> 
>> Hi dee Ho Krzysztof,
>>
>> On 10/6/22 18:23, Krzysztof Kozlowski wrote:
>>> On 06/10/2022 16:37, Matti Vaittinen wrote:
>>>> KX022A is a 3-axis Accelerometer from ROHM/Kionix. The sensor features
>>>> include variable ODRs, I2C and SPI control, FIFO/LIFO with watermark IRQ,
>>>> tap/motion detection, wake-up & back-to-sleep events, four acceleration
>>>> ranges (2, 4, 8 and 16g) and probably some other cool features.
>>>>   
>>>
>>> Thank you for your patch. There is something to discuss/improve.
>>>    
>>>> +
>>>> +properties:
>>>> +  compatible:
>>>> +    const: kionix,kx022a
>>>> +
>>>> +  reg:
>>>> +    maxItems: 1
>>>> +
>>>> +  interrupts:
>>>> +    minItems: 1
>>>> +    maxItems: 2
>>>> +
>>>> +  interrupt-names:
>>>> +    minItems: 1
>>>> +    maxItems: 2
>>>> +    items:
>>>> +      enum:
>>>> +        - INT1
>>>> +        - INT2
>>>
>>> This allows any order, which I assume was your intention.
>>
>> Yes. I don't see real need to restrict ordering - besides, with my
>> yaml/schema skills it'd took eternity to find corrct example(s) ;)
>>
>> My intention is that the user can give either one of these - or both.
>> Order needs naturally to match the order of IRQs - but this we can't know.
>>
>>> However maybe
>>> at least fix it a bit like:
>>> minItems: 1
>>> items:
>>>     - enum: [ int1, int2]
>>>     - const: int2
>>
>> If you say so XD
>> I can fix this for v3 :)
> If my limited understanding is correct, one advantage of this restriction
> is that we can't have
> 
> "INT1", "INT1"
> though that may be prevented elsewhere...
> 
> There is no loss of useful flexibility in how Krzysztof suggested doing it
> so looks like a good suggestion to me.
Thanks Krzysztof and Jonathan :) I'll use Krzysztof's suggestion for the 
v3.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/iio/accel/kionix,kx022a.yaml b/Documentation/devicetree/bindings/iio/accel/kionix,kx022a.yaml
new file mode 100644
index 000000000000..2919c436e46f
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/accel/kionix,kx022a.yaml
@@ -0,0 +1,67 @@ 
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/accel/kionix,kx022a.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM/Kionix KX022A Accelerometer
+
+maintainers:
+  - Matti Vaittinen <mazziesaccount@gmail.com>
+
+description: |
+  KX022A is a 3-axis accelerometer supporting +/- 2G, 4G, 8G and 16G ranges,
+  output data-rates from 0.78Hz to 1600Hz and a hardware-fifo buffering.
+  KX022A can be accessed either via I2C or SPI.
+
+properties:
+  compatible:
+    const: kionix,kx022a
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    minItems: 1
+    maxItems: 2
+
+  interrupt-names:
+    minItems: 1
+    maxItems: 2
+    items:
+      enum:
+        - INT1
+        - INT2
+
+  vdd-supply: true
+  io-vdd-supply: true
+
+  mount-matrix:
+    description: |
+      an optional 3x3 mounting rotation matrix.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        accel@1f {
+            compatible = "kionix,kx022a";
+            reg = <0x1f>;
+
+            interrupt-parent = <&gpio1>;
+            interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
+            interrupt-names = "INT1";
+
+            io-vdd-supply = <&iovdd>;
+            vdd-supply = <&vdd>;
+        };
+    };