]> git.sur5r.net Git - u-boot/blobdiff - drivers/spi/mxc_spi.c
Merge branch 'u-boot-imx/master' into 'u-boot-arm/master'
[u-boot] / drivers / spi / mxc_spi.c
index 859c43fee2790de7c80335bb58a71b20934c49f9..cb48019a42b409acb8195ea3bd3cfa97f005de5d 100644 (file)
@@ -137,11 +137,11 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
                return -1;
        }
 
-       reg_ctrl = reg_read(&regs->ctrl);
-
        /* Reset spi */
-       reg_write(&regs->ctrl, (reg_ctrl & ~MXC_CSPICTRL_EN));
-       reg_write(&regs->ctrl, (reg_ctrl | MXC_CSPICTRL_EN));
+       reg_write(&regs->ctrl, 0);
+       reg_write(&regs->ctrl, MXC_CSPICTRL_EN);
+
+       reg_ctrl = reg_read(&regs->ctrl);
 
        /*
         * The following computation is taken directly from Freescale's code.
@@ -408,7 +408,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        if (bus >= ARRAY_SIZE(spi_bases))
                return NULL;
 
-       mxcs = calloc(sizeof(struct mxc_spi_slave), 1);
+       mxcs = spi_alloc_slave(struct mxc_spi_slave, bus, cs);
        if (!mxcs) {
                puts("mxc_spi: SPI Slave not allocated !\n");
                return NULL;
@@ -424,8 +424,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 
        cs = ret;
 
-       mxcs->slave.bus = bus;
-       mxcs->slave.cs = cs;
        mxcs->base = spi_bases[bus];
 
        ret = spi_cfg_mxc(mxcs, cs, max_hz, mode);