From: "Cédric Le Goater" <clg@kaod.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, qemu-block@nongnu.org,
"Peter Maydell" <peter.maydell@linaro.org>,
"Joel Stanley" <joel@jms.id.au>,
"Andrew Jeffery" <andrew@aj.id.au>,
"Alistair Francis" <alistair@alistair23.me>,
"Francisco Iglesias" <frasse.iglesias@gmail.com>,
"Iris Chen" <irischenlj@fb.com>,
"Michael Walle" <michael@walle.cc>,
"Cédric Le Goater" <clg@kaod.org>
Subject: [PATCH v3 0/8] m25p80: Add SFDP support
Date: Fri, 22 Jul 2022 08:35:54 +0200 [thread overview]
Message-ID: <20220722063602.128144-1-clg@kaod.org> (raw)
Hello,
This is a refresh of a patchset sent long ago [1] adding support for
JEDEC STANDARD JESD216 Serial Flash Discovery Parameters (SFDP). SFDP
describes the features of a serial flash device using a set of internal
parameter tables. Support in Linux has been added some time ago and
the spi-nor driver is using it more often to detect the flash settings
and even flash models.
Francisco and I are not entirely satisfied with the way the tables are
defined. We add some private discussion on how to resolve that but
neither of us had the time to pursue the study. Latest Francisco
proposal was :
#define define_sfdp_read_wrap(model, wrap_sz) \
uint8_t m25p80_sdfp_read_##model(SFDPTable t, uint32_t addr) \
{ \
return m25p80_sdfp_read(t, addr & (wrap_sz-1)); \
}
...
define_sfdp_read_wrap(mt25ql512ab, SZ_256)
A new variable in the section would solve it aswell but not convinced at the
moment if it is clear enough:
typedef struct SFDPSection {
const uint32_t addr;
const uint32_t size;
const uint32_t wrap_sz;
const uint8_t *data;
} SFDPSection;
#define SFDP_RAW(start_addr, vals...) \
{ \
.addr = start_addr, \
.size = sizeof((uint8_t[]){vals}), \
.data = (const uint8_t[]){vals} \
}
#define SFDP_RAW_WRAP(start_addr, _wrap_sz, vals...) \
{ \
.addr = start_addr, \
.size = sizeof((uint8_t[]){vals}), \
.wrap_sz = _wrap_sz, \
.data = (const uint8_t[]){vals} \
}
#define SFDP_TABLE_END() { 0 }
#define IS_SFDP_END(x) (x.size == 0)
#define M35T4545_WRAP_SZ 0x100
static const SFDPTable m35t4545 = {
SFDP_RAW_WRAP(0, M35T4545_WRAP_SZ,
0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff,
0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff),
SFDP_RAW(0x38,
0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x0f,
0x29, 0xeb, 0x27, 0x6b, 0x08, 0x3b, 0x27, 0xbb,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x27, 0xbb,
0xff, 0xff, 0x29, 0xeb, 0x0c, 0x20, 0x10, 0xd8,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff),
SFDP_TABLE_END()
};
uint8_t m25p80_sfdp_read(SFDPTable t, uint32_t addr)
{
if (t[0].wrap_sz) {
addr &= (t.wrap_sz-1);
}
for (int i = 0; !IS_SFDP_END(t[i]); i++) {
if (addr >= t[i].addr && addr < (t[i].addr + t[i].size)) {
return t[i].data[addr];
}
}
return 0xFF;
}
Since there is a need, we have been using these patches in OpenBMC for
some time now and other projects/companies have requested it, I am
resending the patchset as it is to restart the discussion.
Thanks,
C.
Cédric Le Goater (8):
m25p80: Add basic support for the SFDP command
m25p80: Add the n25q256a SFDP table
m25p80: Add the mx25l25635e SFPD table
m25p80: Add the mx25l25635f SFPD table
m25p80: Add the mx66l1g45g SFDP table
m25p80: Add the w25q256 SFPD table
m25p80: Add the w25q512jv SFPD table
arm/aspeed: Replace mx25l25635e chip model
hw/block/m25p80_sfdp.h | 27 ++++
hw/arm/aspeed.c | 6 +-
hw/block/m25p80.c | 49 ++++++-
hw/block/m25p80_sfdp.c | 296 +++++++++++++++++++++++++++++++++++++++++
MAINTAINERS | 2 +-
hw/block/meson.build | 1 +
hw/block/trace-events | 1 +
7 files changed, 371 insertions(+), 11 deletions(-)
create mode 100644 hw/block/m25p80_sfdp.h
create mode 100644 hw/block/m25p80_sfdp.c
--
2.35.3
next reply other threads:[~2022-07-22 6:42 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-22 6:35 Cédric Le Goater [this message]
2022-07-22 6:35 ` [PATCH v3 1/8] m25p80: Add basic support for the SFDP command Cédric Le Goater
2022-07-22 10:02 ` Francisco Iglesias
2022-07-22 6:35 ` [PATCH v3 2/8] m25p80: Add the n25q256a SFDP table Cédric Le Goater
2022-10-07 14:03 ` Francisco Iglesias
2022-10-10 6:15 ` Cédric Le Goater
2022-07-22 6:35 ` [PATCH v3 3/8] m25p80: Add the mx25l25635e SFPD table Cédric Le Goater
2022-10-07 13:59 ` Francisco Iglesias
2022-10-10 6:09 ` Cédric Le Goater
2022-07-22 6:35 ` [PATCH v3 4/8] m25p80: Add the mx25l25635f " Cédric Le Goater
2022-10-07 14:44 ` Francisco Iglesias
2022-10-10 6:23 ` Cédric Le Goater
2022-10-10 9:58 ` Michael Walle
2022-10-10 10:51 ` Francisco Iglesias
2022-10-10 15:11 ` Cédric Le Goater
2022-10-10 15:00 ` Cédric Le Goater
2022-07-22 6:35 ` [PATCH v3 5/8] m25p80: Add the mx66l1g45g SFDP table Cédric Le Goater
2022-10-07 14:59 ` Francisco Iglesias
2022-07-22 6:36 ` [PATCH v3 6/8] m25p80: Add the w25q256 SFPD table Cédric Le Goater
2022-10-07 15:13 ` Francisco Iglesias
2022-07-22 6:36 ` [PATCH v3 7/8] m25p80: Add the w25q512jv " Cédric Le Goater
2022-10-07 15:14 ` Francisco Iglesias
2022-07-22 6:36 ` [PATCH v3 8/8] arm/aspeed: Replace mx25l25635e chip model Cédric Le Goater
2022-07-25 2:08 ` Andrew Jeffery
2022-07-25 6:32 ` Cédric Le Goater
2022-07-25 6:34 ` Andrew Jeffery
2022-10-06 22:44 ` [PATCH] m25p80: Add the w25q01jvq SFPD table Patrick Williams
2022-10-07 15:24 ` Francisco Iglesias
2022-10-07 14:04 ` [PATCH v3 8/8] arm/aspeed: Replace mx25l25635e chip model Francisco Iglesias
2022-07-22 7:05 ` [PATCH v3 0/8] m25p80: Add SFDP support Cédric Le Goater
2022-07-22 8:06 ` Ben Dooks
2022-07-22 8:14 ` Cédric Le Goater
2022-10-06 22:49 ` Patrick Williams
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=20220722063602.128144-1-clg@kaod.org \
--to=clg@kaod.org \
--cc=alistair@alistair23.me \
--cc=andrew@aj.id.au \
--cc=frasse.iglesias@gmail.com \
--cc=irischenlj@fb.com \
--cc=joel@jms.id.au \
--cc=michael@walle.cc \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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;
as well as URLs for NNTP newsgroup(s).