summaryrefslogtreecommitdiff
path: root/drivers/spi/mxc_spi.c
diff options
context:
space:
mode:
authorTom Rini <trini@ti.com>2012-12-22 05:55:19 -0700
committerTom Rini <trini@ti.com>2012-12-22 05:55:19 -0700
commitda77a0e593c370c9ed79ea22c1df321d5f4e4bbf (patch)
treed31ff68d217a80422845c82104098eef744f4cde /drivers/spi/mxc_spi.c
parentba6d4b64b33146740a15b3dd5a5f511a2bc8d6f6 (diff)
parent96764df1b47ddebfb50fadf5af72530b07b5fc89 (diff)
downloadolio-uboot-2014.01-da77a0e593c370c9ed79ea22c1df321d5f4e4bbf.tar.xz
olio-uboot-2014.01-da77a0e593c370c9ed79ea22c1df321d5f4e4bbf.zip
Merge branch 'master' of git://git.denx.de/u-boot-arm
Diffstat (limited to 'drivers/spi/mxc_spi.c')
-rw-r--r--drivers/spi/mxc_spi.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
index 13bebe8ac..859c43fee 100644
--- a/drivers/spi/mxc_spi.c
+++ b/drivers/spi/mxc_spi.c
@@ -140,8 +140,8 @@ static s32 spi_cfg_mxc(struct mxc_spi_slave *mxcs, unsigned int cs,
reg_ctrl = reg_read(&regs->ctrl);
/* Reset spi */
- reg_write(&regs->ctrl, 0);
- reg_write(&regs->ctrl, (reg_ctrl | 0x1));
+ reg_write(&regs->ctrl, (reg_ctrl & ~MXC_CSPICTRL_EN));
+ reg_write(&regs->ctrl, (reg_ctrl | MXC_CSPICTRL_EN));
/*
* The following computation is taken directly from Freescale's code.
@@ -387,7 +387,7 @@ static int decode_cs(struct mxc_spi_slave *mxcs, unsigned int cs)
if (cs > 3) {
mxcs->gpio = cs >> 8;
cs &= 3;
- ret = gpio_direction_output(mxcs->gpio, 0);
+ ret = gpio_direction_output(mxcs->gpio, !(mxcs->ss_pol));
if (ret) {
printf("mxc_spi: cannot setup gpio %d\n", mxcs->gpio);
return -EINVAL;
@@ -414,6 +414,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
return NULL;
}
+ mxcs->ss_pol = (mode & SPI_CS_HIGH) ? 1 : 0;
+
ret = decode_cs(mxcs, cs);
if (ret < 0) {
free(mxcs);
@@ -425,7 +427,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
mxcs->slave.bus = bus;
mxcs->slave.cs = cs;
mxcs->base = spi_bases[bus];
- mxcs->ss_pol = (mode & SPI_CS_HIGH) ? 1 : 0;
ret = spi_cfg_mxc(mxcs, cs, max_hz, mode);
if (ret) {