siox: new driver framework for eckelmann SIOX
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Mon, 18 Dec 2017 16:59:07 +0000 (17:59 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 19 Dec 2017 08:26:00 +0000 (09:26 +0100)
commitbbecb07fa0af9a41507ce06d4631fdb3b5059417
tree5326e5865a1100ab9dda4f774d01a5a8de7996de
parent0ba002bc4393dcfae031fc707b11c094b46a5048
siox: new driver framework for eckelmann SIOX

SIOX is a bus system invented at Eckelmann AG to control their building
management and refrigeration systems. Traditionally the bus was
implemented on custom microcontrollers, today Linux based machines are
in use, too.

The topology on a SIOX bus looks as follows:

      ,------->--DCLK-->---------------+----------------------.
      ^                                v                      v
 ,--------.                ,----------------------.       ,------
 |        |                |   ,--------------.   |       |
 |        |--->--DOUT-->---|->-|shift register|->-|--->---|
 |        |                |   `--------------'   |       |
 | master |                |        device        |       |  device
 |        |                |   ,--------------.   |       |
 |        |---<--DIN---<---|-<-|shift register|-<-|---<---|
 |        |                |   `--------------'   |       |
 `--------'                `----------------------'       `------
      v                                ^                      ^
      `----------DLD-------------------+----------------------'

There are two control lines (DCLK and DLD) driven from the bus master to
all devices in parallel and two daisy chained data lines, one for input
and one for output. DCLK is the clock to shift both chains by a single
bit. On an edge of DLD the devices latch both their input and output
shift registers.

This patch adds a framework for this bus type.

Acked-by: Gavin Schenk <g.schenk@eckelmann.de>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/ABI/testing/sysfs-bus-siox [new file with mode: 0644]
drivers/Kconfig
drivers/Makefile
drivers/siox/Kconfig [new file with mode: 0644]
drivers/siox/Makefile [new file with mode: 0644]
drivers/siox/siox-core.c [new file with mode: 0644]
drivers/siox/siox.h [new file with mode: 0644]
include/linux/siox.h [new file with mode: 0644]