A Weigand bus is defined by a Wiegand controller node. This node
can contain one or more device nodes for devices attached to
the controller(it is advised to only connect one device as Wiegand
is a point-to-point bus).
Wiegand controller needs to specify several attributes such as
the pulse length in order to function properly. These attributes
are documented here.
Signed-off-by: Martin Zaťovič <[email protected]>
---
.../bindings/wiegand/wiegand-controller.yaml | 83 +++++++++++++++++++
MAINTAINERS | 5 ++
2 files changed, 88 insertions(+)
create mode 100644 Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
diff --git a/Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml b/Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
new file mode 100644
index 000000000000..645306c65d43
--- /dev/null
+++ b/Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/wiegand/wiegand-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Wiegand Controller Generic Binding
+
+maintainers:
+ - Martin Zaťovič <[email protected]>
+
+description: |
+ Wiegand busses can be described with a node for the Wiegand controller device
+ and a set of child nodes for each SPI slave on the bus.
+
+properties:
+ $nodename:
+ pattern: "^wiegand(@.*|-[0-9a-f])*$"
+
+ compatible:
+ maxItems: 1
+ description: Compatible of the Wiegand controller.
+
+ data-high-gpios:
+ maxItems: 1
+ description: GPIO used as Wiegands data-hi line. This line is initially
+ pulled up to high value. Wiegand write of a bit of value 1 results in
+ this line being pulled down for pulse length duration.
+
+ data-lo-gpios:
+ maxItems: 1
+ description: GPIO used as Wiegands data-lo line. This line is initially
+ pulled up to high value. Wiegand write of a bit of value 0 results in
+ this line being pulled down for pulse length duration.
+
+ pulse-len-us:
+ maxItems: 1
+ description: Length of the low pulse in microseconds.
+
+ interval-len-us:
+ maxItems: 1
+ description: Length of a whole bit (both the pulse and the high phase)
+ in microseconds.
+
+ frame-gap-us:
+ maxItems: 1
+ description: Length of the last bit of a frame (both the pulse and the
+ high phase) in microseconds.
+
+ slave-device:
+ type: object
+
+ properties:
+ compatible:
+ description:
+ Compatible of the Wiegand device.
+
+ required:
+ - compatible
+
+required:
+ - compatible
+ - pulse-len-us
+ - interval-len-us
+ - frame-gap-us
+
+additionalProperties: false
+
+examples:
+ - |
+ wiegand@f00 {
+ compatible = "wiegand-gpio";
+ data-hi-gpios = <&gpio2 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+ data-lo-gpios = <&gpio2 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+ pulse-len-us = <50>;
+ interval-len-us = <2000>;
+ frame-gap-us = <2000>;
+ status = "okay";
+
+ wiegand-foo-device {
+ compatible = "wiegand-foo";
+ };
+ };
diff --git a/MAINTAINERS b/MAINTAINERS
index 7f86d02cb427..db9624d93af0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -22428,6 +22428,11 @@ L: [email protected]
S: Maintained
F: drivers/hid/hid-wiimote*
+WIEGAND BUS DRIVER
+M: Martin Zaťovič <[email protected]>
+S: Maintained
+F: Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
+
WILOCITY WIL6210 WIRELESS DRIVER
L: [email protected]
S: Orphan
--
2.38.1
On Wed, 04 Jan 2023 14:34:12 +0100, Martin Zaťovič wrote:
> A Weigand bus is defined by a Wiegand controller node. This node
> can contain one or more device nodes for devices attached to
> the controller(it is advised to only connect one device as Wiegand
> is a point-to-point bus).
>
> Wiegand controller needs to specify several attributes such as
> the pulse length in order to function properly. These attributes
> are documented here.
>
> Signed-off-by: Martin Zaťovič <[email protected]>
> ---
> .../bindings/wiegand/wiegand-controller.yaml | 83 +++++++++++++++++++
> MAINTAINERS | 5 ++
> 2 files changed, 88 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Error: Documentation/devicetree/bindings/wiegand/wiegand-controller.example.dts:20.40-41 syntax error
FATAL ERROR: Unable to parse input tree
make[1]: *** [scripts/Makefile.lib:434: Documentation/devicetree/bindings/wiegand/wiegand-controller.example.dtb] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1508: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/[email protected]
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
On Wed, 04 Jan 2023 14:34:12 +0100, Martin Zaťovič wrote:
> A Weigand bus is defined by a Wiegand controller node. This node
> can contain one or more device nodes for devices attached to
> the controller(it is advised to only connect one device as Wiegand
> is a point-to-point bus).
>
> Wiegand controller needs to specify several attributes such as
> the pulse length in order to function properly. These attributes
> are documented here.
>
> Signed-off-by: Martin Zaťovič <[email protected]>
> ---
> .../bindings/wiegand/wiegand-controller.yaml | 83 +++++++++++++++++++
> MAINTAINERS | 5 ++
> 2 files changed, 88 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
Error: Documentation/devicetree/bindings/wiegand/wiegand-controller.example.dts:20.40-41 syntax error
FATAL ERROR: Unable to parse input tree
make[1]: *** [scripts/Makefile.lib:434: Documentation/devicetree/bindings/wiegand/wiegand-controller.example.dtb] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1508: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/[email protected]
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
On Wed, Jan 04, 2023 at 02:34:12PM +0100, Martin Zaťovič wrote:
> A Weigand bus is defined by a Wiegand controller node. This node
> can contain one or more device nodes for devices attached to
> the controller(it is advised to only connect one device as Wiegand
> is a point-to-point bus).
>
> Wiegand controller needs to specify several attributes such as
> the pulse length in order to function properly. These attributes
> are documented here.
For the subject, drop 'dt-binding documentation'. That's already stated
once.
>
> Signed-off-by: Martin Zaťovič <[email protected]>
> ---
> .../bindings/wiegand/wiegand-controller.yaml | 83 +++++++++++++++++++
> MAINTAINERS | 5 ++
> 2 files changed, 88 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
>
> diff --git a/Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml b/Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
> new file mode 100644
> index 000000000000..645306c65d43
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
> @@ -0,0 +1,83 @@
> +# SPDX-License-Identifier: GPL-2.0
(GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/wiegand/wiegand-controller.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Wiegand Controller Generic Binding
s/Binding/Common Properties/
> +
> +maintainers:
> + - Martin Zaťovič <[email protected]>
> +
> +description: |
Don't need '|'.
> + Wiegand busses can be described with a node for the Wiegand controller device
> + and a set of child nodes for each SPI slave on the bus.
> +
> +properties:
> + $nodename:
> + pattern: "^wiegand(@.*|-[0-9a-f])*$"
'?' instead of '*' for the last '*'.
> +
> + compatible:
> + maxItems: 1
Drop 'compatible' as the specific controller has to list this anyways.
Also, a controller can have as many compatible strings as it wants.
> + description: Compatible of the Wiegand controller.
> +
> + data-high-gpios:
> + maxItems: 1
> + description: GPIO used as Wiegands data-hi line. This line is initially
> + pulled up to high value. Wiegand write of a bit of value 1 results in
> + this line being pulled down for pulse length duration.
> +
> + data-lo-gpios:
> + maxItems: 1
> + description: GPIO used as Wiegands data-lo line. This line is initially
> + pulled up to high value. Wiegand write of a bit of value 0 results in
> + this line being pulled down for pulse length duration.
> +
> + pulse-len-us:
> + maxItems: 1
> + description: Length of the low pulse in microseconds.
> +
> + interval-len-us:
> + maxItems: 1
> + description: Length of a whole bit (both the pulse and the high phase)
> + in microseconds.
> +
> + frame-gap-us:
> + maxItems: 1
> + description: Length of the last bit of a frame (both the pulse and the
> + high phase) in microseconds.
> +
> + slave-device:
A slave device should be named for the class of device it is, not
'slave-device'. Just drop all of this as there's no way to match a node
name.
> + type: object
> +
> + properties:
> + compatible:
> + description:
> + Compatible of the Wiegand device.
> +
> + required:
> + - compatible
> +
> +required:
> + - compatible
> + - pulse-len-us
> + - interval-len-us
> + - frame-gap-us
> +
> +additionalProperties: false
Common bindings should be 'true'.
> +
> +examples:
> + - |
> + wiegand@f00 {
> + compatible = "wiegand-gpio";
> + data-hi-gpios = <&gpio2 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
> + data-lo-gpios = <&gpio2 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
> + pulse-len-us = <50>;
> + interval-len-us = <2000>;
> + frame-gap-us = <2000>;
> + status = "okay";
Drop 'status'.
> +
> + wiegand-foo-device {
> + compatible = "wiegand-foo";
> + };
> + };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 7f86d02cb427..db9624d93af0 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -22428,6 +22428,11 @@ L: [email protected]
> S: Maintained
> F: drivers/hid/hid-wiimote*
>
> +WIEGAND BUS DRIVER
> +M: Martin Zaťovič <[email protected]>
> +S: Maintained
> +F: Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
> +
> WILOCITY WIL6210 WIRELESS DRIVER
> L: [email protected]
> S: Orphan
> --
> 2.38.1
>
>
On 04/01/2023 14:34, Martin Zaťovič wrote:
> A Weigand bus is defined by a Wiegand controller node. This node
> can contain one or more device nodes for devices attached to
> the controller(it is advised to only connect one device as Wiegand
> is a point-to-point bus).
>
> Wiegand controller needs to specify several attributes such as
> the pulse length in order to function properly. These attributes
> are documented here.
>
> Signed-off-by: Martin Zaťovič <[email protected]>
> ---
> .../bindings/wiegand/wiegand-controller.yaml | 83 +++++++++++++++++++
You still miss bindings using this common properties which will document
"wiegand-gpio".
Best regards,
Krzysztof