• Axel Lin's avatar
    spi: dw: Fix detecting FIFO depth · d297933c
    Axel Lin authored
    Current code tries to find the highest valid fifo depth by checking the value
    it wrote to DW_SPI_TXFLTR. There are a few problems in current code:
    1) There is an off-by-one in dws->fifo_len setting because it assumes the latest
       register write fails so the latest valid value should be fifo - 1.
    2) We know the depth could be from 2 to 256 from HW spec, so it is not necessary
       to test fifo == 257. In the case fifo is 257, it means the latest valid
       setting is fifo = 256. So after the for loop iteration, we should check
       fifo == 2 case instead of fifo == 257 if detecting the FIFO depth fails.
    This patch fixes above issues.
    Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
    Reviewed-and-tested-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    d297933c
spi-dw.c 18.1 KB