The fifo depth could be from 2 to 256 from HW spec, so fix off-by-one for checking fifo depth. Without this patch, fifo is 258 after for loop iteration for the "no-match" case. So below line does not catch the "no-match" case. dws->fifo_len = (fifo == 257) ? 0 : fifo; Signed-off-by: Axel Lin <axel.lin@xxxxxxxxxx> --- Hi, I don't have this hardware handy, so please test it. BTW, I'm wondering if it make sense to set dws->fifo_len to 0. Isn't it suppose to be 2 ~ 256? Thanks. drivers/spi/spi-dw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c index d0d5542..74b27479 100644 --- a/drivers/spi/spi-dw.c +++ b/drivers/spi/spi-dw.c @@ -621,7 +621,7 @@ static void spi_hw_init(struct dw_spi *dws) if (!dws->fifo_len) { u32 fifo; - for (fifo = 2; fifo <= 257; fifo++) { + for (fifo = 2; fifo <= 256; fifo++) { dw_writew(dws, DW_SPI_TXFLTR, fifo); if (fifo != dw_readw(dws, DW_SPI_TXFLTR)) break; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html