]> git.baikalelectronics.ru Git - kernel.git/commit
i2c: axxia: support slave mode
authorAdamski, Krzysztof (Nokia - PL/Wroclaw) <krzysztof.adamski@nokia.com>
Mon, 19 Aug 2019 09:07:07 +0000 (09:07 +0000)
committerWolfram Sang <wsa@the-dreams.de>
Thu, 29 Aug 2019 19:07:30 +0000 (21:07 +0200)
commit99529d9255227ce00416aa4209e1916a746493a3
tree259f8024e5d19951b01f334cbc60f67aa47f02b1
parentf357814edcd49617e6b3edc02f6f24cce890778a
i2c: axxia: support slave mode

This device contains both master and slave controllers which can be
enabled simultaneously. Both controllers share the same SDA/SCL lines
and interrupt source but has separate control and status registers.
Controllers also works in loopback mode - slave device can communicate
with its own master controller internally. The controller can handle up
to two addresses, both of which may be 10 bit. Most of the logic
(sending (N)ACK, handling repeated start or switching between
write/read) is handled automatically which makes working with this
controller quite easy.

For simplicity, this patch adds basic support, limiting to only one
slave address. Support for the 2nd device may be added in the future.

Note that synchronize_irq() is used to ensure any running slave interrupt
is finished to make sure slave i2c_client structure can be safely used
by i2c_slave_event.

Signed-off-by: Krzysztof Adamski <krzysztof.adamski@nokia.com>
Reviewed-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/Kconfig
drivers/i2c/busses/i2c-axxia.c