From: "Cédric Le Goater" <clg@kaod.org>
To: Francisco Iglesias <frasse.iglesias@gmail.com>
Cc: <qemu-devel@nongnu.org>, <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>,
Iris Chen <irischenlj@fb.com>, Michael Walle <michael@walle.cc>
Subject: Re: [PATCH v3 2/8] m25p80: Add the n25q256a SFDP table
Date: Mon, 10 Oct 2022 08:15:45 +0200 [thread overview]
Message-ID: <19338ccf-31f2-7afa-022e-abb15553609f@kaod.org> (raw)
In-Reply-To: <20221007140337.GC20384@fralle-msi>
On 10/7/22 16:03, Francisco Iglesias wrote:
> On [2022 Jul 22] Fri 08:35:56, Cédric Le Goater wrote:
>> The same values were collected on 4 differents OpenPower systems,
>> palmettos, romulus and tacoma.
>>
>> The SFDP table size is defined as being 0x100 bytes but it could be
>> bigger. Only the mandatory table for basic features is available at
>> byte 0x30.
>>
>> Signed-off-by: Cédric Le Goater <clg@kaod.org>
>> ---
>> hw/block/m25p80_sfdp.h | 2 ++
>> hw/block/m25p80.c | 8 +++---
>> hw/block/m25p80_sfdp.c | 58 ++++++++++++++++++++++++++++++++++++++++++
>> hw/block/meson.build | 1 +
>> 4 files changed, 66 insertions(+), 3 deletions(-)
>> create mode 100644 hw/block/m25p80_sfdp.c
>>
>> diff --git a/hw/block/m25p80_sfdp.h b/hw/block/m25p80_sfdp.h
>> index 230b07ef3308..d3a0a778ae84 100644
>> --- a/hw/block/m25p80_sfdp.h
>> +++ b/hw/block/m25p80_sfdp.h
>> @@ -15,4 +15,6 @@
>> */
>> #define M25P80_SFDP_MAX_SIZE (1 << 24)
>>
>> +extern uint8_t m25p80_sfdp_n25q256a(uint32_t addr);
>
> (-extern above if we would like)
>
>
>> +
>> #endif
>> diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
>> index abdc4c0b0da7..13e7b28fd2b0 100644
>> --- a/hw/block/m25p80.c
>> +++ b/hw/block/m25p80.c
>> @@ -247,13 +247,15 @@ static const FlashPartInfo known_devices[] = {
>> { INFO("n25q128a11", 0x20bb18, 0, 64 << 10, 256, ER_4K) },
>> { INFO("n25q128a13", 0x20ba18, 0, 64 << 10, 256, ER_4K) },
>> { INFO("n25q256a11", 0x20bb19, 0, 64 << 10, 512, ER_4K) },
>> - { INFO("n25q256a13", 0x20ba19, 0, 64 << 10, 512, ER_4K) },
>> + { INFO("n25q256a13", 0x20ba19, 0, 64 << 10, 512, ER_4K),
>> + .sfdp_read = m25p80_sfdp_n25q256a },
>> { INFO("n25q512a11", 0x20bb20, 0, 64 << 10, 1024, ER_4K) },
>> { INFO("n25q512a13", 0x20ba20, 0, 64 << 10, 1024, ER_4K) },
>> { INFO("n25q128", 0x20ba18, 0, 64 << 10, 256, 0) },
>> { INFO("n25q256a", 0x20ba19, 0, 64 << 10, 512,
>> - ER_4K | HAS_SR_BP3_BIT6 | HAS_SR_TB) },
>> - { INFO("n25q512a", 0x20ba20, 0, 64 << 10, 1024, ER_4K) },
>> + ER_4K | HAS_SR_BP3_BIT6 | HAS_SR_TB),
>> + .sfdp_read = m25p80_sfdp_n25q256a },
>> + { INFO("n25q512a", 0x20ba20, 0, 64 << 10, 1024, ER_4K) },
>> { INFO("n25q512ax3", 0x20ba20, 0x1000, 64 << 10, 1024, ER_4K) },
>> { INFO("mt25ql512ab", 0x20ba20, 0x1044, 64 << 10, 1024, ER_4K | ER_32K) },
>> { INFO_STACKED("mt35xu01g", 0x2c5b1b, 0x104100, 128 << 10, 1024,
>> diff --git a/hw/block/m25p80_sfdp.c b/hw/block/m25p80_sfdp.c
>> new file mode 100644
>> index 000000000000..24ec05de79a1
>> --- /dev/null
>> +++ b/hw/block/m25p80_sfdp.c
>> @@ -0,0 +1,58 @@
>> +/*
>> + * M25P80 Serial Flash Discoverable Parameter (SFDP)
>> + *
>> + * Copyright (c) 2020, IBM Corporation.
>> + *
>> + * This code is licensed under the GPL version 2 or later. See the
>> + * COPYING file in the top-level directory.
>> + */
>> +
>> +#include "qemu/osdep.h"
>> +#include "qemu/host-utils.h"
>> +#include "m25p80_sfdp.h"
>> +
>> +#define define_sfdp_read(model) \
>> + uint8_t m25p80_sfdp_##model(uint32_t addr) \
>> + { \
>> + assert(is_power_of_2(sizeof(sfdp_##model))); \
>> + return sfdp_##model[addr & (sizeof(sfdp_##model) - 1)]; \
>> + }
>> +
>> +/*
>> + * Micron
>> + */
>> +static const uint8_t sfdp_n25q256a[] = {
>
> The datasheets I found wasn't completetly as this table but I can't argue
> with the hw read out of 4 flashes.
It is mentioned there :
http://datasheet.octopart.com/N25Q256A13E1241F-Micron-datasheet-11552757.pdf
C.
>
> Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>
>
>> + 0x53, 0x46, 0x44, 0x50, 0x00, 0x01, 0x00, 0xff,
>> + 0x00, 0x00, 0x01, 0x09, 0x30, 0x00, 0x00, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 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,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
>> +};
>> +define_sfdp_read(n25q256a);
>> diff --git a/hw/block/meson.build b/hw/block/meson.build
>> index 2389326112ae..3129ca4c52eb 100644
>> --- a/hw/block/meson.build
>> +++ b/hw/block/meson.build
>> @@ -12,6 +12,7 @@ softmmu_ss.add(when: 'CONFIG_ONENAND', if_true: files('onenand.c'))
>> softmmu_ss.add(when: 'CONFIG_PFLASH_CFI01', if_true: files('pflash_cfi01.c'))
>> softmmu_ss.add(when: 'CONFIG_PFLASH_CFI02', if_true: files('pflash_cfi02.c'))
>> softmmu_ss.add(when: 'CONFIG_SSI_M25P80', if_true: files('m25p80.c'))
>> +softmmu_ss.add(when: 'CONFIG_SSI_M25P80', if_true: files('m25p80_sfdp.c'))
>> softmmu_ss.add(when: 'CONFIG_SWIM', if_true: files('swim.c'))
>> softmmu_ss.add(when: 'CONFIG_XEN', if_true: files('xen-block.c'))
>> softmmu_ss.add(when: 'CONFIG_TC58128', if_true: files('tc58128.c'))
>> --
>> 2.35.3
>>
next prev parent reply other threads:[~2022-10-10 6:16 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-22 6:35 [PATCH v3 0/8] m25p80: Add SFDP support Cédric Le Goater
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 [this message]
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=19338ccf-31f2-7afa-022e-abb15553609f@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.