2022-04-12 23:48:22

by Charles Mirabile

[permalink] [raw]
Subject: [PATCH v8 4/6] dt-bindings: mfd: sensehat: Add Raspberry Pi Sense HAT schema

This patch adds the device tree bindings for the Sense HAT
and each of its children devices in yaml form.

Co-developed-by: Mwesigwa Guma <[email protected]>
Signed-off-by: Mwesigwa Guma <[email protected]>
Co-developed-by: Joel Savitz <[email protected]>
Signed-off-by: Joel Savitz <[email protected]>
Signed-off-by: Charles Mirabile <[email protected]>
---
.../raspberrypi,sensehat-display.yaml | 27 ++++++++
.../input/raspberrypi,sensehat-joystick.yaml | 33 +++++++++
.../bindings/mfd/raspberrypi,sensehat.yaml | 69 +++++++++++++++++++
3 files changed, 129 insertions(+)
create mode 100644 Documentation/devicetree/bindings/auxdisplay/raspberrypi,sensehat-display.yaml
create mode 100644 Documentation/devicetree/bindings/input/raspberrypi,sensehat-joystick.yaml
create mode 100644 Documentation/devicetree/bindings/mfd/raspberrypi,sensehat.yaml

diff --git a/Documentation/devicetree/bindings/auxdisplay/raspberrypi,sensehat-display.yaml b/Documentation/devicetree/bindings/auxdisplay/raspberrypi,sensehat-display.yaml
new file mode 100644
index 000000000000..5e41d6b7817d
--- /dev/null
+++ b/Documentation/devicetree/bindings/auxdisplay/raspberrypi,sensehat-display.yaml
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/auxdisplay/raspberrypi,sensehat-display.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Raspberry Pi Sensehat Display
+
+maintainers:
+ - Charles Mirabile <[email protected]>
+ - Mwesigwa Guma <[email protected]>
+ - Joel Savitz <[email protected]>
+
+description:
+ This device is part of the sensehat multi function device.
+ For more information see ../mfd/raspberrypi,sensehat.yaml.
+
+ This device features a programmable 8x8 RGB LED matrix.
+
+properties:
+ compatible:
+ const: raspberrypi,sensehat-display
+
+required:
+ - compatible
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/input/raspberrypi,sensehat-joystick.yaml b/Documentation/devicetree/bindings/input/raspberrypi,sensehat-joystick.yaml
new file mode 100644
index 000000000000..c97cd1d8eac6
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/raspberrypi,sensehat-joystick.yaml
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/raspberrypi,sensehat-joystick.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Raspberry Pi Sensehat Joystick
+
+maintainers:
+ - Charles Mirabile <[email protected]>
+ - Mwesigwa Guma <[email protected]>
+ - Joel Savitz <[email protected]>
+
+description:
+ This device is part of the sensehat multi function device.
+ For more information see ../mfd/raspberrypi,sensehat.yaml.
+
+ This device features a five button joystick (up, down,left,
+ right, click)
+
+properties:
+ compatible:
+ const: raspberrypi,sensehat-joystick
+
+ interrupts:
+ items:
+ - description: pin number for joystick interrupt
+
+required:
+ - compatible
+ - interrupts
+
+additionalProperties: false
diff --git a/Documentation/devicetree/bindings/mfd/raspberrypi,sensehat.yaml b/Documentation/devicetree/bindings/mfd/raspberrypi,sensehat.yaml
new file mode 100644
index 000000000000..2484ec91b430
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/raspberrypi,sensehat.yaml
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/raspberrypi,sensehat.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Raspberry Pi Sensehat
+
+maintainers:
+ - Charles Mirabile <[email protected]>
+ - Mwesigwa Guma <[email protected]>
+ - Joel Savitz <[email protected]>
+
+description:
+ The Raspberry Pi Sensehat is an addon board originally developed
+ for the Raspberry Pi that has a joystick and an 8x8 RGB LED display
+ as well as several environmental sensors. It connects via i2c and
+ a gpio for irq.
+
+properties:
+ compatible:
+ const: raspberrypi,sensehat
+
+ reg:
+ items:
+ - description: i2c device address
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+ "joystick":
+ $ref: ../input/raspberrypi,sensehat-joystick.yaml
+
+ "display":
+ $ref: ../auxdisplay/raspberrypi,sensehat-display.yaml
+
+required:
+ - compatible
+ - reg
+ - "#address-cells"
+ - "#size-cells"
+ - joystick
+ - display
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ sensehat@46 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ compatible = "raspberrypi,sensehat";
+ reg = <0x46>;
+ display {
+ compatible = "raspberrypi,sensehat-display";
+ };
+ joystick {
+ compatible = "raspberrypi,sensehat-joystick";
+ interrupts = <23 GPIO_ACTIVE_HIGH>;
+ };
+ };
+ };
--
2.31.1


2022-04-13 15:39:41

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v8 4/6] dt-bindings: mfd: sensehat: Add Raspberry Pi Sense HAT schema

On 13/04/2022 15:38, Krzysztof Kozlowski wrote:
> On 12/04/2022 22:13, Charles Mirabile wrote:
>> This patch adds the device tree bindings for the Sense HAT
>> and each of its children devices in yaml form.
>>
>
> Thank you for your patch. There is something to discuss/improve.
>
>> +description:
>> + This device is part of the sensehat multi function device.
>> + For more information see ../mfd/raspberrypi,sensehat.yaml.
>> +
>> + This device features a programmable 8x8 RGB LED matrix.
>> +
>> +properties:
>> + compatible:
>> + const: raspberrypi,sensehat-display
>
> This binding is practically empty, so I wonder what's is purpose? Do you
> plan to grow it? If this was already explained, sorry for bringing it up
> again... :)
>

BTW, I see now you got review from Rob. What changed here that you did
not include it? It is expected to document such case in patch changelog,
so the reviewer will know he wasn't ignored. :)

Best regards,
Krzysztof

2022-04-14 08:52:07

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v8 4/6] dt-bindings: mfd: sensehat: Add Raspberry Pi Sense HAT schema

On 12/04/2022 22:13, Charles Mirabile wrote:
> This patch adds the device tree bindings for the Sense HAT
> and each of its children devices in yaml form.
>

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

> +description:
> + This device is part of the sensehat multi function device.
> + For more information see ../mfd/raspberrypi,sensehat.yaml.
> +
> + This device features a programmable 8x8 RGB LED matrix.
> +
> +properties:
> + compatible:
> + const: raspberrypi,sensehat-display

This binding is practically empty, so I wonder what's is purpose? Do you
plan to grow it? If this was already explained, sorry for bringing it up
again... :)

> +
> +required:
> + - compatible
> +
> +additionalProperties: false
> diff --git a/Documentation/devicetree/bindings/input/raspberrypi,sensehat-joystick.yaml b/Documentation/devicetree/bindings/input/raspberrypi,sensehat-joystick.yaml
> new file mode 100644
> index 000000000000..c97cd1d8eac6
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/raspberrypi,sensehat-joystick.yaml
> @@ -0,0 +1,33 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/input/raspberrypi,sensehat-joystick.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Raspberry Pi Sensehat Joystick
> +
> +maintainers:
> + - Charles Mirabile <[email protected]>
> + - Mwesigwa Guma <[email protected]>
> + - Joel Savitz <[email protected]>
> +
> +description:
> + This device is part of the sensehat multi function device.
> + For more information see ../mfd/raspberrypi,sensehat.yaml.
> +
> + This device features a five button joystick (up, down,left,
> + right, click)
> +
> +properties:
> + compatible:
> + const: raspberrypi,sensehat-joystick
> +
> + interrupts:
> + items:
> + - description: pin number for joystick interrupt

Description is obvious, so just "maxItems: 1"

> +
> +required:
> + - compatible
> + - interrupts
> +
> +additionalProperties: false
> diff --git a/Documentation/devicetree/bindings/mfd/raspberrypi,sensehat.yaml b/Documentation/devicetree/bindings/mfd/raspberrypi,sensehat.yaml
> new file mode 100644
> index 000000000000..2484ec91b430
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/raspberrypi,sensehat.yaml
> @@ -0,0 +1,69 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/raspberrypi,sensehat.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Raspberry Pi Sensehat
> +
> +maintainers:
> + - Charles Mirabile <[email protected]>
> + - Mwesigwa Guma <[email protected]>
> + - Joel Savitz <[email protected]>
> +
> +description:
> + The Raspberry Pi Sensehat is an addon board originally developed
> + for the Raspberry Pi that has a joystick and an 8x8 RGB LED display
> + as well as several environmental sensors. It connects via i2c and
> + a gpio for irq.
> +
> +properties:
> + compatible:
> + const: raspberrypi,sensehat
> +
> + reg:
> + items:
> + - description: i2c device address

Description is obvious, so just "maxItems: 1"

> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0

Why do you need these? You are not allowing any children with unit
addresses.

> +
> + "joystick":
> + $ref: ../input/raspberrypi,sensehat-joystick.yaml

Full path, so "/schemas/input/raspberrypi,sensehat-joystick.yaml#"

> +
> + "display":
> + $ref: ../auxdisplay/raspberrypi,sensehat-display.yaml

The same.

> +
> +required:
> + - compatible
> + - reg
> + - "#address-cells"
> + - "#size-cells"
> + - joystick
> + - display
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + sensehat@46 {

Generic node names please, so "hat".

> + #address-cells = <1>;
> + #size-cells = <0>;
> + compatible = "raspberrypi,sensehat";
> + reg = <0x46>;

Could you put compatible and then reg at beginning of properties (before
address/size)? It is more common convention and these are more important
properties.

> + display {
> + compatible = "raspberrypi,sensehat-display";
> + };
> + joystick {
> + compatible = "raspberrypi,sensehat-joystick";
> + interrupts = <23 GPIO_ACTIVE_HIGH>;

This does not look like proper interrupt flag. Wrong constant.

> + };
> + };
> + };


Best regards,
Krzysztof