diff options
author | Jagan Teki <jteki@openedev.com> | 2016-03-15 23:56:33 +0530 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-03-15 14:50:09 -0400 |
commit | 41bccb814285047c7f0da2435c8c3af1c2fd7c5b (patch) | |
tree | 06493900229b924bf864c3cb5049fb1b9713188a /drivers/spi | |
parent | 4d339a9e8a758889de5da16b562aff5601bb3d8d (diff) | |
download | u-boot-imx-41bccb814285047c7f0da2435c8c3af1c2fd7c5b.zip u-boot-imx-41bccb814285047c7f0da2435c8c3af1c2fd7c5b.tar.gz u-boot-imx-41bccb814285047c7f0da2435c8c3af1c2fd7c5b.tar.bz2 |
spi: omap3: Fix multiple definition of 'priv'
Global definition of priv seems no-sense to use it
for non-dm case and pass the pointer to functions
which are common to both dm and non-dm.
So, fix this by removing omap3_spi_slave from non-dm
and make visible to omap3_spi_priv for both dm and non-dm.
Cc: Christophe Ricard <christophe-h.ricard@st.com>
Reported-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
Diffstat (limited to 'drivers/spi')
-rw-r--r-- | drivers/spi/omap3_spi.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c index 98ee6d3..2fe34c9 100644 --- a/drivers/spi/omap3_spi.c +++ b/drivers/spi/omap3_spi.c @@ -103,6 +103,9 @@ struct mcspi { }; struct omap3_spi_priv { +#ifndef CONFIG_DM_SPI + struct spi_slave slave; +#endif struct mcspi *regs; unsigned int cs; unsigned int freq; @@ -454,16 +457,9 @@ static void _omap3_spi_claim_bus(struct omap3_spi_priv *priv) #ifndef CONFIG_DM_SPI -struct omap3_spi_slave { - struct spi_slave slave; - struct omap3_spi_priv spi_priv; -}; - -struct omap3_spi_priv *priv; - -static inline struct omap3_spi_slave *to_omap3_spi(struct spi_slave *slave) +static inline struct omap3_spi_priv *to_omap3_spi(struct spi_slave *slave) { - return container_of(slave, struct omap3_spi_slave, slave); + return container_of(slave, struct omap3_spi_priv, slave); } void spi_init(void) @@ -473,13 +469,15 @@ void spi_init(void) void spi_free_slave(struct spi_slave *slave) { - struct omap3_spi_slave *ds = to_omap3_spi(slave); + struct omap3_spi_priv *priv = to_omap3_spi(slave); - free(ds); + free(priv); } int spi_claim_bus(struct spi_slave *slave) { + struct omap3_spi_priv *priv = to_omap3_spi(slave); + _omap3_spi_claim_bus(priv); _omap3_spi_set_wordlen(priv); _omap3_spi_set_mode(priv); @@ -490,6 +488,8 @@ int spi_claim_bus(struct spi_slave *slave) void spi_release_bus(struct spi_slave *slave) { + struct omap3_spi_priv *priv = to_omap3_spi(slave); + /* Reset the SPI hardware */ spi_reset(priv->regs); } @@ -497,7 +497,7 @@ void spi_release_bus(struct spi_slave *slave) struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, unsigned int max_hz, unsigned int mode) { - struct omap3_spi_slave *ds; + struct omap3_spi_priv *priv; struct mcspi *regs; /* @@ -551,29 +551,31 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, return NULL; } - ds = spi_alloc_slave(struct omap3_spi_slave, bus, cs); - if (!ds) { + priv = spi_alloc_slave(struct omap3_spi_priv, bus, cs); + if (!priv) { printf("SPI error: malloc of SPI structure failed\n"); return NULL; } - priv = &ds->spi_priv; - priv->regs = regs; priv->cs = cs; priv->freq = max_hz; priv->mode = mode; - priv->wordlen = ds->slave.wordlen; + priv->wordlen = priv->slave.wordlen; #ifdef CONFIG_OMAP3_SPI_D0_D1_SWAPPED priv->pin_dir = MCSPI_PINDIR_D0_OUT_D1_IN; #endif - return &ds->slave; + return &priv->slave; } int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout, void *din, unsigned long flags) -{ return _spi_xfer(priv, bitlen, dout, din, flags); } +{ + struct omap3_spi_priv *priv = to_omap3_spi(slave); + + return _spi_xfer(priv, bitlen, dout, din, flags); +} #else |