Merge remote-tracking branch 'spi/fix/mcspi' into spi-linus
This commit is contained in:
commit
5b66fd1812
1 changed files with 9 additions and 3 deletions
|
@ -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 *mcspi;
|
||||
unsigned int wcnt;
|
||||
int fifo_depth, bytes_per_word;
|
||||
int max_fifo_depth, fifo_depth, bytes_per_word;
|
||||
u32 chconf, xferlevel;
|
||||
|
||||
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)
|
||||
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)
|
||||
goto disable_fifo;
|
||||
|
||||
|
@ -299,7 +304,8 @@ static void omap2_mcspi_set_fifo(const struct spi_device *spi,
|
|||
if (t->rx_buf != NULL) {
|
||||
chconf |= OMAP2_MCSPI_CHCONF_FFER;
|
||||
xferlevel |= (fifo_depth - 1) << 8;
|
||||
} else {
|
||||
}
|
||||
if (t->tx_buf != NULL) {
|
||||
chconf |= OMAP2_MCSPI_CHCONF_FFET;
|
||||
xferlevel |= fifo_depth - 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue