Message ID | 20200827091130.3525790-3-clg@kaod.org |
---|---|
State | New |
Headers | show |
Series | m25p80: Add SFDP support | expand |
Hi Cedric, We need to rebase the patch and modify for meson build (I wasn't able to apply it). Best regards, Francisco On [2020 Aug 27] Thu 11:11:30, Cédric Le Goater wrote: > The same values were collected on 4 differents OpenPower systems, > palmettos, romulus and tacoma. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> > --- > hw/block/m25p80_sfdp.h | 2 ++ > hw/block/m25p80.c | 6 ++++-- > hw/block/m25p80_sfdp.c | 49 ++++++++++++++++++++++++++++++++++++++++++ > hw/block/Makefile.objs | 2 +- > 4 files changed, 56 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 b75fd0b0c13f..ca2658a676e0 100644 > --- a/hw/block/m25p80_sfdp.h > +++ b/hw/block/m25p80_sfdp.h > @@ -12,4 +12,6 @@ > > #define M25P80_SFDP_AREA_SIZE 0x100 > > +extern const uint8_t m25p80_sfdp_n25q256a[M25P80_SFDP_AREA_SIZE]; > + > #endif > diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c > index 32925589ec7a..d053bdbb2805 100644 > --- a/hw/block/m25p80.c > +++ b/hw/block/m25p80.c > @@ -233,11 +233,13 @@ 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 = 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) }, > + { INFO("n25q256a", 0x20ba19, 0, 64 << 10, 512, ER_4K), > + .sfdp = m25p80_sfdp_n25q256a }, > { INFO("n25q512a", 0x20ba20, 0, 64 << 10, 1024, ER_4K) }, > { INFO_STACKED("n25q00", 0x20ba21, 0x1000, 64 << 10, 2048, ER_4K, 4) }, > { INFO_STACKED("n25q00a", 0x20bb21, 0x1000, 64 << 10, 2048, ER_4K, 4) }, > diff --git a/hw/block/m25p80_sfdp.c b/hw/block/m25p80_sfdp.c > new file mode 100644 > index 000000000000..def94bd4ea02 > --- /dev/null > +++ b/hw/block/m25p80_sfdp.c > @@ -0,0 +1,49 @@ > +/* > + * 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 "m25p80_sfdp.h" > + > +/* > + * Micron > + */ > +const uint8_t m25p80_sfdp_n25q256a[M25P80_SFDP_AREA_SIZE] = { > + 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, > +}; > diff --git a/hw/block/Makefile.objs b/hw/block/Makefile.objs > index 8855c2265639..b65a12c52b52 100644 > --- a/hw/block/Makefile.objs > +++ b/hw/block/Makefile.objs > @@ -1,6 +1,6 @@ > common-obj-y += block.o cdrom.o hd-geometry.o > common-obj-$(CONFIG_FDC) += fdc.o > -common-obj-$(CONFIG_SSI_M25P80) += m25p80.o > +common-obj-$(CONFIG_SSI_M25P80) += m25p80.o m25p80_sfdp.o > common-obj-$(CONFIG_NAND) += nand.o > common-obj-$(CONFIG_PFLASH_CFI01) += pflash_cfi01.o > common-obj-$(CONFIG_PFLASH_CFI02) += pflash_cfi02.o > -- > 2.25.4 >
On 9/1/20 3:38 PM, Francisco Iglesias wrote: > Hi Cedric, > > We need to rebase the patch and modify for meson build (I wasn't able to apply > it). Yes. You will find the patches and more support on my aspeed branch : https://github.com/legoater/qemu/tree/aspeed-5.2 23c93a8f69c8 m25p80: Add the w25q512jv SFPD table 51c73585a3a0 m25p80: Add the w25q256 SFPD table c1d31a41dd38 m25p80: Add the mx66l1g45g SFDP table 4c66b8670fe2 m25p80: Add the mx25l25635f SFPD table 070620851124 m25p80: Add the mx25l25635e SFPD table a51a58218157 m25p80: Add the n25q256a SFDP table bd6574bba30a m25p80: Add basic support for the SFDP command Thanks, C. > Best regards, > Francisco > > On [2020 Aug 27] Thu 11:11:30, Cédric Le Goater wrote: >> The same values were collected on 4 differents OpenPower systems, >> palmettos, romulus and tacoma. >> >> Signed-off-by: Cédric Le Goater <clg@kaod.org> >> --- >> hw/block/m25p80_sfdp.h | 2 ++ >> hw/block/m25p80.c | 6 ++++-- >> hw/block/m25p80_sfdp.c | 49 ++++++++++++++++++++++++++++++++++++++++++ >> hw/block/Makefile.objs | 2 +- >> 4 files changed, 56 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 b75fd0b0c13f..ca2658a676e0 100644 >> --- a/hw/block/m25p80_sfdp.h >> +++ b/hw/block/m25p80_sfdp.h >> @@ -12,4 +12,6 @@ >> >> #define M25P80_SFDP_AREA_SIZE 0x100 >> >> +extern const uint8_t m25p80_sfdp_n25q256a[M25P80_SFDP_AREA_SIZE]; >> + >> #endif >> diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c >> index 32925589ec7a..d053bdbb2805 100644 >> --- a/hw/block/m25p80.c >> +++ b/hw/block/m25p80.c >> @@ -233,11 +233,13 @@ 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 = 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) }, >> + { INFO("n25q256a", 0x20ba19, 0, 64 << 10, 512, ER_4K), >> + .sfdp = m25p80_sfdp_n25q256a }, >> { INFO("n25q512a", 0x20ba20, 0, 64 << 10, 1024, ER_4K) }, >> { INFO_STACKED("n25q00", 0x20ba21, 0x1000, 64 << 10, 2048, ER_4K, 4) }, >> { INFO_STACKED("n25q00a", 0x20bb21, 0x1000, 64 << 10, 2048, ER_4K, 4) }, >> diff --git a/hw/block/m25p80_sfdp.c b/hw/block/m25p80_sfdp.c >> new file mode 100644 >> index 000000000000..def94bd4ea02 >> --- /dev/null >> +++ b/hw/block/m25p80_sfdp.c >> @@ -0,0 +1,49 @@ >> +/* >> + * 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 "m25p80_sfdp.h" >> + >> +/* >> + * Micron >> + */ >> +const uint8_t m25p80_sfdp_n25q256a[M25P80_SFDP_AREA_SIZE] = { >> + 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, >> +}; >> diff --git a/hw/block/Makefile.objs b/hw/block/Makefile.objs >> index 8855c2265639..b65a12c52b52 100644 >> --- a/hw/block/Makefile.objs >> +++ b/hw/block/Makefile.objs >> @@ -1,6 +1,6 @@ >> common-obj-y += block.o cdrom.o hd-geometry.o >> common-obj-$(CONFIG_FDC) += fdc.o >> -common-obj-$(CONFIG_SSI_M25P80) += m25p80.o >> +common-obj-$(CONFIG_SSI_M25P80) += m25p80.o m25p80_sfdp.o >> common-obj-$(CONFIG_NAND) += nand.o >> common-obj-$(CONFIG_PFLASH_CFI01) += pflash_cfi01.o >> common-obj-$(CONFIG_PFLASH_CFI02) += pflash_cfi02.o >> -- >> 2.25.4 >>
diff --git a/hw/block/m25p80_sfdp.h b/hw/block/m25p80_sfdp.h index b75fd0b0c13f..ca2658a676e0 100644 --- a/hw/block/m25p80_sfdp.h +++ b/hw/block/m25p80_sfdp.h @@ -12,4 +12,6 @@ #define M25P80_SFDP_AREA_SIZE 0x100 +extern const uint8_t m25p80_sfdp_n25q256a[M25P80_SFDP_AREA_SIZE]; + #endif diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index 32925589ec7a..d053bdbb2805 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -233,11 +233,13 @@ 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 = 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) }, + { INFO("n25q256a", 0x20ba19, 0, 64 << 10, 512, ER_4K), + .sfdp = m25p80_sfdp_n25q256a }, { INFO("n25q512a", 0x20ba20, 0, 64 << 10, 1024, ER_4K) }, { INFO_STACKED("n25q00", 0x20ba21, 0x1000, 64 << 10, 2048, ER_4K, 4) }, { INFO_STACKED("n25q00a", 0x20bb21, 0x1000, 64 << 10, 2048, ER_4K, 4) }, diff --git a/hw/block/m25p80_sfdp.c b/hw/block/m25p80_sfdp.c new file mode 100644 index 000000000000..def94bd4ea02 --- /dev/null +++ b/hw/block/m25p80_sfdp.c @@ -0,0 +1,49 @@ +/* + * 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 "m25p80_sfdp.h" + +/* + * Micron + */ +const uint8_t m25p80_sfdp_n25q256a[M25P80_SFDP_AREA_SIZE] = { + 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, +}; diff --git a/hw/block/Makefile.objs b/hw/block/Makefile.objs index 8855c2265639..b65a12c52b52 100644 --- a/hw/block/Makefile.objs +++ b/hw/block/Makefile.objs @@ -1,6 +1,6 @@ common-obj-y += block.o cdrom.o hd-geometry.o common-obj-$(CONFIG_FDC) += fdc.o -common-obj-$(CONFIG_SSI_M25P80) += m25p80.o +common-obj-$(CONFIG_SSI_M25P80) += m25p80.o m25p80_sfdp.o common-obj-$(CONFIG_NAND) += nand.o common-obj-$(CONFIG_PFLASH_CFI01) += pflash_cfi01.o common-obj-$(CONFIG_PFLASH_CFI02) += pflash_cfi02.o
The same values were collected on 4 differents OpenPower systems, palmettos, romulus and tacoma. Signed-off-by: Cédric Le Goater <clg@kaod.org> --- hw/block/m25p80_sfdp.h | 2 ++ hw/block/m25p80.c | 6 ++++-- hw/block/m25p80_sfdp.c | 49 ++++++++++++++++++++++++++++++++++++++++++ hw/block/Makefile.objs | 2 +- 4 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 hw/block/m25p80_sfdp.c