mbox series

[0/3] Wiegand bus driver and GPIO controller driver

Message ID 20230104133414.39305-1-m.zatovic1@gmail.com
Headers show
Series Wiegand bus driver and GPIO controller driver | expand

Message

Martin Zaťovič Jan. 4, 2023, 1:34 p.m. UTC
I would like to thank everyone that commented on my last RFC,
which made me realize the shortcuts in design I was making.
I think I have finally understood the concept of how bus drivers
operate and I have implemented a Wiegand bus driver. The driver
now manages controllers and devices connected to them. It attaches
drivers to Wiegand devices and provides an abstract API in
"include/linux/wiegand.h". Most of the Wiegand bus driver code is
inspired by the SPI bus driver written by David Brownell.

I have also implemented a driver for Wiegand GPIO bit-banging.
This driver gets the devicetree defined GPIO lines and sends
Wiegand formatted data through them.

I have also tested creating sample drivers for devices attached
to the bus and working with them.

CHANGELOG since RFCv3:
- implemented a proper bus driver for controller and device
allocation, devicetree probing and driver matching
- Wiegand bus is now represented as Wiegand controller node in the
devicetree
- re-wrote the old version of GPIO bit-banging driver as
a Wiegand controller
- used standard units for devicetree attributes
- removed global variables
- tested unbinding of drivers and fixed memory leaks
- created a Wiegand protocol sub-system - a folder "drivers/wiegand/"
for Wiegand controller drivers

I am not sure, whether this bus is complex enough to create a subsystem
for, however I do believe that this is the way most buses do it.

Martin Zaťovič (3):
  dt-bindings: add Wiegand controller dt-binding documentation
  bus: add Wiegand bus driver
  wiegand: add Wiegand GPIO bit-banged controller driver

 .../ABI/testing/sysfs-driver-wiegand-gpio     |  17 +
 .../bindings/wiegand/wiegand-controller.yaml  |  83 ++
 MAINTAINERS                                   |   9 +
 drivers/Kconfig                               |   2 +
 drivers/bus/Kconfig                           |   5 +
 drivers/bus/Makefile                          |   1 +
 drivers/bus/wiegand.c                         | 768 ++++++++++++++++++
 drivers/wiegand/Kconfig                       |   8 +
 drivers/wiegand/Makefile                      |   1 +
 drivers/wiegand/wiegand-gpio.c                | 471 +++++++++++
 include/linux/wiegand.h                       | 228 ++++++
 11 files changed, 1593 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-driver-wiegand-gpio
 create mode 100644 Documentation/devicetree/bindings/wiegand/wiegand-controller.yaml
 create mode 100644 drivers/bus/wiegand.c
 create mode 100644 drivers/wiegand/Kconfig
 create mode 100644 drivers/wiegand/Makefile
 create mode 100644 drivers/wiegand/wiegand-gpio.c
 create mode 100644 include/linux/wiegand.h

Comments

Arnd Bergmann Jan. 25, 2023, 1:16 p.m. UTC | #1
On Wed, Jan 25, 2023, at 14:05, Martin Zaťovič wrote:
> Hello Greg,
>
> thank you for your insights! The static lists are needed
> for matching wiegand_board_info structures to
> wiegand_controller structures for drivers of devices that
> do not use devicetree. I have seen this approach in the
> SPI bus driver, so I assumed it was okay. If there is
> a better way, please let me know.

We have removed most of the support for machines that come
without devicetree, and it is unlikely that we will be merging
any new ones, so I expect this can simply be left out.

Are there any corner cases where you you still expect to
add devices manually from another driver?

      Arnd
Greg Kroah-Hartman Jan. 25, 2023, 1:26 p.m. UTC | #2
On Wed, Jan 25, 2023 at 02:05:57PM +0100, Martin Zaťovič wrote:
> Hello Greg,
> 
> thank you for your insights! The static lists are needed
> for matching wiegand_board_info structures to
> wiegand_controller structures for drivers of devices that
> do not use devicetree. I have seen this approach in the
> SPI bus driver, so I assumed it was okay. If there is
> a better way, please let me know.

I have no context here at all, sorry.

Remember, some of use get 1000+ emails a day and do hundreds of reviews.
our ability to remember a random review done at a random time with no
context at all would be taxing even if we only did one review a day,
right?

thanks,

greg k-h
Martin Zaťovič Jan. 25, 2023, 1:37 p.m. UTC | #3
I am sorry, I should have included more information.

Anyways, Arnd Bergmann has been kind enough to give me more
insight and I now understand the point you were making in
the review and will fix it.

I will be careful to include more information in the future
communication.

With regards,
Martin