From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43704) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bDr4Y-0007Ic-LY for qemu-devel@nongnu.org; Fri, 17 Jun 2016 06:32:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bDr4T-00031Z-Kj for qemu-devel@nongnu.org; Fri, 17 Jun 2016 06:32:21 -0400 Received: from mail-db3on0108.outbound.protection.outlook.com ([157.55.234.108]:62174 helo=emea01-db3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bDr4T-00031M-6z for qemu-devel@nongnu.org; Fri, 17 Jun 2016 06:32:17 -0400 From: Date: Fri, 17 Jun 2016 12:28:29 +0200 Message-ID: <1466159314-28597-6-git-send-email-marcin.krzeminski@nokia.com> In-Reply-To: <1466159314-28597-1-git-send-email-marcin.krzeminski@nokia.com> References: <1466159314-28597-1-git-send-email-marcin.krzeminski@nokia.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v2 05/10] m25p80: Add additional flash commands: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: crosthwaitepeter@gmail.com, pawel.lenkow@itlen.com, rfsw-patches@mlist.emea.nsn-intra.net, peter.maydell@linaro.org, clg@fr.ibm.com, clg@kaod.org From: Marcin Krzeminski Page program 4byte/quad and erase 32K sectors 4 bytes. Signed-off-by: Marcin Krzeminski Reviewed-by: C=C3=A9dric Le Goater --- hw/block/m25p80.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index ca1f882..55b4377 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -297,12 +297,14 @@ typedef enum { =20 PP =3D 0x02, PP4 =3D 0x12, + PP4_4 =3D 0x3e, DPP =3D 0xa2, QPP =3D 0x32, =20 ERASE_4K =3D 0x20, ERASE4_4K =3D 0x21, ERASE_32K =3D 0x52, + ERASE4_32K =3D 0x5c, ERASE_SECTOR =3D 0xd8, ERASE4_SECTOR =3D 0xdc, =20 @@ -449,6 +451,7 @@ static void flash_erase(Flash *s, int offset, FlashCMD = cmd) capa_to_assert =3D ER_4K; break; case ERASE_32K: + case ERASE4_32K: len =3D 32 << 10; capa_to_assert =3D ER_32K; break; @@ -519,9 +522,11 @@ static inline int get_addr_length(Flash *s) =20 switch (s->cmd_in_progress) { case PP4: + case PP4_4: case READ4: case QIOR4: case ERASE4_4K: + case ERASE4_32K: case ERASE4_SECTOR: case FAST_READ4: case DOR4: @@ -555,6 +560,7 @@ static void complete_collecting_data(Flash *s) case QPP: case PP: case PP4: + case PP4_4: s->state =3D STATE_PAGE_PROGRAM; break; case READ: @@ -574,6 +580,7 @@ static void complete_collecting_data(Flash *s) case ERASE_4K: case ERASE4_4K: case ERASE_32K: + case ERASE4_32K: case ERASE_SECTOR: case ERASE4_SECTOR: flash_erase(s, s->cur_addr, s->cmd_in_progress); @@ -669,6 +676,7 @@ static void decode_new_cmd(Flash *s, uint32_t value) case ERASE_4K: case ERASE4_4K: case ERASE_32K: + case ERASE4_32K: case ERASE_SECTOR: case ERASE4_SECTOR: case READ: @@ -677,6 +685,7 @@ static void decode_new_cmd(Flash *s, uint32_t value) case QPP: case PP: case PP4: + case PP4_4: s->needed_bytes =3D get_addr_length(s); s->pos =3D 0; s->len =3D 0; --=20 2.7.4