[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] hw/nand.c: Fix nand erase operation
From: |
Peter Crosthwaite |
Subject: |
[Qemu-devel] [PATCH] hw/nand.c: Fix nand erase operation |
Date: |
Wed, 3 Apr 2013 15:33:08 +1000 |
From: Wendy Liang <address@hidden>
Usually, nand erase operation has only 2 or 3 address cycles.
We need to mask s->addr to zero unset stale high-order bytes in the nand address
before using it as the erase address.
This fixes the NAND erase operation in Linux.
[PC: Generalised to work for any number of address cycles rather than just 3]
Signed-off-by: Wendy Liang <address@hidden>
Signed-off-by: Peter Crosthwaite <address@hidden>
---
hw/nand.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/hw/nand.c b/hw/nand.c
index de3e502..6362093 100644
--- a/hw/nand.c
+++ b/hw/nand.c
@@ -297,6 +297,7 @@ static void nand_command(NANDFlashState *s)
break;
case NAND_CMD_BLOCKERASE2:
+ s->addr &= (1ull << s->addrlen * 8) - 1;
if (nand_flash_ids[s->chip_id].options & NAND_SAMSUNG_LP)
s->addr <<= 16;
else
--
1.7.0.4
- [Qemu-devel] [PATCH] hw/nand.c: Fix nand erase operation,
Peter Crosthwaite <=