]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/spi/spi_mpc83xx.c
spi_mpc83xx: get rid of magic numbers
[karo-tx-linux.git] / drivers / spi / spi_mpc83xx.c
index 3295cfcc9f2060ce321550e0b6bebdcd50f4eec9..e2d8dbc15c807d7e280f93ac5fb1b9ebb6424373 100644 (file)
@@ -153,7 +153,8 @@ static void mpc83xx_spi_chipselect(struct spi_device *spi, int value)
                        len = len - 1;
 
                /* mask out bits we are going to set */
-               regval &= ~0x38ff0000;
+               regval &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH |
+                           SPMODE_LEN(0xF) | SPMODE_DIV16 | SPMODE_PM(0xF));
 
                if (spi->mode & SPI_CPHA)
                        regval |= SPMODE_CP_BEGIN_EDGECLK;
@@ -176,6 +177,8 @@ static void mpc83xx_spi_chipselect(struct spi_device *spi, int value)
                        regval |= SPMODE_PM(pm);
                }
 
+               /* Turn off SPI unit prior changing mode */
+               mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode, 0);
                mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode, regval);
                if (mpc83xx_spi->activate_cs)
                        mpc83xx_spi->activate_cs(spi->chip_select, pol);
@@ -246,9 +249,11 @@ int mpc83xx_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
        regval = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode);
 
        /* Mask out bits_per_wordgth */
-       regval &= 0xff0fffff;
+       regval &= ~SPMODE_LEN(0xF);
        regval |= SPMODE_LEN(bits_per_word);
 
+       /* Turn off SPI unit prior changing mode */
+       mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode, 0);
        mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode, regval);
 
        return 0;