[RFCv3 PATCH 0/2] Wiegand bus driver

From: Martin Zaťovič
Date: Mon Oct 24 2022 - 14:02:33 EST


Thank you for all your suggestions and points.

I have realized that I have approached implementing the Wiegand bus
driver wrong. I have used the words 'GPIO controller', which made it
seem like there was a GPIO controller for which another driver would
be needed. What I meant to implement is a simple bit-banged Wiegand
bus driver.

There is no GPIO controller, instead the two GPIO lines are
controlled by the bus. They are utilized to send messages following
the Wiegand protocol and the bus driver should implement such
bit-banging. Now only a single devicetree entry is needed instead
of two as in the previous version - thanks to Krzysztof for
pointing it out.

The driver was based on similar drivers in the drivers/bus directory.
There is also an abstract API in include/linux/wiegand.h that
contains functions to write to the bus or set a particular format.
This API is meant to be used in drivers of devices communicating
using Wiegand protocol.

The user can write on the bus using a device file or change
the format and message payload length via sysfs files.

The driver was tested on NXP Verdin iMX8MP Plus.

With regards,
Martin Zaťovič

v1->v2:
Split the driver into a bus driver a gpio driver and an abstract API.
Fix issues pointed out in RFC

v2->v3:
Discard the bus driver. Implement new bus driver based on the gpio
driver(the gpio driver was actually implementing the functionality
of the bus).
Fix make dt_bindings_check errors.
Use devicetree properties for pulse_len, interval_len and frame_gap
attributes.

Martin Zaťovič (2):
dt-bindings: bus: add Wiegand bus dt documentation
bus: add bit banged Wiegand bus driver

Documentation/ABI/testing/sysfs-bus-wiegand | 20 +
.../devicetree/bindings/bus/wiegand.yaml | 75 +++
MAINTAINERS | 8 +
drivers/bus/Kconfig | 7 +
drivers/bus/Makefile | 1 +
drivers/bus/wiegand.c | 509 ++++++++++++++++++
include/linux/wiegand.h | 58 ++
7 files changed, 678 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-bus-wiegand
create mode 100644 Documentation/devicetree/bindings/bus/wiegand.yaml
create mode 100644 drivers/bus/wiegand.c
create mode 100644 include/linux/wiegand.h

--
2.37.3