[RFC PATCH 0/3] new bus type siox

From: Uwe Kleine-KÃnig
Date: Fri Mar 11 2016 - 16:52:53 EST


this is a patch set for a new bus type called SIOX created by the German
company Eckelmann. This is a bus with four data lines. The signales DIN (from
devices to master) and DOUT (from master to devices) are daisy chained through
all devices. DLD and DCLK are shared. A pulse on DCLK pushs bits on the DIN and
DOUT chains in the respective direction. A pulse on DLD makes the devices
sample their input and output stated from/to DIN and DOUT.

There are still some open issues, at least:

- the bus logic is still broken somehow. When a bus with two devices is
instantiated and the siox-bus-gpio module is unloaded, the bus master
(siox-0) disappears, but the two devices (siox-0-0 and siox-0-1)
- no device tree binding doc for bus driver
- the devices should be polled each 25 ms, otherwise a per-device
watchdog resets the device. I'm currently using a workqueue for that,
and on a loaded machine sometimes the watchdog triggers. So maybe I
need a different approach here? But I didn't debug that yet, so this
is just FYI.
- some mechanism (I thought about an uevent) to report that a watchdog
triggered would be nice.

I asked a few questions in #kernelnewbies to solve the first issue, Greg
asked for a code drop, so here it is.

Thanks for your time and interest,

Uwe Kleine-KÃnig (3):
siox: new driver/bus framework for Eckelmann SIOX
siox: add gpio bus driver
gpio: new driver to work with a 8x12 siox

drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/gpio/Kconfig | 5 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio-siox.c | 280 +++++++++++++++++++++
drivers/siox/Kconfig | 9 +
drivers/siox/Makefile | 2 +
drivers/siox/siox-bus-gpio.c | 168 +++++++++++++
drivers/siox/siox-core.c | 572 +++++++++++++++++++++++++++++++++++++++++++
drivers/siox/siox.h | 48 ++++
include/linux/siox.h | 53 ++++
11 files changed, 1141 insertions(+)
create mode 100644 drivers/gpio/gpio-siox.c
create mode 100644 drivers/siox/Kconfig
create mode 100644 drivers/siox/Makefile
create mode 100644 drivers/siox/siox-bus-gpio.c
create mode 100644 drivers/siox/siox-core.c
create mode 100644 drivers/siox/siox.h
create mode 100644 include/linux/siox.h