• Matt Johnston's avatar
    mctp i2c: MCTP I2C binding driver · 80be9b2c
    Matt Johnston authored
    Provides MCTP network transport over an I2C bus, as specified in
    DMTF DSP0237. All messages between nodes are sent as SMBus Block Writes.
    
    Each I2C bus to be used for MCTP is flagged in devicetree by a
    'mctp-controller' property on the bus node. Each flagged bus gets a
    mctpi2cX net device created based on the bus number. A
    'mctp-i2c-controller' I2C client needs to be added under the adapter. In
    an I2C mux situation the mctp-i2c-controller node must be attached only
    to the root I2C bus. The I2C client will handle incoming I2C slave block
    write data for subordinate busses as well as its own bus.
    
    In configurations without devicetree a driver instance can be attached
    to a bus using the I2C slave new_device mechanism.
    
    The MCTP core will hold/release the MCTP I2C device while responses
    are pending (a 6 second timeout or once a socket is closed, response
    received etc). While held the MCTP I2C driver will lock the I2C bus so
    that the correct I2C mux remains selected while responses are received.
    
    (Ideally we would just lock the mux to keep the current bus selected for
    the response rather than a full I2C bus lock, but that isn't exposed in
    the I2C mux API)
    
    This driver requires I2C adapters that allow 255 byte transfers
    (SMBus 3.0) as the specification requires a minimum MTU of 68 bytes.
    Signed-off-by: default avatarMatt Johnston <matt@codeconstruct.com.au>
    Signed-off-by: default avatarJeremy Kerr <jk@codeconstruct.com.au>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    80be9b2c
Makefile 47 Bytes