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@xxxxxxxxx> --- .../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č <martin.zatovic@xxxxxxxxxxxxxxxxxx> + +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: linux-input@xxxxxxxxxxxxxxx S: Maintained F: drivers/hid/hid-wiimote* +WIEGAND BUS DRIVER +M: Martin Zaťovič <m.zatovic1@xxxxxxxxx> +S: Maintained +F: Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml + WILOCITY WIL6210 WIRELESS DRIVER L: linux-wireless@xxxxxxxxxxxxxxx S: Orphan -- 2.38.1