• Martin Sperl's avatar
    spi: core: added spi_resource management · d780c371
    Martin Sperl authored
    SPI resource management framework used while processing a spi_message
    via the spi-core.
    
    The basic idea is taken from devres, but as the allocation may happen
    fairly frequently, some provisioning (in the form of an unused spi_device
    pointer argument to spi_res_alloc) has been made so that at a later stage
    we may implement reuse objects allocated earlier avoiding the repeated
    allocation by keeping a cache of objects that we can reuse.
    
    This framework can get used for:
    * rewriting spi_messages
      * to fullfill alignment requirements of the spi_master HW
      * to fullfill transfer length requirements
        (e.g: transfers need to be less than 64k)
      * consolidate spi_messages with multiple transfers into a single transfer
      when the total transfer length is below a threshold.
    * reimplement spi_unmap_buf without explicitly needing to check if it has
      been mapped
    Signed-off-by: default avatarMartin Sperl <kernel@martin.sperl.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    d780c371
spi.c 75.5 KB