Created
March 1, 2021 17:10
-
-
Save macromorgan/76b6d057d46ee361cb97c24a6aae84f8 to your computer and use it in GitHub Desktop.
Add XT25F128B Support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| From 0de196e1af6d853bd362cc23edbdf76ff4614d8b Mon Sep 17 00:00:00 2001 | |
| From: Chris Morgan <[email protected]> | |
| Date: Mon, 1 Mar 2021 10:51:21 -0600 | |
| Subject: [PATCH] Add xtx flash chips | |
| --- | |
| drivers/mtd/spi-nor/Makefile | 1 + | |
| drivers/mtd/spi-nor/core.c | 1 + | |
| drivers/mtd/spi-nor/core.h | 1 + | |
| drivers/mtd/spi-nor/xtx.c | 53 ++++++++++++++++++++++++++++++++++++ | |
| 4 files changed, 56 insertions(+) | |
| create mode 100644 drivers/mtd/spi-nor/xtx.c | |
| diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile | |
| index 653923896205..3f7a52d7fa0b 100644 | |
| --- a/drivers/mtd/spi-nor/Makefile | |
| +++ b/drivers/mtd/spi-nor/Makefile | |
| @@ -17,6 +17,7 @@ spi-nor-objs += sst.o | |
| spi-nor-objs += winbond.o | |
| spi-nor-objs += xilinx.o | |
| spi-nor-objs += xmc.o | |
| +spi-nor-objs += xtx.o | |
| obj-$(CONFIG_MTD_SPI_NOR) += spi-nor.o | |
| obj-$(CONFIG_MTD_SPI_NOR) += controllers/ | |
| diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c | |
| index 0522304f52fa..9a89ec473e4b 100644 | |
| --- a/drivers/mtd/spi-nor/core.c | |
| +++ b/drivers/mtd/spi-nor/core.c | |
| @@ -2215,6 +2215,7 @@ static const struct spi_nor_manufacturer *manufacturers[] = { | |
| &spi_nor_winbond, | |
| &spi_nor_xilinx, | |
| &spi_nor_xmc, | |
| + &spi_nor_xtx, | |
| }; | |
| static const struct flash_info * | |
| diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h | |
| index 4a3f7f150b5d..ee0e45eaffcd 100644 | |
| --- a/drivers/mtd/spi-nor/core.h | |
| +++ b/drivers/mtd/spi-nor/core.h | |
| @@ -425,6 +425,7 @@ extern const struct spi_nor_manufacturer spi_nor_sst; | |
| extern const struct spi_nor_manufacturer spi_nor_winbond; | |
| extern const struct spi_nor_manufacturer spi_nor_xilinx; | |
| extern const struct spi_nor_manufacturer spi_nor_xmc; | |
| +extern const struct spi_nor_manufacturer spi_nor_xtx; | |
| void spi_nor_spimem_setup_op(const struct spi_nor *nor, | |
| struct spi_mem_op *op, | |
| diff --git a/drivers/mtd/spi-nor/xtx.c b/drivers/mtd/spi-nor/xtx.c | |
| new file mode 100644 | |
| index 000000000000..43fdbc3144ca | |
| --- /dev/null | |
| +++ b/drivers/mtd/spi-nor/xtx.c | |
| @@ -0,0 +1,53 @@ | |
| +// SPDX-License-Identifier: GPL-2.0 | |
| +/* | |
| + * Copyright (C) 2021, Chris Morgan <[email protected]> | |
| + * Based on XMC SPI NOR module | |
| + * Copyright (C) 2005, Intec Automation Inc. | |
| + * Copyright (C) 2014, Freescale Semiconductor, Inc. | |
| + */ | |
| + | |
| +#include <linux/mtd/spi-nor.h> | |
| + | |
| +#include "core.h" | |
| + | |
| +static const struct flash_info xtx_parts[] = { | |
| + /* XTX (XTX Technology Limited) */ | |
| + { "XT25F128B", INFO(0x0b4018, 0, 64 * 1024, 256, | |
| + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | | |
| + SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) }, | |
| +}; | |
| + | |
| +static int xtx_set_4byte_addr_mode(struct spi_nor *nor, bool enable) | |
| +{ | |
| + int ret; | |
| + | |
| + ret = spi_nor_set_4byte_addr_mode(nor, enable); | |
| + if (ret || enable) | |
| + return ret; | |
| + | |
| + ret = spi_nor_write_enable(nor); | |
| + if (ret) | |
| + return ret; | |
| + | |
| + ret = spi_nor_write_ear(nor, 0); | |
| + if (ret) | |
| + return ret; | |
| + | |
| + return spi_nor_write_disable(nor); | |
| +} | |
| + | |
| +static void xtx_default_init(struct spi_nor *nor) | |
| +{ | |
| + nor->params->set_4byte_addr_mode = xtx_set_4byte_addr_mode; | |
| +} | |
| + | |
| +static const struct spi_nor_fixups xtx_fixups = { | |
| + .default_init = xtx_default_init, | |
| +}; | |
| + | |
| +const struct spi_nor_manufacturer spi_nor_xtx = { | |
| + .name = "xtx", | |
| + .parts = xtx_parts, | |
| + .nparts = ARRAY_SIZE(xtx_parts), | |
| +// .fixups = &xtx_fixups, | |
| +}; | |
| -- | |
| 2.25.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment