Skip to content

Commit dd3c528

Browse files
miquelraynalalexandrebelloni
authored andcommitted
i3c: master: svc: Add Silvaco I3C master driver
Add support for Silvaco I3C dual-role IP. The master role is supported in SDR mode only. I2C transfers have not been tested but are shared because they are very close to the I3C transfers in terms of register configuration. The IBI processing follows this logic: - When a slave advertizes an interrupt (SDA pulled low) an interrupt gets generated by the master. This time is unbounded and may be deferred. - The IRQ handler itself does not process anything: it only queues a work that will be run in non-atomic context. This is needed because short wait periods must be experienced. - The IBI job is divided in two parts: the first one is "critical" in the sense that it may not support getting interrupted. If this happens, after this first section the driver checks the master error register and depending on its content either flushes everything and errors out, or ends the processing (this second section may be interrupted). - If the critical section got interrupted, the slave will automatically respin it's IBI request when it will be allowed to. Signed-off-by: Miquel Raynal <[email protected]> Signed-off-by: Alexandre Belloni <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent b8b0446 commit dd3c528

File tree

3 files changed

+1487
-0
lines changed

3 files changed

+1487
-0
lines changed

drivers/i3c/master/Kconfig

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ config DW_I3C_MASTER
2222
This driver can also be built as a module. If so, the module
2323
will be called dw-i3c-master.
2424

25+
config SVC_I3C_MASTER
26+
tristate "Silvaco I3C Dual-Role Master driver"
27+
depends on I3C
28+
depends on HAS_IOMEM
29+
depends on !(ALPHA || PARISC)
30+
help
31+
Support for Silvaco I3C Dual-Role Master Controller.
32+
2533
config MIPI_I3C_HCI
2634
tristate "MIPI I3C Host Controller Interface driver (EXPERIMENTAL)"
2735
depends on I3C

drivers/i3c/master/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# SPDX-License-Identifier: GPL-2.0-only
22
obj-$(CONFIG_CDNS_I3C_MASTER) += i3c-master-cdns.o
33
obj-$(CONFIG_DW_I3C_MASTER) += dw-i3c-master.o
4+
obj-$(CONFIG_SVC_I3C_MASTER) += svc-i3c-master.o
45
obj-$(CONFIG_MIPI_I3C_HCI) += mipi-i3c-hci/

0 commit comments

Comments
 (0)