• Dhruva Gole's avatar
    spi: cadence-quadspi: use STIG mode for small reads · d403fb6e
    Dhruva Gole authored
    Fix the issue where some flash chips like cypress S25HS256T return the
    value of the same register over and over in DAC mode.
    
    For example in the TI K3-AM62x Processors refer [0] Technical Reference
    Manual there is a layer of digital logic in front of the QSPI/OSPI
    Drive when used in DAC mode. This is part of the Flash Subsystem (FSS)
    which provides access to external Flash devices.
    
    The FSS0_0_SYSCONFIG Register (Offset = 4h) has a BIT Field for
    OSPI_32B_DISABLE_MODE which has a Reset value = 0. This means, OSPI 32bit
    mode enabled by default.
    
    Thus, by default controller operates in 32 bit mode causing it to always
    align all data to 4 bytes from a 4byte aligned address. In some flash
    chips like cypress for example if we try to read some regs in DAC mode
    then it keeps sending the value of the first register that was requested
    and inorder to read the next reg, we have to stop and re-initiate a new
    transaction.
    
    This causes wrong register values to be read than what is desired when
    registers are read in DAC mode. Hence if the data.nbytes is very less
    then prefer STIG mode for such small reads.
    
    [0] https://www.ti.com/lit/ug/spruiv7a/spruiv7a.pdfSigned-off-by: default avatarDhruva Gole <d-gole@ti.com>
    Link: https://lore.kernel.org/r/20230125081023.1573712-5-d-gole@ti.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    d403fb6e
spi-cadence-quadspi.c 50.2 KB