net: axi_emac: Put iobase to private structure
[oweals/u-boot.git] / drivers / spi / bfin_spi6xx.c
index fde3447426770eb78f549d3d5484e1c2f04fbd92..9a27b78f641747e11e90ee96383970970d449a13 100644 (file)
  */
 
 #include <common.h>
+#include <console.h>
 #include <malloc.h>
 #include <spi.h>
 
 #include <asm/blackfin.h>
+#include <asm/clock.h>
 #include <asm/gpio.h>
 #include <asm/portmux.h>
 #include <asm/mach-common/bits/spi6xx.h>
@@ -62,9 +64,9 @@ void spi_cs_activate(struct spi_slave *slave)
                ssel = bfin_read32(&bss->regs->ssel);
                ssel |= 1 << slave->cs;
                if (bss->cs_pol)
-                       ssel |= (1 << 8) << slave->cs;
+                       ssel |= BIT(8) << slave->cs;
                else
-                       ssel &= ~((1 << 8) << slave->cs);
+                       ssel &= ~(BIT(8) << slave->cs);
                bfin_write32(&bss->regs->ssel, ssel);
        }
 
@@ -82,9 +84,9 @@ void spi_cs_deactivate(struct spi_slave *slave)
                u32 ssel;
                ssel = bfin_read32(&bss->regs->ssel);
                if (bss->cs_pol)
-                       ssel &= ~((1 << 8) << slave->cs);
+                       ssel &= ~(BIT(8) << slave->cs);
                else
-                       ssel |= (1 << 8) << slave->cs;
+                       ssel |= BIT(8) << slave->cs;
                /* deassert cs */
                bfin_write32(&bss->regs->ssel, ssel);
                SSYNC();
@@ -135,11 +137,11 @@ static const unsigned short cs_pins[][7] = {
 void spi_set_speed(struct spi_slave *slave, uint hz)
 {
        struct bfin_spi_slave *bss = to_bfin_spi_slave(slave);
-       ulong sclk;
+       ulong clk;
        u32 clock;
 
-       sclk = get_sclk1();
-       clock = sclk / hz;
+       clk = get_spi_clk();
+       clock = clk / hz;
        if (clock)
                clock--;
        bss->clock = clock;
@@ -154,10 +156,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        if (!spi_cs_is_valid(bus, cs))
                return NULL;
 
-       if (bus >= ARRAY_SIZE(pins) || pins[bus] == NULL) {
-               debug("%s: invalid bus %u\n", __func__, bus);
-               return NULL;
-       }
        switch (bus) {
 #ifdef SPI0_REGBASE
        case 0:
@@ -175,15 +173,14 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
                break;
 #endif
        default:
+               debug("%s: invalid bus %u\n", __func__, bus);
                return NULL;
        }
 
-       bss = malloc(sizeof(*bss));
+       bss = spi_alloc_slave(struct bfin_spi_slave, bus, cs);
        if (!bss)
                return NULL;
 
-       bss->slave.bus = bus;
-       bss->slave.cs = cs;
        bss->regs = (struct bfin_spi_regs *)reg_base;
        bss->control = SPI_CTL_EN | SPI_CTL_MSTR;
        if (mode & SPI_CPHA)