• Miquel Raynal's avatar
    spi: armada-3700: Fix failing commands with quad-SPI · 747e1f60
    Miquel Raynal authored
    A3700 SPI controller datasheet states that only the first line (IO0) is
    used to receive and send instructions, addresses and dummy bytes,
    unless for addresses during an RX operation in a quad SPI configuration
    (see p.821 of the Armada-3720-DB datasheet). Otherwise, some commands
    such as SPI NOR commands like READ_FROM_CACHE_DUAL_IO(0xeb) and
    READ_FROM_CACHE_DUAL_IO(0xbb) will fail because these commands must send
    address bytes through the four pins. Data transfer always use the four
    bytes with this setup.
    
    Thus, in quad SPI configuration, the A3700_SPI_ADDR_PIN bit must be set
    only in this case to inform the controller that it must use the number
    of pins indicated in the {A3700_SPI_DATA_PIN1,A3700_SPI_DATA_PIN0} field
    during the address cycles of an RX operation.
    Suggested-by: default avatarKen Ma <make@marvell.com>
    Signed-off-by: default avatarMiquel Raynal <miquel.raynal@free-electrons.com>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    747e1f60
spi-armada-3700.c 23.2 KB