Skip to content
  • Boris Brezillon's avatar
    i3c: Add core I3C infrastructure · 3a379bbc
    Boris Brezillon authored
    Add core infrastructure to support I3C in Linux and document it.
    
    This infrastructure adds basic I3C support. Advanced features will be
    added afterwards.
    
    There are a few design choices that are worth mentioning because they
    impact the way I3C device drivers can interact with their devices:
    
    - all functions used to send I3C/I2C frames must be called in
      non-atomic context. Mainly done this way to ease implementation, but
      this is not set in stone, and if anyone needs async support, new
      functions can be added later on.
    - the bus element is a separate object, but it's tightly coupled with
      the master object. We thus have a 1:1 relationship between i3c_bus
      and i3c_master_controller objects, and if 2 master controllers are
      connected to the same bus and both exposed to the same Linux instance
      they will appear as two distinct busses, and devices on this bus will
      be exposed twice.
    - I2C backward compatibility has been designed to be transparent to I2C
      drivers and t...
    3a379bbc