mbox series

[v4,0/2] MIPI I3c HCI (Host Controller Interface) driver

Message ID 20201111220510.3622216-1-nico@fluxnic.net (mailing list archive)
Headers show
Series MIPI I3c HCI (Host Controller Interface) driver | expand

Message

Nicolas Pitre Nov. 11, 2020, 10:05 p.m. UTC
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
as all I have for testing at the moment is based on the latest v2 draft.

Even v1.0 hardware is still scarce 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 to gain better exposure and to create
an incentive for future contributions.

Feedback appreciated.

Changes from v3:

- add mandatory "additionalProperties" and Rob's reviewed_by to
  the DT bindings description
- split PID/BCR/DCR values from the RX FIFO during DAA according
  to the latest HCI 2.0 draft
- fix a warning identified by kernel test robot

Changes from v2:

- resync with latest draft of HCI v1.1 and v2 specs, especially the v2 cmd
  descriptor format and new error codes
- more extended capability table parsing from the v2 spec
- tightened PIO error handling somewhat
- minor cosmetic changes
- precision on the DT binding based on Rob Herring's review
- small changes based on Miquel Raynal's review
- small changes based on Boris Brezillon's review
- some more small changes based on Sakari Ailus' review

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   |   47 +
 drivers/i3c/master/Kconfig                      |   13 +
 drivers/i3c/master/Makefile                     |    1 +
 drivers/i3c/master/mipi-i3c-hci/Makefile        |    6 +
 drivers/i3c/master/mipi-i3c-hci/cmd.h           |   67 ++
 drivers/i3c/master/mipi-i3c-hci/cmd_v1.c        |  378 ++++++
 drivers/i3c/master/mipi-i3c-hci/cmd_v2.c        |  316 +++++
 drivers/i3c/master/mipi-i3c-hci/core.c          |  798 +++++++++++++
 drivers/i3c/master/mipi-i3c-hci/dat.h           |   32 +
 drivers/i3c/master/mipi-i3c-hci/dat_v1.c        |  184 +++
 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/dma.c           |  784 +++++++++++++
 drivers/i3c/master/mipi-i3c-hci/ext_caps.c      |  308 +++++
 drivers/i3c/master/mipi-i3c-hci/ext_caps.h      |   19 +
 drivers/i3c/master/mipi-i3c-hci/hci.h           |  144 +++
 drivers/i3c/master/mipi-i3c-hci/ibi.h           |   42 +
 drivers/i3c/master/mipi-i3c-hci/pio.c           | 1041 +++++++++++++++++
 .../i3c/master/mipi-i3c-hci/xfer_mode_rate.h    |   79 ++
 19 files changed, 4311 insertions(+)