From d3b1ee98663f1fecbe3408380597d261f1278e8e Mon Sep 17 00:00:00 2001 From: Jari van Ewijk Date: Fri, 22 Jul 2022 10:20:39 +0200 Subject: [PATCH] Macronix MX25RXX driver: add support for MX25LXX as well Co-authored-by: Peter van der Perk --- drivers/mtd/Kconfig | 8 ++++++++ drivers/mtd/mx25rxx.c | 13 +++++++++++++ 2 files changed, 21 insertions(+) diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig index 006215bc1d..08486d9446 100644 --- a/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig @@ -716,6 +716,14 @@ config MX25RXX_SECTOR512 bool "Simulate 512 byte Erase Blocks" default n +config MX25RXX_PAGE128 + bool "128 byte size pages" + default n + +config MX25RXX_LXX + bool "Run MX25RXX driver in MX25LXX mode" + default n + endif # MTD_MX25RXX config MTD_SMART diff --git a/drivers/mtd/mx25rxx.c b/drivers/mtd/mx25rxx.c index 23b04a00bb..ef1b36c649 100644 --- a/drivers/mtd/mx25rxx.c +++ b/drivers/mtd/mx25rxx.c @@ -100,7 +100,11 @@ /* JEDEC Read ID register values */ #define MX25R_JEDEC_MANUFACTURER 0xc2 /* Macronix manufacturer ID */ +#ifdef CONFIG_MX25RXX_LXX +#define MX25R_JEDEC_MEMORY_TYPE 0x20 /* MX25Lx memory type */ +#else #define MX25R_JEDEC_MEMORY_TYPE 0x28 /* MX25Rx memory type */ +#endif #define MX25R_JEDEC_MX25R6435F_CAPACITY 0x17 /* MX25R6435F memory capacity */ #define MX25R_JEDEC_MX25R8035F_CAPACITY 0x14 /* MX25R8035F memory capacity */ @@ -112,7 +116,12 @@ #define MX25R6435F_SECTOR_SHIFT (12) #define MX25R6435F_SECTOR_COUNT (2048) #define MX25R6435F_PAGE_SIZE (256) + +#ifdef CONFIG_MX25RXX_PAGE128 +#define MX25R6435F_PAGE_SHIFT (7) +#else #define MX25R6435F_PAGE_SHIFT (8) +#endif /* Status register bit definitions */ @@ -539,7 +548,11 @@ void mx25rxx_write_status_config(FAR struct mx25rxx_dev_s *dev, dev->cmdbuf[1] = config & 0xff; dev->cmdbuf[2] = config >> 8; +#ifdef CONFIG_MX25RXX_LXX + mx25rxx_command_write(dev->qspi, MX25R_WRSR, dev->cmdbuf, 2); +#else mx25rxx_command_write(dev->qspi, MX25R_WRSR, dev->cmdbuf, 3); +#endif mx25rxx_write_enable(dev, false); }