spi: omap3: Fix multiple definition of 'priv'
authorJagan Teki <jteki@openedev.com>
Tue, 15 Mar 2016 18:26:33 +0000 (23:56 +0530)
committerTom Rini <trini@konsulko.com>
Tue, 15 Mar 2016 18:50:09 +0000 (14:50 -0400)
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>
drivers/spi/omap3_spi.c

index 98ee6d3d03ff7b85153065dd7f07d6548370139a..2fe34c9a14a8e569a1989b5f87f5d5adef09f8e0 100644 (file)
@@ -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