linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* dt-bindings: ps2-gpio: convert binding to json-schema
@ 2022-02-15 18:08 Danilo Krummrich
  2022-02-15 18:08 ` [PATCH v3 1/3] " Danilo Krummrich
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Danilo Krummrich @ 2022-02-15 18:08 UTC (permalink / raw)
  To: krzysztof.kozlowski, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij

Changes since v1
================
  - binding as separate patch (driver patch will be sent outside the scope of
    this patch series)
  - fixes requested by Krzysztof
  - fix warnings/errors reported by 'make dt_binding_check'

Changes since v2
================
  - add the driver patch to enforce open drain GPIO flags again
  - fix additionalProperties: false

This series converts the ps2-gpio dt-binding to the json-schema.

Additionally, it documents (in the dt-binding) and enforces to flag the
given gpios as open drain, since the PS/2 bus is open drain by
definition.

Danilo Krummrich (3):
      dt-bindings: ps2-gpio: convert binding to json-schema
      dt-bindings: ps2-gpio: document bus signals open drain
      input: ps2-gpio: enforce GPIOs flag open drain

 Documentation/devicetree/bindings/serio/ps2-gpio.txt  | 23 -----------------------
 Documentation/devicetree/bindings/serio/ps2-gpio.yaml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/input/serio/ps2-gpio.c                        |  9 +++++++--
 3 files changed, 71 insertions(+), 25 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.txt
 create mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.yaml



^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 1/3] dt-bindings: ps2-gpio: convert binding to json-schema
  2022-02-15 18:08 dt-bindings: ps2-gpio: convert binding to json-schema Danilo Krummrich
@ 2022-02-15 18:08 ` Danilo Krummrich
  2022-02-16  7:19   ` Krzysztof Kozlowski
  2022-02-15 18:08 ` [PATCH v3 2/3] dt-bindings: ps2-gpio: document bus signals open drain Danilo Krummrich
  2022-02-15 18:08 ` [PATCH v3 3/3] input: ps2-gpio: enforce GPIOs flag " Danilo Krummrich
  2 siblings, 1 reply; 11+ messages in thread
From: Danilo Krummrich @ 2022-02-15 18:08 UTC (permalink / raw)
  To: krzysztof.kozlowski, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij, Danilo Krummrich

Convert the ps2-gpio dt-binding documentation to DT schema format using
the json-schema.

Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
---
 .../devicetree/bindings/serio/ps2-gpio.txt    | 23 --------
 .../devicetree/bindings/serio/ps2-gpio.yaml   | 58 +++++++++++++++++++
 2 files changed, 58 insertions(+), 23 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.txt
 create mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.yaml

diff --git a/Documentation/devicetree/bindings/serio/ps2-gpio.txt b/Documentation/devicetree/bindings/serio/ps2-gpio.txt
deleted file mode 100644
index 7b7bc9cdf986..000000000000
--- a/Documentation/devicetree/bindings/serio/ps2-gpio.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Device-Tree binding for ps/2 gpio device
-
-Required properties:
-	- compatible = "ps2-gpio"
-	- data-gpios: the data pin
-	- clk-gpios: the clock pin
-	- interrupts: Should trigger on the falling edge of the clock line.
-
-Optional properties:
-	- write-enable: Indicates whether write function is provided
-	to serio device. Possibly providing the write fn will not work, because
-	of the tough timing requirements.
-
-Example nodes:
-
-ps2@0 {
-	compatible = "ps2-gpio";
-	interrupt-parent = <&gpio>;
-	interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
-	data-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
-	clk-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
-	write-enable;
-};
diff --git a/Documentation/devicetree/bindings/serio/ps2-gpio.yaml b/Documentation/devicetree/bindings/serio/ps2-gpio.yaml
new file mode 100644
index 000000000000..304132fd30c5
--- /dev/null
+++ b/Documentation/devicetree/bindings/serio/ps2-gpio.yaml
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serio/ps2-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Bindings for GPIO based PS/2
+
+maintainers:
+  - Danilo Krummrich <danilokrummrich@dk-develop.de>
+
+properties:
+  compatible:
+    const: ps2-gpio
+
+  data-gpios:
+    description:
+      the gpio used for the data signal
+    maxItems: 1
+
+  clk-gpios:
+    description:
+      the gpio used for the clock signal
+    maxItems: 1
+
+  interrupts:
+    description:
+      The given interrupt should trigger on the falling edge of the clock line.
+    maxItems: 1
+
+  write-enable:
+    type: boolean
+    description:
+      Indicates whether write function is provided to serio device. Possibly
+      providing the write function will not work, because of the tough timing
+      requirements.
+
+required:
+  - compatible
+  - data-gpios
+  - clk-gpios
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    ps2 {
+        compatible = "ps2-gpio";
+        interrupt-parent = <&gpio>;
+        interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
+        data-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
+        clk-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
+        write-enable;
+    };
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 2/3] dt-bindings: ps2-gpio: document bus signals open drain
  2022-02-15 18:08 dt-bindings: ps2-gpio: convert binding to json-schema Danilo Krummrich
  2022-02-15 18:08 ` [PATCH v3 1/3] " Danilo Krummrich
@ 2022-02-15 18:08 ` Danilo Krummrich
  2022-02-16  7:19   ` Krzysztof Kozlowski
  2022-02-15 18:08 ` [PATCH v3 3/3] input: ps2-gpio: enforce GPIOs flag " Danilo Krummrich
  2 siblings, 1 reply; 11+ messages in thread
From: Danilo Krummrich @ 2022-02-15 18:08 UTC (permalink / raw)
  To: krzysztof.kozlowski, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij, Danilo Krummrich

The PS/2 bus defines data and clock line to be open drain, this should
be reflected in the gpio flags set in the binding.

Especially, this is important since the clock line sometimes is driven
by the host while being used as interrupt source.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
---
 .../devicetree/bindings/serio/ps2-gpio.yaml        | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/serio/ps2-gpio.yaml b/Documentation/devicetree/bindings/serio/ps2-gpio.yaml
index 304132fd30c5..a63d9172346f 100644
--- a/Documentation/devicetree/bindings/serio/ps2-gpio.yaml
+++ b/Documentation/devicetree/bindings/serio/ps2-gpio.yaml
@@ -15,12 +15,18 @@ properties:
 
   data-gpios:
     description:
-      the gpio used for the data signal
+      the gpio used for the data signal - this should be flagged as
+      active high using open drain with (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)
+      from <dt-bindings/gpio/gpio.h> since the signal is open drain by
+      definition
     maxItems: 1
 
   clk-gpios:
     description:
-      the gpio used for the clock signal
+      the gpio used for the clock signal - this should be flagged as
+      active high using open drain with (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)
+      from <dt-bindings/gpio/gpio.h> since the signal is open drain by
+      definition
     maxItems: 1
 
   interrupts:
@@ -52,7 +58,7 @@ examples:
         compatible = "ps2-gpio";
         interrupt-parent = <&gpio>;
         interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
-        data-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
-        clk-gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
+        data-gpios = <&gpio 24 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+        clk-gpios = <&gpio 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
         write-enable;
     };
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 3/3] input: ps2-gpio: enforce GPIOs flag open drain
  2022-02-15 18:08 dt-bindings: ps2-gpio: convert binding to json-schema Danilo Krummrich
  2022-02-15 18:08 ` [PATCH v3 1/3] " Danilo Krummrich
  2022-02-15 18:08 ` [PATCH v3 2/3] dt-bindings: ps2-gpio: document bus signals open drain Danilo Krummrich
@ 2022-02-15 18:08 ` Danilo Krummrich
  2022-02-15 22:56   ` Dmitry Torokhov
  2 siblings, 1 reply; 11+ messages in thread
From: Danilo Krummrich @ 2022-02-15 18:08 UTC (permalink / raw)
  To: krzysztof.kozlowski, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij, Danilo Krummrich

The PS/2 bus defines the data and clock line be open drain, therefore
for both enforce the particular GPIO flags in the driver.

Without enforcing to flag at least the clock gpio as open drain we run
into the following warning:

WARNING: CPU: 1 PID: 40 at drivers/gpio/gpiolib.c:3175 gpiochip_enable_irq+0x54/0x90

gpiochip_enable_irq() warns on a GPIO being configured as output while
serving as IRQ source without being flagged as open drain.

Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
---
 drivers/input/serio/ps2-gpio.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/input/serio/ps2-gpio.c b/drivers/input/serio/ps2-gpio.c
index 8970b49ea09a..f562f396ba05 100644
--- a/drivers/input/serio/ps2-gpio.c
+++ b/drivers/input/serio/ps2-gpio.c
@@ -322,14 +322,19 @@ static irqreturn_t ps2_gpio_irq(int irq, void *dev_id)
 static int ps2_gpio_get_props(struct device *dev,
 				 struct ps2_gpio_data *drvdata)
 {
-	drvdata->gpio_data = devm_gpiod_get(dev, "data", GPIOD_IN);
+	enum gpiod_flags gflags;
+
+	/* Enforce open drain, since this is required by the PS/2 bus. */
+	gflags = GPIOD_IN | GPIOD_FLAGS_BIT_OPEN_DRAIN;
+
+	drvdata->gpio_data = devm_gpiod_get(dev, "data", gflags);
 	if (IS_ERR(drvdata->gpio_data)) {
 		dev_err(dev, "failed to request data gpio: %ld",
 			PTR_ERR(drvdata->gpio_data));
 		return PTR_ERR(drvdata->gpio_data);
 	}
 
-	drvdata->gpio_clk = devm_gpiod_get(dev, "clk", GPIOD_IN);
+	drvdata->gpio_clk = devm_gpiod_get(dev, "clk", gflags);
 	if (IS_ERR(drvdata->gpio_clk)) {
 		dev_err(dev, "failed to request clock gpio: %ld",
 			PTR_ERR(drvdata->gpio_clk));
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 3/3] input: ps2-gpio: enforce GPIOs flag open drain
  2022-02-15 18:08 ` [PATCH v3 3/3] input: ps2-gpio: enforce GPIOs flag " Danilo Krummrich
@ 2022-02-15 22:56   ` Dmitry Torokhov
  0 siblings, 0 replies; 11+ messages in thread
From: Dmitry Torokhov @ 2022-02-15 22:56 UTC (permalink / raw)
  To: Danilo Krummrich
  Cc: krzysztof.kozlowski, robh+dt, devicetree, linux-input,
	linux-kernel, linus.walleij

On Tue, Feb 15, 2022 at 07:08:29PM +0100, Danilo Krummrich wrote:
> The PS/2 bus defines the data and clock line be open drain, therefore
> for both enforce the particular GPIO flags in the driver.
> 
> Without enforcing to flag at least the clock gpio as open drain we run
> into the following warning:
> 
> WARNING: CPU: 1 PID: 40 at drivers/gpio/gpiolib.c:3175 gpiochip_enable_irq+0x54/0x90
> 
> gpiochip_enable_irq() warns on a GPIO being configured as output while
> serving as IRQ source without being flagged as open drain.
> 
> Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>

Applied, thank you.

-- 
Dmitry

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 1/3] dt-bindings: ps2-gpio: convert binding to json-schema
  2022-02-15 18:08 ` [PATCH v3 1/3] " Danilo Krummrich
@ 2022-02-16  7:19   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2022-02-16  7:19 UTC (permalink / raw)
  To: Danilo Krummrich, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij

On 15/02/2022 19:08, Danilo Krummrich wrote:
> Convert the ps2-gpio dt-binding documentation to DT schema format using
> the json-schema.
> 
> Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
> ---
>  .../devicetree/bindings/serio/ps2-gpio.txt    | 23 --------
>  .../devicetree/bindings/serio/ps2-gpio.yaml   | 58 +++++++++++++++++++
>  2 files changed, 58 insertions(+), 23 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.txt
>  create mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.yaml
> 


Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/3] dt-bindings: ps2-gpio: document bus signals open drain
  2022-02-15 18:08 ` [PATCH v3 2/3] dt-bindings: ps2-gpio: document bus signals open drain Danilo Krummrich
@ 2022-02-16  7:19   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2022-02-16  7:19 UTC (permalink / raw)
  To: Danilo Krummrich, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij

On 15/02/2022 19:08, Danilo Krummrich wrote:
> The PS/2 bus defines data and clock line to be open drain, this should
> be reflected in the gpio flags set in the binding.
> 
> Especially, this is important since the clock line sometimes is driven
> by the host while being used as interrupt source.
> 
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
> ---
>  .../devicetree/bindings/serio/ps2-gpio.yaml        | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 


Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: dt-bindings: ps2-gpio: convert binding to json-schema
  2022-02-15 17:01 ` Krzysztof Kozlowski
@ 2022-02-15 17:46   ` Danilo Krummrich
  0 siblings, 0 replies; 11+ messages in thread
From: Danilo Krummrich @ 2022-02-15 17:46 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: dmitry.torokhov, robh+dt, devicetree, linux-input, linux-kernel,
	linus.walleij

Hi Krzysztof,

On Tue, Feb 15, 2022 at 06:01:19PM +0100, Krzysztof Kozlowski wrote:
> On 15/02/2022 17:51, Danilo Krummrich wrote:
> > Changes since v1
> > ================
> >   - binding as separate patch (driver patch will be sent outside the scope of
> >     this patch series)
> 
> Bindings patches are not a separate series, but a separate patches
> within the series, so driver should be posted here as well.
The changes are not dependent, as if a new property would have been added,
which is why I removed it from the series. However, they're at least related.
So if it's preferred, I'll add it to the series again.
> 
> Best regards,
> Krzysztof

- Danilo

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: dt-bindings: ps2-gpio: convert binding to json-schema
  2022-02-15 16:51 dt-bindings: ps2-gpio: convert binding to json-schema Danilo Krummrich
@ 2022-02-15 17:01 ` Krzysztof Kozlowski
  2022-02-15 17:46   ` Danilo Krummrich
  0 siblings, 1 reply; 11+ messages in thread
From: Krzysztof Kozlowski @ 2022-02-15 17:01 UTC (permalink / raw)
  To: Danilo Krummrich, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij

On 15/02/2022 17:51, Danilo Krummrich wrote:
> Changes since v1
> ================
>   - binding as separate patch (driver patch will be sent outside the scope of
>     this patch series)

Bindings patches are not a separate series, but a separate patches
within the series, so driver should be posted here as well.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 11+ messages in thread

* dt-bindings: ps2-gpio: convert binding to json-schema
@ 2022-02-15 16:51 Danilo Krummrich
  2022-02-15 17:01 ` Krzysztof Kozlowski
  0 siblings, 1 reply; 11+ messages in thread
From: Danilo Krummrich @ 2022-02-15 16:51 UTC (permalink / raw)
  To: krzysztof.kozlowski, dmitry.torokhov, robh+dt, devicetree,
	linux-input, linux-kernel
  Cc: linus.walleij

Changes since v1
================
  - binding as separate patch (driver patch will be sent outside the scope of
    this patch series)
  - fixes requested by Krzysztof
  - fix warnings/errors reported by 'make dt_binding_check'

This series converts the ps2-gpio dt-binding to the json-schema.

Additionally, it documents to flag the given gpios as open drain, since the
PS/2 bus is open drain by definition.

Danilo Krummrich (2):
      dt-bindings: ps2-gpio: convert binding to json-schema
      dt-bindings: ps2-gpio: document bus signals open drain

 Documentation/devicetree/bindings/serio/ps2-gpio.txt  | 23 -----------------------
 Documentation/devicetree/bindings/serio/ps2-gpio.yaml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 23 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.txt
 create mode 100644 Documentation/devicetree/bindings/serio/ps2-gpio.yaml



^ permalink raw reply	[flat|nested] 11+ messages in thread

* dt-bindings: ps2-gpio: convert binding to json-schema
@ 2022-02-11 23:31 Danilo Krummrich
  0 siblings, 0 replies; 11+ messages in thread
From: Danilo Krummrich @ 2022-02-11 23:31 UTC (permalink / raw)
  To: dmitry.torokhov, robh+dt, devicetree, linux-input, linux-kernel
  Cc: linus.walleij

This series converts the ps2-gpio dt-binding to the json-schema.

Additionally, it documents (in the dt-binding) and enforces to flag the
given gpios as open drain, since the PS/2 bus is open drain by
definition.



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-02-16  7:20 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-15 18:08 dt-bindings: ps2-gpio: convert binding to json-schema Danilo Krummrich
2022-02-15 18:08 ` [PATCH v3 1/3] " Danilo Krummrich
2022-02-16  7:19   ` Krzysztof Kozlowski
2022-02-15 18:08 ` [PATCH v3 2/3] dt-bindings: ps2-gpio: document bus signals open drain Danilo Krummrich
2022-02-16  7:19   ` Krzysztof Kozlowski
2022-02-15 18:08 ` [PATCH v3 3/3] input: ps2-gpio: enforce GPIOs flag " Danilo Krummrich
2022-02-15 22:56   ` Dmitry Torokhov
  -- strict thread matches above, loose matches on Subject: below --
2022-02-15 16:51 dt-bindings: ps2-gpio: convert binding to json-schema Danilo Krummrich
2022-02-15 17:01 ` Krzysztof Kozlowski
2022-02-15 17:46   ` Danilo Krummrich
2022-02-11 23:31 Danilo Krummrich

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