spi: core: added spi_resource management
authorMartin Sperl <kernel@martin.sperl.org>
Mon, 14 Dec 2015 15:20:18 +0000 (15:20 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 9 Feb 2016 19:25:43 +0000 (19:25 +0000)
commitd780c3711d9df9bacd56b71cf23443b895a331ca
tree4c6cf9ae8b0cd70fd6128a9bc2cec1ba1676dc47
parent92e963f50fc74041b5e9e744c330dca48e04f08d
spi: core: added spi_resource management

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: Martin Sperl <kernel@martin.sperl.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c
include/linux/spi/spi.h