On 2/21/22 09:44, Michael Walle wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > Am 2022-02-18 15:58, schrieb Tudor Ambarus: >> Fortunately there are controllers >> that can swap back the bytes at runtime, fixing the endiannesses. >> Provide >> a way for the upper layers to specify the byte order in DTR mode. > > Are there any patches for the atmel-quadspi yet? What happens if not public, but will publish them these days. > the controller doesn't support it? Will there be a software fallback? no need for a fallback, the controller can ignore op->data.dtr_bswap16 if it can't swap bytes. Here's the changes that enable this on atmel-quadspi: Author: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> Date: Thu Feb 17 10:48:10 2022 +0200 spi: atmel-quadspi: Set endianness on 8D-8D-8D mode according to the flash requirements Macronix swaps bytes on a 16-bit boundary when configured in Octal DTR. The byte order of 16-bit words is swapped when read or write written in 8D-8D-8D mode compared to STR modes. Set the endianness flash requirements to avoid endianness problems during boot stages. Signed-off-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c index a4ba94ce84f1..c4a3963f7c84 100644 --- a/drivers/spi/atmel-quadspi.c +++ b/drivers/spi/atmel-quadspi.c @@ -697,6 +697,8 @@ static int atmel_qspi_sama7g5_set_cfg(struct atmel_qspi *aq, ifr |= QSPI_IFR_DDREN; if (op->cmd.dtr) ifr |= QSPI_IFR_DDRCMDEN; + if (op->data.dtr_bswap16) + ifr |= QSPI_IFR_END; ifr |= QSPI_IFR_DQSEN; }