• Ricardo Ribalda's avatar
    spi: xilinx: Detect stall with Unknown commands · 5a1314fa
    Ricardo Ribalda authored
    When the core is configured in C_SPI_MODE > 0, it integrates a
    lookup table that automatically configures the core in dual or quad mode
    based on the command (first byte on the tx fifo).
    
    Unfortunately, that list mode_?_memoy_*.mif does not contain all the
    supported commands by the flash.
    
    Since 4.14 spi-nor automatically tries to probe the flash using SFDP
    (command 0x5a), and that command is not part of the list_mode table.
    
    Whit the right combination of C_SPI_MODE and C_SPI_MEMORY this leads
    into a stall that can only be recovered with a soft rest.
    
    This patch detects this kind of stall and returns -EIO to the caller on
    those commands. spi-nor can handle this error properly:
    
    m25p80 spi0.0: Detected stall. Check C_SPI_MODE and C_SPI_MEMORY. 0x21 0x2404
    m25p80 spi0.0: SPI transfer failed: -5
    spi_master spi0: failed to transfer one message from queue
    m25p80 spi0.0: s25sl064p (8192 Kbytes)
    Signed-off-by: default avatarRicardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    5a1314fa
spi-xilinx.c 14.4 KB