mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00
spi: Add function to allocate a new SPI slave
At present it is difficult to extend the SPI structure since all drivers allocate it themselves, and few of them zero all fields. Add a new function spi_alloc_slave() which can be used by SPI drivers to perform this allocation, and thus ensure that all drivers can better cope with SPI structure changes. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@ -62,6 +62,47 @@ struct spi_slave {
|
||||
*/
|
||||
void spi_init(void);
|
||||
|
||||
/**
|
||||
* spi_do_alloc_slave - Allocate a new SPI slave (internal)
|
||||
*
|
||||
* Allocate and zero all fields in the spi slave, and set the bus/chip
|
||||
* select. Use the helper macro spi_alloc_slave() to call this.
|
||||
*
|
||||
* @offset: Offset of struct spi_slave within slave structure
|
||||
* @size: Size of slave structure
|
||||
* @bus: Bus ID of the slave chip.
|
||||
* @cs: Chip select ID of the slave chip on the specified bus.
|
||||
*/
|
||||
void *spi_do_alloc_slave(int offset, int size, unsigned int bus,
|
||||
unsigned int cs);
|
||||
|
||||
/**
|
||||
* spi_alloc_slave - Allocate a new SPI slave
|
||||
*
|
||||
* Allocate and zero all fields in the spi slave, and set the bus/chip
|
||||
* select.
|
||||
*
|
||||
* @_struct: Name of structure to allocate (e.g. struct tegra_spi). This
|
||||
* structure must contain a member 'struct spi_slave *slave'.
|
||||
* @bus: Bus ID of the slave chip.
|
||||
* @cs: Chip select ID of the slave chip on the specified bus.
|
||||
*/
|
||||
#define spi_alloc_slave(_struct, bus, cs) \
|
||||
spi_do_alloc_slave(offsetof(_struct, slave), \
|
||||
sizeof(_struct), bus, cs)
|
||||
|
||||
/**
|
||||
* spi_alloc_slave_base - Allocate a new SPI slave with no private data
|
||||
*
|
||||
* Allocate and zero all fields in the spi slave, and set the bus/chip
|
||||
* select.
|
||||
*
|
||||
* @bus: Bus ID of the slave chip.
|
||||
* @cs: Chip select ID of the slave chip on the specified bus.
|
||||
*/
|
||||
#define spi_alloc_slave_base(bus, cs) \
|
||||
spi_do_alloc_slave(0, sizeof(struct spi_slave), bus, cs)
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Set up communications parameters for a SPI slave.
|
||||
*
|
||||
|
Reference in New Issue
Block a user