new file mode 100644
@@ -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č <martin.zatovic@tbs-biometrics.com>
+
+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";
+ };
+ };
@@ -22428,6 +22428,11 @@ L: linux-input@vger.kernel.org
S: Maintained
F: drivers/hid/hid-wiimote*
+WIEGAND BUS DRIVER
+M: Martin Zaťovič <m.zatovic1@gmail.com>
+S: Maintained
+F: Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
+
WILOCITY WIL6210 WIRELESS DRIVER
L: linux-wireless@vger.kernel.org
S: Orphan
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č <m.zatovic1@gmail.com> --- .../bindings/wiegand/wiegand-controller.yaml | 83 +++++++++++++++++++ MAINTAINERS | 5 ++ 2 files changed, 88 insertions(+) create mode 100644 Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml