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 now in its preliminary form 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 hasn't been tested yet. As more hardware becomes available for testing it is expected that adjustments will be needed on top of this submission. But it is best to have the current code merged earlier so it gains better exposure for future contributions. Feedback appreciated. Changes from v1: - moved DT binding to schema format (Rob) - fix sparse warnings (kernel test robot) - fix build warnings on 32-bit targets (kernel test robot) - avoid PIO_OFFSET symbol conflict (kernel test robot) - minor cosmetic changes diffstat: .../devicetree/bindings/i3c/mipi-i3c-hci.yaml | 41 + 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 | 781 ++++++++++++++ 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, 4161 insertions(+)