qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH arm-devs v1 05/15] xilinx_spips: lqspi: Dont trash c


From: Peter Crosthwaite
Subject: [Qemu-devel] [PATCH arm-devs v1 05/15] xilinx_spips: lqspi: Dont trash config register
Date: Wed, 3 Apr 2013 14:32:57 +1000

The LQSPI code currently manipulates the config register to achieve its
ends. Some (agressively designed) drivers assume that the config
register preserves state across a transition into and out of LQSPI
mode. Fixed by just restoring R_CONFIG to its original value after
LQSPI does its thing.

Signed-off-by: Peter Crosthwaite <address@hidden>
---

 hw/xilinx_spips.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/hw/xilinx_spips.c b/hw/xilinx_spips.c
index 29636ce..06c2ec5 100644
--- a/hw/xilinx_spips.c
+++ b/hw/xilinx_spips.c
@@ -467,6 +467,7 @@ lqspi_read(void *opaque, hwaddr addr, unsigned int size)
         int flash_addr = (addr / num_effective_busses(s));
         int slave = flash_addr >> LQSPI_ADDRESS_BITS;
         int cache_entry = 0;
+        uint32_t r_config_save = s->regs[R_CONFIG];
 
         DB_PRINT("config reg status: %08x\n", s->regs[R_LQSPI_CFG]);
 
@@ -512,6 +513,8 @@ lqspi_read(void *opaque, hwaddr addr, unsigned int size)
 
         s->regs[R_CONFIG] |= CS;
         xilinx_spips_update_cs_lines(s);
+        s->regs[R_CONFIG] = r_config_save;
+        xilinx_spips_update_cs_lines(s);
 
         q->lqspi_cached_addr = addr;
         return lqspi_read(opaque, addr, size);
-- 
1.7.0.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]