2022-10-06 14:48:12

by Matti Vaittinen

[permalink] [raw]
Subject: [RFC PATCH v2 3/5] dt-bindings: iio: Add KX022A accelerometer

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 <[email protected]>

---
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

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 <[email protected]>
+
+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>;
+ };
+ };
--
2.37.3


--
Matti Vaittinen, Linux device drivers
ROHM Semiconductors, Finland SWDC
Kiviharjunlenkki 1E
90220 OULU
FINLAND

~~~ "I don't think so," said Rene Descartes. Just then he vanished ~~~
Simon says - in Latin please.
~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~
Thanks to Simon Glass for the translation =]


Attachments:
(No filename) (3.14 kB)
signature.asc (499.00 B)
Download all attachments

2022-10-06 16:04:01

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [RFC PATCH v2 3/5] dt-bindings: iio: Add KX022A accelerometer

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

2022-10-06 16:20:50

by Matti Vaittinen

[permalink] [raw]
Subject: Re: [RFC PATCH v2 3/5] dt-bindings: iio: Add KX022A accelerometer

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 ;)

--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~

2022-10-09 12:55:04

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [RFC PATCH v2 3/5] dt-bindings: iio: Add KX022A accelerometer

On Thu, 6 Oct 2022 18:32:22 +0300
Matti Vaittinen <[email protected]> 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

2022-10-10 10:17:28

by Matti Vaittinen

[permalink] [raw]
Subject: Re: [RFC PATCH v2 3/5] dt-bindings: iio: Add KX022A accelerometer

On 10/9/22 15:27, Jonathan Cameron wrote:
> On Thu, 6 Oct 2022 18:32:22 +0300
> Matti Vaittinen <[email protected]> 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.

--
Matti Vaittinen
Linux kernel developer at ROHM Semiconductors
Oulu Finland

~~ When things go utterly wrong vim users can always type :help! ~~