[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2] realview: fix reset bit depending on platform
From: |
Jean-Christophe DUBOIS |
Subject: |
[Qemu-devel] [PATCH v2] realview: fix reset bit depending on platform |
Date: |
Sat, 5 Nov 2011 12:23:57 +0100 |
Depending on the considered baseboard the bit used to
reset the platform is different.
Here is the list of considered Realview/Versatile platforms:
Realview/Versatile AB for ARM926EJ-S: BOARD_ID = 0x100 = BOARD_ID_PB926
http://infocenter.arm.com/help/topic/com.arm.doc.dui0225d/CACCIFGI.html
RealView Emulation Baseboard: BOARD_ID = 0x140 = BOARD_ID_EB
No reset register
RealView PB for ARM1176JZF-S: BOARD_ID = 0x147 = BOARD_ID_PB1176
http://infocenter.arm.com/help/topic/com.arm.doc.dui0425f/Caccifgi.html
RealView PB for ARM11 MPCore: BOARD_ID = 0x159 = BOARD_ID_PB11MP
http://infocenter.arm.com/help/topic/com.arm.doc.dui0351e/CACCHBFB.html
RealView PB for Cortex-A8: BOARD_ID = 0x178 = BOARD_ID_PBA8
http://infocenter.arm.com/help/topic/com.arm.doc.dui0417d/BBACIGAD.html
RealView PB for Cortex-A9: BOARD_ID = 0x182 = BOARD_ID_PBX
http://infocenter.arm.com/help/topic/com.arm.doc.dui0440b/CACCHBFB.html
Motherboard Express µATX: BOARD_ID = 0x190 = BOARD_ID_VEXPRESS
No reset register
v2:
- Add multiple boards support
- fix coding style
- Added a BOARD_ID descriptor for unsupported baseboards.
Signed-off-by: Jean-Christophe DUBOIS <address@hidden>
---
hw/arm_sysctl.c | 43 ++++++++++++++++++++++++++++++++-----------
1 files changed, 32 insertions(+), 11 deletions(-)
diff --git a/hw/arm_sysctl.c b/hw/arm_sysctl.c
index 17cf6f7..8f07fd5 100644
--- a/hw/arm_sysctl.c
+++ b/hw/arm_sysctl.c
@@ -63,6 +63,8 @@ static const VMStateDescription vmstate_arm_sysctl = {
*/
#define BOARD_ID_PB926 0x100
#define BOARD_ID_EB 0x140
+#define BOARD_ID_PB1176 0x147
+#define BOARD_ID_PB11MP 0x159
#define BOARD_ID_PBA8 0x178
#define BOARD_ID_PBX 0x182
#define BOARD_ID_VEXPRESS 0x190
@@ -143,7 +145,8 @@ static uint64_t arm_sysctl_read(void *opaque,
target_phys_addr_t offset,
case 0x58: /* BOOTCS */
return 0;
case 0x5c: /* 24MHz */
- return muldiv64(qemu_get_clock_ns(vm_clock), 24000000,
get_ticks_per_sec());
+ return muldiv64(qemu_get_clock_ns(vm_clock), 24000000,
+ get_ticks_per_sec());
case 0x60: /* MISC */
return 0;
case 0x84: /* PROCID0 */
@@ -184,7 +187,7 @@ static uint64_t arm_sysctl_read(void *opaque,
target_phys_addr_t offset,
return s->sys_cfgstat;
default:
bad_reg:
- printf ("arm_sysctl_read: Bad register offset 0x%x\n", (int)offset);
+ printf("arm_sysctl_read: Bad register offset 0x%x\n", (int)offset);
return 0;
}
}
@@ -205,10 +208,11 @@ static void arm_sysctl_write(void *opaque,
target_phys_addr_t offset,
/* ??? */
break;
case 0x20: /* LOCK */
- if (val == LOCK_VALUE)
+ if (val == LOCK_VALUE) {
s->lockval = val;
- else
+ } else {
s->lockval = val & 0x7fff;
+ }
break;
case 0x28: /* CFGDATA1 */
/* ??? Need to implement this. */
@@ -231,15 +235,32 @@ static void arm_sysctl_write(void *opaque,
target_phys_addr_t offset,
s->nvflags &= ~val;
break;
case 0x40: /* RESETCTL */
- if (board_id(s) == BOARD_ID_VEXPRESS) {
+ switch (board_id(s)) {
+ case BOARD_ID_PB926:
+ case BOARD_ID_PB1176:
+ if (s->lockval == LOCK_VALUE) {
+ s->resetlevel = val;
+ if (val & 0x100) {
+ qemu_system_reset_request();
+ }
+ }
+ break;
+ case BOARD_ID_PBX:
+ case BOARD_ID_PBA8:
+ case BOARD_ID_PB11MP:
+ if (s->lockval == LOCK_VALUE) {
+ s->resetlevel = val;
+ if (val & 0x04) {
+ qemu_system_reset_request();
+ }
+ }
+ break;
+ case BOARD_ID_VEXPRESS:
+ case BOARD_ID_EB:
+ default:
/* reserved: RAZ/WI */
break;
}
- if (s->lockval == LOCK_VALUE) {
- s->resetlevel = val;
- if (val & 0x100)
- qemu_system_reset_request ();
- }
break;
case 0x44: /* PCICTL */
/* nothing to do. */
@@ -324,7 +345,7 @@ static void arm_sysctl_write(void *opaque,
target_phys_addr_t offset,
return;
default:
bad_reg:
- printf ("arm_sysctl_write: Bad register offset 0x%x\n", (int)offset);
+ printf("arm_sysctl_write: Bad register offset 0x%x\n", (int)offset);
return;
}
}
--
1.7.5.4
- [Qemu-devel] [PATCH v2] realview: fix reset bit depending on platform,
Jean-Christophe DUBOIS <=