]> git.sur5r.net Git - u-boot/blobdiff - drivers/spi/bfin_spi.c
arm: atmel: get rid of too many ifdeffery
[u-boot] / drivers / spi / bfin_spi.c
index 0fa131b21df7232d0786e2e52130bea77f0fda0f..bb88f3008a8b5ad899da0a0d0c037f05d912284d 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2005-2010 Analog Devices Inc.
  *
- * Licensed under the GPL-2 or later.
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 /*#define DEBUG*/
@@ -144,10 +144,8 @@ void spi_set_speed(struct spi_slave *slave, uint hz)
        u32 baud;
 
        sclk = get_sclk();
-       baud = sclk / (2 * hz);
        /* baud should be rounded up */
-       if (sclk % (2 * hz))
-               baud += 1;
+       baud = DIV_ROUND_UP(sclk, 2 * hz);
        if (baud < 2)
                baud = 2;
        else if (baud > (u16)-1)
@@ -248,6 +246,8 @@ void spi_release_bus(struct spi_slave *slave)
 static int spi_pio_xfer(struct bfin_spi_slave *bss, const u8 *tx, u8 *rx,
                        uint bytes)
 {
+       /* discard invalid data and clear RXS */
+       read_SPI_RDBR(bss);
        /* todo: take advantage of hardware fifos  */
        while (bytes--) {
                u8 value = (tx ? *tx++ : CONFIG_BFIN_SPI_IDLE_VAL);