public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
From: "Michael Walle" <mwalle@kernel.org>
To: "Cole Leavitt" <cole@unwrap.rs>,
	"Tudor Ambarus" <tudor.ambarus@linaro.org>,
	"Pratyush Yadav" <pratyush@kernel.org>
Cc: "Miquel Raynal" <miquel.raynal@bootlin.com>,
	"Richard Weinberger" <richard@nod.at>,
	"Vignesh Raghavendra" <vigneshr@ti.com>,
	<linux-mtd@lists.infradead.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] mtd: spi-nor: add support for Fudan Microelectronics FM25Q256
Date: Mon, 16 Feb 2026 09:32:06 +0100	[thread overview]
Message-ID: <DGG8W2SIQXMZ.1ZQ6TN7S2LKTW@kernel.org> (raw)
In-Reply-To: <20260214062002.17862-1-cole@unwrap.rs>


[-- Attachment #1.1: Type: text/plain, Size: 3862 bytes --]

Hi,

On Sat Feb 14, 2026 at 7:20 AM CET, Cole Leavitt wrote:
> Add support for the Fudan Microelectronics FM25Q256 (JEDEC ID f7 f0 30),

So F7 (without continuation codes) is ZMD. Fudan Micro is 7F 7F 7F
7F 7F 7F 7F A1 or if you (wrongly) ignore the continuation codes A1.

That's also what's described in the datasheet, mentioned below. Do
you really have a Fudan Micro flash?

> a 256Mbit (32MB) SPI NOR flash chip. This chip is found on Lenovo
> ThinkPad P16 Gen 3 (Arrow Lake-S) platforms as the SPI flash backing
> the UEFI firmware.
>
> The chip supports 4K sector erase, dual read, and quad read modes.
>
> Without this patch, the kernel's spi-nor driver reports:
>   spi-nor spi0.0: unrecognized JEDEC id bytes: f7 f0 30

Do you use the latest kernel? Doesn't the flash provide SFDP? I've
looked at [1] (there is none for the 256Mbit variant) and that one
supports SFDP.

-michael

[1] https://eng.fmsh.com/nvm/FM25Q128_ds_eng.pdf

> and refuses to create an MTD device, preventing userspace tools from
> accessing the flash.
>
> Signed-off-by: Cole Leavitt <cole@unwrap.rs>
> ---
>  drivers/mtd/spi-nor/Makefile |  1 +
>  drivers/mtd/spi-nor/core.c   |  1 +
>  drivers/mtd/spi-nor/core.h   |  1 +
>  drivers/mtd/spi-nor/fudan.c  | 25 +++++++++++++++++++++++++
>  4 files changed, 28 insertions(+)
>  create mode 100644 drivers/mtd/spi-nor/fudan.c
>
> diff --git a/drivers/mtd/spi-nor/Makefile b/drivers/mtd/spi-nor/Makefile
> index 5dd9c35f6b6f..2c8b9b3e08bb 100644
> --- a/drivers/mtd/spi-nor/Makefile
> +++ b/drivers/mtd/spi-nor/Makefile
> @@ -5,6 +5,7 @@ spi-nor-objs			+= atmel.o
>  spi-nor-objs			+= eon.o
>  spi-nor-objs			+= esmt.o
>  spi-nor-objs			+= everspin.o
> +spi-nor-objs			+= fudan.o
>  spi-nor-objs			+= gigadevice.o
>  spi-nor-objs			+= intel.o
>  spi-nor-objs			+= issi.o
> diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
> index d3f8a78efd3b..395ff5c39883 100644
> --- a/drivers/mtd/spi-nor/core.c
> +++ b/drivers/mtd/spi-nor/core.c
> @@ -1944,6 +1944,7 @@ static const struct spi_nor_manufacturer *manufacturers[] = {
>  	&spi_nor_eon,
>  	&spi_nor_esmt,
>  	&spi_nor_everspin,
> +	&spi_nor_fudan,
>  	&spi_nor_gigadevice,
>  	&spi_nor_intel,
>  	&spi_nor_issi,
> diff --git a/drivers/mtd/spi-nor/core.h b/drivers/mtd/spi-nor/core.h
> index 16b382d4f04f..be63273677c8 100644
> --- a/drivers/mtd/spi-nor/core.h
> +++ b/drivers/mtd/spi-nor/core.h
> @@ -594,6 +594,7 @@ extern const struct spi_nor_manufacturer spi_nor_atmel;
>  extern const struct spi_nor_manufacturer spi_nor_eon;
>  extern const struct spi_nor_manufacturer spi_nor_esmt;
>  extern const struct spi_nor_manufacturer spi_nor_everspin;
> +extern const struct spi_nor_manufacturer spi_nor_fudan;
>  extern const struct spi_nor_manufacturer spi_nor_gigadevice;
>  extern const struct spi_nor_manufacturer spi_nor_intel;
>  extern const struct spi_nor_manufacturer spi_nor_issi;
> diff --git a/drivers/mtd/spi-nor/fudan.c b/drivers/mtd/spi-nor/fudan.c
> new file mode 100644
> index 000000000000..e9a4d3ed3cd0
> --- /dev/null
> +++ b/drivers/mtd/spi-nor/fudan.c
> @@ -0,0 +1,25 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Fudan Microelectronics SPI NOR flash support.
> + *
> + * JEDEC manufacturer ID 0xf7.
> + */
> +
> +#include <linux/mtd/spi-nor.h>
> +
> +#include "core.h"
> +
> +static const struct flash_info fudan_nor_parts[] = {
> +	{
> +		.id = SNOR_ID(0xf7, 0xf0, 0x30),
> +		.name = "fm25q256",
> +		.size = SZ_32M,
> +		.no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ,
> +	},
> +};
> +
> +const struct spi_nor_manufacturer spi_nor_fudan = {
> +	.name = "fudan",
> +	.parts = fudan_nor_parts,
> +	.nparts = ARRAY_SIZE(fudan_nor_parts),
> +};
>
> base-commit: 2687c848e57820651b9f69d30c4710f4219f7dbf


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 297 bytes --]

[-- Attachment #2: Type: text/plain, Size: 144 bytes --]

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

      reply	other threads:[~2026-02-16  8:32 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-14  6:20 [PATCH] mtd: spi-nor: add support for Fudan Microelectronics FM25Q256 Cole Leavitt
2026-02-16  8:32 ` Michael Walle [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DGG8W2SIQXMZ.1ZQ6TN7S2LKTW@kernel.org \
    --to=mwalle@kernel.org \
    --cc=cole@unwrap.rs \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=miquel.raynal@bootlin.com \
    --cc=pratyush@kernel.org \
    --cc=richard@nod.at \
    --cc=tudor.ambarus@linaro.org \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox