From: Jamin Lin via <qemu-devel@nongnu.org>
To: "Cédric Le Goater" <clg@kaod.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Steven Lee" <steven_lee@aspeedtech.com>,
"Troy Lee" <leetroy@gmail.com>,
"Andrew Jeffery" <andrew@codeconstruct.com.au>,
"Joel Stanley" <joel@jms.id.au>,
"Alistair Francis" <alistair@alistair23.me>,
"Kevin Wolf" <kwolf@redhat.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Laurent Vivier" <lvivier@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"open list:ASPEED BMCs" <qemu-arm@nongnu.org>,
"open list:All patches CC here" <qemu-devel@nongnu.org>,
"open list:Block layer core" <qemu-block@nongnu.org>
Cc: <jamin_lin@aspeedtech.com>, <troy_lee@aspeedtech.com>,
<yunlin.tang@aspeedtech.com>
Subject: [PATCH v1 03/16] hw/block:m25p80: Support write status register 2 command (0x31) for w25q01jvq
Date: Fri, 18 Oct 2024 13:30:59 +0800 [thread overview]
Message-ID: <20241018053112.1886173-4-jamin_lin@aspeedtech.com> (raw)
In-Reply-To: <20241018053112.1886173-1-jamin_lin@aspeedtech.com>
According to the w25q01jv datasheet at page 16, it is required to set QE bit
in "Status Register 2" to enable quad mode.
Currently, m25p80 support users utilize "Write Status Register 1(0x01)" command
to set QE bit in "Status Register 2" and utilize "Read Status Register 2(0x35)"
command to get the QE bit status.
However, some firmware directly utilize "Status Register 2(0x31)" command to
set QE bit. To fully support quad mode for w25q01jvq, adds WRSR2 command.
Update collecting data needed 1 byte for WRSR2 command in decode_new_cmd
function and verify QE bit at the first byte of collecting data bit 2 in
complete_collecting_data.
Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
hw/block/m25p80.c | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c
index 3f55b8f385..411d810d3b 100644
--- a/hw/block/m25p80.c
+++ b/hw/block/m25p80.c
@@ -430,6 +430,11 @@ typedef enum {
RDCR_EQIO = 0x35,
RSTQIO = 0xf5,
+ /*
+ * Winbond: 0x31 - write status register 2
+ */
+ WRSR2 = 0x31,
+
RNVCR = 0xB5,
WNVCR = 0xB1,
@@ -821,6 +826,15 @@ static void complete_collecting_data(Flash *s)
s->write_enable = false;
}
break;
+ case WRSR2:
+ switch (get_man(s)) {
+ case MAN_WINBOND:
+ s->quad_enable = !!(s->data[0] & 0x02);
+ break;
+ default:
+ break;
+ }
+ break;
case BRWR:
case EXTEND_ADDR_WRITE:
s->ear = s->data[0];
@@ -1280,7 +1294,31 @@ static void decode_new_cmd(Flash *s, uint32_t value)
}
s->pos = 0;
break;
+ case WRSR2:
+ /*
+ * If WP# is low and status_register_write_disabled is high,
+ * status register writes are disabled.
+ * This is also called "hardware protected mode" (HPM). All other
+ * combinations of the two states are called "software protected mode"
+ * (SPM), and status register writes are permitted.
+ */
+ if ((s->wp_level == 0 && s->status_register_write_disabled)
+ || !s->write_enable) {
+ qemu_log_mask(LOG_GUEST_ERROR,
+ "M25P80: Status register 2 write is disabled!\n");
+ break;
+ }
+ switch (get_man(s)) {
+ case MAN_WINBOND:
+ s->needed_bytes = 1;
+ s->state = STATE_COLLECTING_DATA;
+ s->pos = 0;
+ break;
+ default:
+ break;
+ }
+ break;
case WRDI:
s->write_enable = false;
if (get_man(s) == MAN_SST) {
--
2.34.1
next prev parent reply other threads:[~2024-10-18 5:34 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-18 5:30 [PATCH v1 00/16] Fix write incorrect data into flash in user mode Jamin Lin via
2024-10-18 5:30 ` [PATCH v1 01/16] aspeed/smc: " Jamin Lin via
2024-10-22 5:51 ` [SPAM] " Cédric Le Goater
2024-10-22 9:29 ` Jamin Lin
2024-10-18 5:30 ` [PATCH v1 02/16] hw/block:m25p80: Fix coding style Jamin Lin via
2024-10-18 13:31 ` [SPAM] " Cédric Le Goater
2024-10-18 5:30 ` Jamin Lin via [this message]
2024-10-21 8:53 ` [SPAM] [PATCH v1 03/16] hw/block:m25p80: Support write status register 2 command (0x31) for w25q01jvq Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 04/16] hw/block/m25p80: Add SFDP table for w25q80bl flash Jamin Lin via
2024-10-21 9:05 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 05/16] hw/arm/aspeed: Correct spi_model w25q256 for ast1030-a1 EVB Jamin Lin via
2024-10-21 9:06 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 06/16] hw/arm/aspeed: Correct fmc_model w25q80bl " Jamin Lin via
2024-10-21 9:07 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 07/16] test/qtest/aspeed_smc-test: Fix coding style Jamin Lin via
2024-10-18 8:25 ` Thomas Huth
2024-10-21 12:02 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 08/16] test/qtest/aspeed_smc-test: Move testcases to test_palmetto_bmc function Jamin Lin via
2024-10-21 12:02 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 09/16] test/qtest/aspeed_smc-test: Introduce a new TestData to test different BMC SOCs Jamin Lin via
2024-10-21 12:13 ` [SPAM] " Cédric Le Goater
2024-10-22 1:38 ` Jamin Lin
2024-10-22 5:54 ` Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 10/16] test/qtest/aspeed_smc-test: Support to test all CE pins Jamin Lin via
2024-10-21 12:33 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 11/16] test/qtest/aspeed_smc-test: Support to test all flash models Jamin Lin via
2024-10-21 12:39 ` [SPAM] " Cédric Le Goater
2024-10-21 23:34 ` Andrew Jeffery
2024-10-22 1:45 ` Jamin Lin
2024-10-22 1:40 ` Jamin Lin
2024-10-18 5:31 ` [PATCH v1 12/16] test/qtest/aspeed_smc-test: Support to test AST2500 Jamin Lin via
2024-10-21 12:47 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 13/16] test/qtest/aspeed_smc-test: Support to test AST2600 Jamin Lin via
2024-10-21 12:47 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 14/16] test/qtest/aspeed_smc-test: Support to test AST1030 Jamin Lin via
2024-10-21 12:47 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 15/16] test/qtest/aspeed_smc-test: Support write page command with QPI mode Jamin Lin via
2024-10-21 12:53 ` [SPAM] " Cédric Le Goater
2024-10-18 5:31 ` [PATCH v1 16/16] test/qtest/ast2700-smc-test: Support to test AST2700 Jamin Lin via
2024-10-21 12:58 ` [SPAM] " Cédric Le Goater
2024-10-22 1:53 ` Jamin Lin
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=20241018053112.1886173-4-jamin_lin@aspeedtech.com \
--to=qemu-devel@nongnu.org \
--cc=alistair@alistair23.me \
--cc=andrew@codeconstruct.com.au \
--cc=clg@kaod.org \
--cc=hreitz@redhat.com \
--cc=jamin_lin@aspeedtech.com \
--cc=joel@jms.id.au \
--cc=kwolf@redhat.com \
--cc=leetroy@gmail.com \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=steven_lee@aspeedtech.com \
--cc=thuth@redhat.com \
--cc=troy_lee@aspeedtech.com \
--cc=yunlin.tang@aspeedtech.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;
as well as URLs for NNTP newsgroup(s).