mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-10 04:26:19 -04:00
spi: mxc_spi: Fix handling of chip select
In decode_cs() function the polarity of the chip select must be taken into account. Also, for the case of low active chip select, the CS was activated too early. Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
This commit is contained in:
parent
081237c1f7
commit
de5bf02cb1
@ -387,7 +387,7 @@ static int decode_cs(struct mxc_spi_slave *mxcs, unsigned int cs)
|
|||||||
if (cs > 3) {
|
if (cs > 3) {
|
||||||
mxcs->gpio = cs >> 8;
|
mxcs->gpio = cs >> 8;
|
||||||
cs &= 3;
|
cs &= 3;
|
||||||
ret = gpio_direction_output(mxcs->gpio, 0);
|
ret = gpio_direction_output(mxcs->gpio, !(mxcs->ss_pol));
|
||||||
if (ret) {
|
if (ret) {
|
||||||
printf("mxc_spi: cannot setup gpio %d\n", mxcs->gpio);
|
printf("mxc_spi: cannot setup gpio %d\n", mxcs->gpio);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -414,6 +414,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mxcs->ss_pol = (mode & SPI_CS_HIGH) ? 1 : 0;
|
||||||
|
|
||||||
ret = decode_cs(mxcs, cs);
|
ret = decode_cs(mxcs, cs);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
free(mxcs);
|
free(mxcs);
|
||||||
@ -425,7 +427,6 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
mxcs->slave.bus = bus;
|
mxcs->slave.bus = bus;
|
||||||
mxcs->slave.cs = cs;
|
mxcs->slave.cs = cs;
|
||||||
mxcs->base = spi_bases[bus];
|
mxcs->base = spi_bases[bus];
|
||||||
mxcs->ss_pol = (mode & SPI_CS_HIGH) ? 1 : 0;
|
|
||||||
|
|
||||||
ret = spi_cfg_mxc(mxcs, cs, max_hz, mode);
|
ret = spi_cfg_mxc(mxcs, cs, max_hz, mode);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user