A mx25l25635f chip model is generally found on these machines. It's
newer and uses 4B opcodes which is better to exercise the support in
the Linux kernel.
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
hw/arm/aspeed.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 1c611284819d..7e95abc55b09 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -1157,7 +1157,7 @@ static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data)
amc->soc_name = "ast2400-a1";
amc->hw_strap1 = PALMETTO_BMC_HW_STRAP1;
amc->fmc_model = "n25q256a";
- amc->spi_model = "mx25l25635e";
+ amc->spi_model = "mx25l25635f";
amc->num_cs = 1;
amc->i2c_init = palmetto_bmc_i2c_init;
mc->default_ram_size = 256 * MiB;
@@ -1208,7 +1208,7 @@ static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data)
amc->soc_name = "ast2500-a1";
amc->hw_strap1 = AST2500_EVB_HW_STRAP1;
amc->fmc_model = "mx25l25635e";
- amc->spi_model = "mx25l25635e";
+ amc->spi_model = "mx25l25635f";
amc->num_cs = 1;
amc->i2c_init = ast2500_evb_i2c_init;
mc->default_ram_size = 512 * MiB;
@@ -1258,7 +1258,7 @@ static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data)
mc->desc = "OpenPOWER Witherspoon BMC (ARM1176)";
amc->soc_name = "ast2500-a1";
amc->hw_strap1 = WITHERSPOON_BMC_HW_STRAP1;
- amc->fmc_model = "mx25l25635e";
+ amc->fmc_model = "mx25l25635f";
amc->spi_model = "mx66l1g45g";
amc->num_cs = 2;
amc->i2c_init = witherspoon_bmc_i2c_init;
--
2.35.3
On [2022 Jul 22] Fri 08:36:02, Cédric Le Goater wrote: > A mx25l25635f chip model is generally found on these machines. It's > newer and uses 4B opcodes which is better to exercise the support in > the Linux kernel. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com> > --- > hw/arm/aspeed.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 1c611284819d..7e95abc55b09 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -1157,7 +1157,7 @@ static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data) > amc->soc_name = "ast2400-a1"; > amc->hw_strap1 = PALMETTO_BMC_HW_STRAP1; > amc->fmc_model = "n25q256a"; > - amc->spi_model = "mx25l25635e"; > + amc->spi_model = "mx25l25635f"; > amc->num_cs = 1; > amc->i2c_init = palmetto_bmc_i2c_init; > mc->default_ram_size = 256 * MiB; > @@ -1208,7 +1208,7 @@ static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data) > amc->soc_name = "ast2500-a1"; > amc->hw_strap1 = AST2500_EVB_HW_STRAP1; > amc->fmc_model = "mx25l25635e"; > - amc->spi_model = "mx25l25635e"; > + amc->spi_model = "mx25l25635f"; > amc->num_cs = 1; > amc->i2c_init = ast2500_evb_i2c_init; > mc->default_ram_size = 512 * MiB; > @@ -1258,7 +1258,7 @@ static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data) > mc->desc = "OpenPOWER Witherspoon BMC (ARM1176)"; > amc->soc_name = "ast2500-a1"; > amc->hw_strap1 = WITHERSPOON_BMC_HW_STRAP1; > - amc->fmc_model = "mx25l25635e"; > + amc->fmc_model = "mx25l25635f"; > amc->spi_model = "mx66l1g45g"; > amc->num_cs = 2; > amc->i2c_init = witherspoon_bmc_i2c_init; > -- > 2.35.3 >
On Fri, 22 Jul 2022, at 16:06, Cédric Le Goater wrote: > A mx25l25635f chip model is generally found on these machines. It's > newer and uses 4B opcodes which is better to exercise the support in > the Linux kernel. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> > --- > hw/arm/aspeed.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c > index 1c611284819d..7e95abc55b09 100644 > --- a/hw/arm/aspeed.c > +++ b/hw/arm/aspeed.c > @@ -1157,7 +1157,7 @@ static void > aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data) > amc->soc_name = "ast2400-a1"; > amc->hw_strap1 = PALMETTO_BMC_HW_STRAP1; > amc->fmc_model = "n25q256a"; > - amc->spi_model = "mx25l25635e"; > + amc->spi_model = "mx25l25635f"; Hmm, dmesg reported mx25l25635e on the palmetto I checked > amc->num_cs = 1; > amc->i2c_init = palmetto_bmc_i2c_init; > mc->default_ram_size = 256 * MiB; > @@ -1208,7 +1208,7 @@ static void > aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data) > amc->soc_name = "ast2500-a1"; > amc->hw_strap1 = AST2500_EVB_HW_STRAP1; > amc->fmc_model = "mx25l25635e"; > - amc->spi_model = "mx25l25635e"; > + amc->spi_model = "mx25l25635f"; > amc->num_cs = 1; > amc->i2c_init = ast2500_evb_i2c_init; > mc->default_ram_size = 512 * MiB; > @@ -1258,7 +1258,7 @@ static void > aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data) > mc->desc = "OpenPOWER Witherspoon BMC (ARM1176)"; > amc->soc_name = "ast2500-a1"; > amc->hw_strap1 = WITHERSPOON_BMC_HW_STRAP1; > - amc->fmc_model = "mx25l25635e"; > + amc->fmc_model = "mx25l25635f"; The witherspoon I checked also reported mx25l25635e in dmesg for the FMC. You do say "generally" in the commit message though. Andrew
On 7/25/22 04:08, Andrew Jeffery wrote: > > > On Fri, 22 Jul 2022, at 16:06, Cédric Le Goater wrote: >> A mx25l25635f chip model is generally found on these machines. It's >> newer and uses 4B opcodes which is better to exercise the support in >> the Linux kernel. >> >> Signed-off-by: Cédric Le Goater <clg@kaod.org> >> --- >> hw/arm/aspeed.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c >> index 1c611284819d..7e95abc55b09 100644 >> --- a/hw/arm/aspeed.c >> +++ b/hw/arm/aspeed.c >> @@ -1157,7 +1157,7 @@ static void >> aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data) >> amc->soc_name = "ast2400-a1"; >> amc->hw_strap1 = PALMETTO_BMC_HW_STRAP1; >> amc->fmc_model = "n25q256a"; >> - amc->spi_model = "mx25l25635e"; >> + amc->spi_model = "mx25l25635f"; > > Hmm, dmesg reported mx25l25635e on the palmetto I checked > >> amc->num_cs = 1; >> amc->i2c_init = palmetto_bmc_i2c_init; >> mc->default_ram_size = 256 * MiB; >> @@ -1208,7 +1208,7 @@ static void >> aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data) >> amc->soc_name = "ast2500-a1"; >> amc->hw_strap1 = AST2500_EVB_HW_STRAP1; >> amc->fmc_model = "mx25l25635e"; >> - amc->spi_model = "mx25l25635e"; >> + amc->spi_model = "mx25l25635f"; >> amc->num_cs = 1; >> amc->i2c_init = ast2500_evb_i2c_init; >> mc->default_ram_size = 512 * MiB; >> @@ -1258,7 +1258,7 @@ static void >> aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data) >> mc->desc = "OpenPOWER Witherspoon BMC (ARM1176)"; >> amc->soc_name = "ast2500-a1"; >> amc->hw_strap1 = WITHERSPOON_BMC_HW_STRAP1; >> - amc->fmc_model = "mx25l25635e"; >> + amc->fmc_model = "mx25l25635f"; > > The witherspoon I checked also reported mx25l25635e in dmesg for the > FMC. > > You do say "generally" in the commit message though. You can not tell from dmesg. The MX25L25635F and MX25L25635E models share the same JEDEC ID and the spi-nor flash device table only contains a mx25l25635e entry. The MX25L25635F is detected in mx25l25635_post_bfpt_fixups using SFDP. That's why I added this warning : https://github.com/legoater/linux/commit/934f0708ac597022cbf6c8d6f2ce91d55025e943 C. > > Andrew
On Mon, 25 Jul 2022, at 16:02, Cédric Le Goater wrote: > On 7/25/22 04:08, Andrew Jeffery wrote: >> >> >> On Fri, 22 Jul 2022, at 16:06, Cédric Le Goater wrote: >>> aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data) >>> mc->desc = "OpenPOWER Witherspoon BMC (ARM1176)"; >>> amc->soc_name = "ast2500-a1"; >>> amc->hw_strap1 = WITHERSPOON_BMC_HW_STRAP1; >>> - amc->fmc_model = "mx25l25635e"; >>> + amc->fmc_model = "mx25l25635f"; >> >> The witherspoon I checked also reported mx25l25635e in dmesg for the >> FMC. >> >> You do say "generally" in the commit message though. > > You can not tell from dmesg. > > The MX25L25635F and MX25L25635E models share the same JEDEC ID and > the spi-nor flash device table only contains a mx25l25635e entry. > The MX25L25635F is detected in mx25l25635_post_bfpt_fixups using SFDP. > > That's why I added this warning : > > > https://github.com/legoater/linux/commit/934f0708ac597022cbf6c8d6f2ce91d55025e943 > Oh righto, sorry for the noise.
Generated from hardware using the following command and then padding
with 0xff to fill out a power-of-2:
hexdump -v -e '8/1 "0x%02x, " "\n"' sfdp`
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
---
hw/block/m25p80.c | 3 ++-
hw/block/m25p80_sfdp.c | 36 ++++++++++++++++++++++++++++++++++++
hw/block/m25p80_sfdp.h | 2 ++
3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
index 8ba9d732a3..86343160ef 100644
--- a/hw/block/m25p80.c
+++ b/hw/block/m25p80.c
@@ -349,7 +349,8 @@ static const FlashPartInfo known_devices[] = {
.sfdp_read = m25p80_sfdp_w25q256 },
{ INFO("w25q512jv", 0xef4020, 0, 64 << 10, 1024, ER_4K),
.sfdp_read = m25p80_sfdp_w25q512jv },
- { INFO("w25q01jvq", 0xef4021, 0, 64 << 10, 2048, ER_4K) },
+ { INFO("w25q01jvq", 0xef4021, 0, 64 << 10, 2048, ER_4K),
+ .sfdp_read = m25p80_sfdp_w25q01jvq },
};
typedef enum {
diff --git a/hw/block/m25p80_sfdp.c b/hw/block/m25p80_sfdp.c
index dad3d7e64f..77615fa29e 100644
--- a/hw/block/m25p80_sfdp.c
+++ b/hw/block/m25p80_sfdp.c
@@ -294,3 +294,39 @@ static const uint8_t sfdp_w25q512jv[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
};
define_sfdp_read(w25q512jv);
+
+static const uint8_t sfdp_w25q01jvq[] = {
+ 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff,
+ 0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff,
+ 0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff,
+ 0x03, 0x00, 0x01, 0x02, 0xf0, 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,
+ 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f,
+ 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb,
+ 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
+ 0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
+ 0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00,
+ 0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33,
+ 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c,
+ 0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 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(w25q01jvq);
diff --git a/hw/block/m25p80_sfdp.h b/hw/block/m25p80_sfdp.h
index 62f140a2fc..8fb1cd3f8a 100644
--- a/hw/block/m25p80_sfdp.h
+++ b/hw/block/m25p80_sfdp.h
@@ -24,4 +24,6 @@ extern uint8_t m25p80_sfdp_mx66l1g45g(uint32_t addr);
extern uint8_t m25p80_sfdp_w25q256(uint32_t addr);
extern uint8_t m25p80_sfdp_w25q512jv(uint32_t addr);
+extern uint8_t m25p80_sfdp_w25q01jvq(uint32_t addr);
+
#endif
--
2.35.1
On [2022 Oct 06] Thu 17:44:24, Patrick Williams wrote:
> Generated from hardware using the following command and then padding
> with 0xff to fill out a power-of-2:
> hexdump -v -e '8/1 "0x%02x, " "\n"' sfdp`
>
> Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
> ---
> hw/block/m25p80.c | 3 ++-
> hw/block/m25p80_sfdp.c | 36 ++++++++++++++++++++++++++++++++++++
> hw/block/m25p80_sfdp.h | 2 ++
> 3 files changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
> index 8ba9d732a3..86343160ef 100644
> --- a/hw/block/m25p80.c
> +++ b/hw/block/m25p80.c
> @@ -349,7 +349,8 @@ static const FlashPartInfo known_devices[] = {
> .sfdp_read = m25p80_sfdp_w25q256 },
> { INFO("w25q512jv", 0xef4020, 0, 64 << 10, 1024, ER_4K),
> .sfdp_read = m25p80_sfdp_w25q512jv },
> - { INFO("w25q01jvq", 0xef4021, 0, 64 << 10, 2048, ER_4K) },
> + { INFO("w25q01jvq", 0xef4021, 0, 64 << 10, 2048, ER_4K),
> + .sfdp_read = m25p80_sfdp_w25q01jvq },
> };
>
> typedef enum {
> diff --git a/hw/block/m25p80_sfdp.c b/hw/block/m25p80_sfdp.c
> index dad3d7e64f..77615fa29e 100644
> --- a/hw/block/m25p80_sfdp.c
> +++ b/hw/block/m25p80_sfdp.c
> @@ -294,3 +294,39 @@ static const uint8_t sfdp_w25q512jv[] = {
> 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
> };
> define_sfdp_read(w25q512jv);
> +
> +static const uint8_t sfdp_w25q01jvq[] = {
> + 0x53, 0x46, 0x44, 0x50, 0x06, 0x01, 0x01, 0xff,
> + 0x00, 0x06, 0x01, 0x10, 0x80, 0x00, 0x00, 0xff,
> + 0x84, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x00, 0xff,
> + 0x03, 0x00, 0x01, 0x02, 0xf0, 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,
> + 0xe5, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0x3f,
> + 0x44, 0xeb, 0x08, 0x6b, 0x08, 0x3b, 0x42, 0xbb,
> + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
> + 0xff, 0xff, 0x40, 0xeb, 0x0c, 0x20, 0x0f, 0x52,
> + 0x10, 0xd8, 0x00, 0x00, 0x36, 0x02, 0xa6, 0x00,
> + 0x82, 0xea, 0x14, 0xe2, 0xe9, 0x63, 0x76, 0x33,
> + 0x7a, 0x75, 0x7a, 0x75, 0xf7, 0xa2, 0xd5, 0x5c,
> + 0x19, 0xf7, 0x4d, 0xff, 0xe9, 0x70, 0xf9, 0xa5,
> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
> + 0xff, 0x0a, 0xf0, 0xff, 0x21, 0xff, 0xdc, 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(w25q01jvq);
> diff --git a/hw/block/m25p80_sfdp.h b/hw/block/m25p80_sfdp.h
> index 62f140a2fc..8fb1cd3f8a 100644
> --- a/hw/block/m25p80_sfdp.h
> +++ b/hw/block/m25p80_sfdp.h
> @@ -24,4 +24,6 @@ extern uint8_t m25p80_sfdp_mx66l1g45g(uint32_t addr);
> extern uint8_t m25p80_sfdp_w25q256(uint32_t addr);
> extern uint8_t m25p80_sfdp_w25q512jv(uint32_t addr);
>
> +extern uint8_t m25p80_sfdp_w25q01jvq(uint32_t addr);
(optional -extern)
Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>
> +
> #endif
> --
> 2.35.1
>
© 2016 - 2026 Red Hat, Inc.