The MIPI I3C HCI (Host Controller Interface) specification defines a common software driver interface to support compliant MIPI I3C host controller hardware implementations from multiple vendors. This is the initial Linux driver implementing support for this specification. Due to limitations in the I3C subsystem, this driver doesn't implement everything the spec specifies. For example, scheduled commands, auto-commands and NCM are major features not yet supported. There are different revisions of the spec: v1.0, v1.1 (to be released imminently), and 2.0 (still under active development). All of them are supported with varying degree due to the above, and of course v2 support is likely to change as the spec is finalized. But it is included nevertheless as all I have for testing at the moment is based on an early v2 draft. Even v1.0 hardware is still scarse so it wasn't tested yet. As more hardware becomes available for testing it is likely that adjustments will be needed on top of this. But it is best to have the code merged earlier so it gains better exposure for future contributions, etc. Feedback appreciated. diffstat: .../devicetree/bindings/i3c/mipi-i3c-hci.txt | 15 + drivers/i3c/master/Kconfig | 13 + drivers/i3c/master/Makefile | 1 + drivers/i3c/master/mipi-i3c-hci/Makefile | 9 + drivers/i3c/master/mipi-i3c-hci/cmd.h | 106 ++ drivers/i3c/master/mipi-i3c-hci/cmd_v1.c | 362 +++++++ drivers/i3c/master/mipi-i3c-hci/cmd_v2.c | 280 +++++ drivers/i3c/master/mipi-i3c-hci/core.c | 801 +++++++++++++++ drivers/i3c/master/mipi-i3c-hci/dat.h | 28 + drivers/i3c/master/mipi-i3c-hci/dat_v1.c | 170 ++++ drivers/i3c/master/mipi-i3c-hci/dct.h | 16 + drivers/i3c/master/mipi-i3c-hci/dct_v1.c | 36 + drivers/i3c/master/mipi-i3c-hci/debug.c | 79 ++ drivers/i3c/master/mipi-i3c-hci/debug.h | 17 + drivers/i3c/master/mipi-i3c-hci/dma.c | 767 ++++++++++++++ drivers/i3c/master/mipi-i3c-hci/ext_caps.c | 249 +++++ drivers/i3c/master/mipi-i3c-hci/ext_caps.h | 19 + drivers/i3c/master/mipi-i3c-hci/hci.h | 150 +++ drivers/i3c/master/mipi-i3c-hci/ibi.h | 42 + drivers/i3c/master/mipi-i3c-hci/pio.c | 961 ++++++++++++++++++ 20 files changed, 4121 insertions(+)