From nobody Sun Nov 2 14:09:25 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508607516846949.1224864308963; Sat, 21 Oct 2017 10:38:36 -0700 (PDT) Received: from localhost ([::1]:58620 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e5xjC-00034f-7C for importer@patchew.org; Sat, 21 Oct 2017 13:38:30 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60014) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e5wxu-0003jo-Oo for qemu-devel@nongnu.org; Sat, 21 Oct 2017 12:49:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e5wxr-0005C7-L5 for qemu-devel@nongnu.org; Sat, 21 Oct 2017 12:49:38 -0400 Received: from ec2-52-28-205-119.eu-central-1.compute.amazonaws.com ([52.28.205.119]:57302 helo=ip-172-31-28-221.eu-central-1.compute.internal) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1e5wxr-00057W-EM for qemu-devel@nongnu.org; Sat, 21 Oct 2017 12:49:35 -0400 Received: from [83.254.152.225] (helo=localhost.localdomain) by ip-172-31-28-221.eu-central-1.compute.internal with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1e5ulN-000095-Ge; Sat, 21 Oct 2017 16:28:33 +0200 From: Francisco Iglesias To: qemu-devel@nongnu.org, francisco.iglesias@feimtech.se Date: Sat, 21 Oct 2017 16:35:10 +0200 Message-Id: <20171021143521.31685-2-francisco.iglesias@feimtech.se> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20171021143521.31685-1-francisco.iglesias@feimtech.se> References: <20171021143521.31685-1-francisco.iglesias@feimtech.se> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 52.28.205.119 X-Mailman-Approved-At: Sat, 21 Oct 2017 13:37:00 -0400 Subject: [Qemu-devel] [PATCH 01/12] m25p80: Add support for continuous read out of RDSR and READ_FSR X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: edgari@xilinx.com, alistai@xilinx.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add support for continuous read out of the RDSR and READ_FSR status registers until the chip select is deasserted. Signed-off-by: Francisco Iglesias --- hw/block/m25p80.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index a2438b9..2971519 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -423,6 +423,7 @@ typedef struct Flash { uint8_t data[M25P80_INTERNAL_DATA_BUFFER_SZ]; uint32_t len; uint32_t pos; + bool data_read_loop; uint8_t needed_bytes; uint8_t cmd_in_progress; uint32_t cur_addr; @@ -983,6 +984,7 @@ static void decode_new_cmd(Flash *s, uint32_t value) } s->pos =3D 0; s->len =3D 1; + s->data_read_loop =3D true; s->state =3D STATE_READING_DATA; break; =20 @@ -993,6 +995,7 @@ static void decode_new_cmd(Flash *s, uint32_t value) } s->pos =3D 0; s->len =3D 1; + s->data_read_loop =3D true; s->state =3D STATE_READING_DATA; break; =20 @@ -1133,6 +1136,7 @@ static int m25p80_cs(SSISlave *ss, bool select) s->pos =3D 0; s->state =3D STATE_IDLE; flash_sync_dirty(s, -1); + s->data_read_loop =3D false; } =20 DB_PRINT_L(0, "%sselect\n", select ? "de" : ""); @@ -1198,7 +1202,9 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32= _t tx) s->pos++; if (s->pos =3D=3D s->len) { s->pos =3D 0; - s->state =3D STATE_IDLE; + if (!s->data_read_loop) { + s->state =3D STATE_IDLE; + } } break; =20 --=20 2.9.3