Merge remote-tracking branch 'spi/fix/mcspi' into spi-linus
This commit is contained in:
commit
5b66fd1812
|
@ -276,7 +276,7 @@ static void omap2_mcspi_set_fifo(const struct spi_device *spi,
|
||||||
struct omap2_mcspi_cs *cs = spi->controller_state;
|
struct omap2_mcspi_cs *cs = spi->controller_state;
|
||||||
struct omap2_mcspi *mcspi;
|
struct omap2_mcspi *mcspi;
|
||||||
unsigned int wcnt;
|
unsigned int wcnt;
|
||||||
int fifo_depth, bytes_per_word;
|
int max_fifo_depth, fifo_depth, bytes_per_word;
|
||||||
u32 chconf, xferlevel;
|
u32 chconf, xferlevel;
|
||||||
|
|
||||||
mcspi = spi_master_get_devdata(master);
|
mcspi = spi_master_get_devdata(master);
|
||||||
|
@ -287,7 +287,12 @@ static void omap2_mcspi_set_fifo(const struct spi_device *spi,
|
||||||
if (t->len % bytes_per_word != 0)
|
if (t->len % bytes_per_word != 0)
|
||||||
goto disable_fifo;
|
goto disable_fifo;
|
||||||
|
|
||||||
fifo_depth = gcd(t->len, OMAP2_MCSPI_MAX_FIFODEPTH);
|
if (t->rx_buf != NULL && t->tx_buf != NULL)
|
||||||
|
max_fifo_depth = OMAP2_MCSPI_MAX_FIFODEPTH / 2;
|
||||||
|
else
|
||||||
|
max_fifo_depth = OMAP2_MCSPI_MAX_FIFODEPTH;
|
||||||
|
|
||||||
|
fifo_depth = gcd(t->len, max_fifo_depth);
|
||||||
if (fifo_depth < 2 || fifo_depth % bytes_per_word != 0)
|
if (fifo_depth < 2 || fifo_depth % bytes_per_word != 0)
|
||||||
goto disable_fifo;
|
goto disable_fifo;
|
||||||
|
|
||||||
|
@ -299,7 +304,8 @@ static void omap2_mcspi_set_fifo(const struct spi_device *spi,
|
||||||
if (t->rx_buf != NULL) {
|
if (t->rx_buf != NULL) {
|
||||||
chconf |= OMAP2_MCSPI_CHCONF_FFER;
|
chconf |= OMAP2_MCSPI_CHCONF_FFER;
|
||||||
xferlevel |= (fifo_depth - 1) << 8;
|
xferlevel |= (fifo_depth - 1) << 8;
|
||||||
} else {
|
}
|
||||||
|
if (t->tx_buf != NULL) {
|
||||||
chconf |= OMAP2_MCSPI_CHCONF_FFET;
|
chconf |= OMAP2_MCSPI_CHCONF_FFET;
|
||||||
xferlevel |= fifo_depth - 1;
|
xferlevel |= fifo_depth - 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue