[PATCH] mtd: spi-nor: XTX: Add support for XTX XT25F128B

Chris Morgan macromorgan at hotmail.com
Mon Apr 5 20:16:11 BST 2021


On Mon, Apr 05, 2021 at 08:52:11AM +0000, Tudor.Ambarus at microchip.com wrote:
> Hi,
> 
> On 4/2/21 11:15 PM, Chris Morgan wrote:
> > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> > 
> > Add support for a new vendor (XTX) along with a new chip from the
> > vendor (XT25F128B). This chip is used in the Odroid Go Advance,
> > and has been tested extensively using the spi-gpio driver, as it
> > is connected to a serial flash controller that is not currently
> > supported (but the pins can be repurposed to GPIO). Read, write, and
> > erase all work as expected.
> > 
> > Datasheet can be found here:
> > https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdatasheet.lcsc.com%2Fszlcsc%2F2005251034_XTX-XT25F128BSSIGT_C558844.pdf&data=04%7C01%7C%7Cf7133c0ccefc4898050e08d8f8101c7d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637532095378348815%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=SgseEt9ZbY%2BIaZdMyKLTAh3rnD5zrVqJYV3d0jAt6qM%3D&reserved=0
> > 
> > Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
> 
> Chris, we're trying to figure out how to deal with the continuation codes.
> Discussions on going at:
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml.org%2Flkml%2F2021%2F2%2F7%2F223&data=04%7C01%7C%7Cf7133c0ccefc4898050e08d8f8101c7d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637532095378353805%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=UJW6JeEVwwzttJ7CfhAOqGAzV%2FPyBJf%2FjWYvw6%2BUwuk%3D&reserved=0
> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.spinics.net%2Flists%2Fkernel%2Fmsg3808260.html&data=04%7C01%7C%7Cf7133c0ccefc4898050e08d8f8101c7d%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637532095378353805%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=wyMehux468x49Nb%2FhypiKif9rztptk9CJuRWmBzZ0Og%3D&reserved=0

Thanks, this helps.  For what it's worth, I ran the same command (spincl) on
my Raspberry pi against this chip and came up with the following:

spincl -ib -m0 -c0 -s0 -p0 6 0x90
0x00 0x00 0x00 0x00 0x0b 0x17

spincl -ib -m0 -c0 -s0 -p0 4 0x9F
0x00 0x0b 0x40 0x18

Doesn't look like this one uses continuation codes either, sadly.
Let me know what information I can provide to help with the
continuation codes for these seemingly non-conformant 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    | 24 ++++++++++++++++++++++++
> >  4 files changed, 27 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..4eec737e94c7
> > --- /dev/null
> > +++ b/drivers/mtd/spi-nor/xtx.c
> > @@ -0,0 +1,24 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (C) 2021, Chris Morgan <macromorgan at hotmail.com>
> > + * 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) },
> > +};
> > +
> > +const struct spi_nor_manufacturer spi_nor_xtx = {
> > +       .name = "xtx",
> > +       .parts = xtx_parts,
> > +       .nparts = ARRAY_SIZE(xtx_parts),
> > +};
> > --
> > 2.25.1
> > 
> 



More information about the linux-mtd mailing list