[PATCH 0/4] spi-mem: Allow specifying the byte order in DTR mode
Tudor.Ambarus at microchip.com
Tudor.Ambarus at microchip.com
Tue Feb 22 05:54:56 PST 2022
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 at microchip.com>
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 at microchip.com>
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;
}
More information about the linux-mtd
mailing list