diff options
| author | Simon Glass <sjg@chromium.org> | 2013-03-18 19:23:40 +0000 | 
|---|---|---|
| committer | Simon Glass <sjg@chromium.org> | 2013-03-19 08:45:36 -0700 | 
| commit | d3504fee73ec626117427afa08116d1dde21ba9d (patch) | |
| tree | 04b3d508a3ce15c1e67baf76cf964aedf3c559a7 /drivers/spi/omap3_spi.c | |
| parent | ba6c3ce9bd0ac572592dc909878117dce219c564 (diff) | |
| download | olio-uboot-2014.01-d3504fee73ec626117427afa08116d1dde21ba9d.tar.xz olio-uboot-2014.01-d3504fee73ec626117427afa08116d1dde21ba9d.zip | |
spi: Use spi_alloc_slave() in each SPI driver
Rather than each driver having its own way to allocate a SPI slave,
use the new allocation function everywhere. This will make it easier
to extend the interface without breaking drivers.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/spi/omap3_spi.c')
| -rw-r--r-- | drivers/spi/omap3_spi.c | 27 | 
1 files changed, 14 insertions, 13 deletions
| diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c index 344d5b8a7..80a4e4776 100644 --- a/drivers/spi/omap3_spi.c +++ b/drivers/spi/omap3_spi.c @@ -80,12 +80,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,  				  unsigned int max_hz, unsigned int mode)  {  	struct omap3_spi_slave	*ds; - -	ds = malloc(sizeof(struct omap3_spi_slave)); -	if (!ds) { -		printf("SPI error: malloc of SPI structure failed\n"); -		return NULL; -	} +	struct mcspi *regs;  	/*  	 * OMAP3 McSPI (MultiChannel SPI) has 4 busses (modules) @@ -98,21 +93,21 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,  	switch (bus) {  	case 0: -		ds->regs = (struct mcspi *)OMAP3_MCSPI1_BASE; +		regs = (struct mcspi *)OMAP3_MCSPI1_BASE;  		break;  #ifdef OMAP3_MCSPI2_BASE  	case 1: -		ds->regs = (struct mcspi *)OMAP3_MCSPI2_BASE; +		regs = (struct mcspi *)OMAP3_MCSPI2_BASE;  		break;  #endif  #ifdef OMAP3_MCSPI3_BASE   	case 2: -		ds->regs = (struct mcspi *)OMAP3_MCSPI3_BASE; +		regs = (struct mcspi *)OMAP3_MCSPI3_BASE;  		break;  #endif  #ifdef OMAP3_MCSPI4_BASE  	case 3: -		ds->regs = (struct mcspi *)OMAP3_MCSPI4_BASE; +		regs = (struct mcspi *)OMAP3_MCSPI4_BASE;  		break;  #endif  	default: @@ -120,7 +115,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,  			Supported busses 0 - 3\n", bus);  		return NULL;  	} -	ds->slave.bus = bus;  	if (((bus == 0) && (cs > 3)) ||  			((bus == 1) && (cs > 1)) || @@ -130,19 +124,26 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,  			on bus %i\n", cs, bus);  		return NULL;  	} -	ds->slave.cs = cs;  	if (max_hz > OMAP3_MCSPI_MAX_FREQ) {  		printf("SPI error: unsupported frequency %i Hz. \  			Max frequency is 48 Mhz\n", max_hz);  		return NULL;  	} -	ds->freq = max_hz;  	if (mode > SPI_MODE_3) {  		printf("SPI error: unsupported SPI mode %i\n", mode);  		return NULL;  	} + +	ds = spi_alloc_slave(struct omap3_spi_slave, bus, cs); +	if (!ds) { +		printf("SPI error: malloc of SPI structure failed\n"); +		return NULL; +	} + +	ds->regs = regs; +	ds->freq = max_hz;  	ds->mode = mode;  	return &ds->slave; |