*/
QemuConsole *con;
+ uint32_t reg_con;
uint32_t reg_int;
} VIGSState;
{
bool raise = false;
- if ((s->reg_int & VIGS_REG_INT_VBLANK_ENABLE) &&
+ if ((s->reg_con & VIGS_REG_CON_VBLANK_ENABLE) &&
(s->reg_int & VIGS_REG_INT_VBLANK_PENDING)) {
raise = true;
}
dpy_gfx_update(s->con, 0, 0, surface_width(ds), surface_height(ds));
- if (s->reg_int & VIGS_REG_INT_VBLANK_ENABLE) {
+ if (s->reg_con & VIGS_REG_CON_VBLANK_ENABLE) {
s->reg_int |= VIGS_REG_INT_VBLANK_PENDING;
vigs_update_irq(s);
}
DisplaySurface *ds = qemu_console_surface(s->con);
if ((width != surface_width(ds)) ||
- (height != surface_height(ds)))
- {
+ (height != surface_height(ds))) {
qemu_console_resize(s->con, width, height);
}
}
VIGSState *s = opaque;
switch (offset) {
+ case VIGS_REG_CON:
+ return s->reg_con;
case VIGS_REG_INT:
return s->reg_int;
case VIGS_REG_FENCE_LOWER:
case VIGS_REG_EXEC:
vigs_server_dispatch(s->server, value);
break;
+ case VIGS_REG_CON:
+ if (((s->reg_con & VIGS_REG_CON_VBLANK_ENABLE) == 0) &&
+ (value & VIGS_REG_CON_VBLANK_ENABLE)) {
+ VIGS_LOG_DEBUG("VBLANK On");
+ } else if (((value & VIGS_REG_CON_VBLANK_ENABLE) == 0) &&
+ (s->reg_con & VIGS_REG_CON_VBLANK_ENABLE)) {
+ VIGS_LOG_DEBUG("VBLANK Off");
+ }
+
+ s->reg_con = value & VIGS_REG_CON_MASK;
+
+ vigs_update_irq(s);
+ break;
case VIGS_REG_INT:
if (value & VIGS_REG_INT_VBLANK_PENDING) {
value &= ~VIGS_REG_INT_VBLANK_PENDING;
value |= (s->reg_int & VIGS_REG_INT_FENCE_ACK_PENDING);
}
- if (((s->reg_int & VIGS_REG_INT_VBLANK_ENABLE) == 0) &&
- (value & VIGS_REG_INT_VBLANK_ENABLE)) {
- VIGS_LOG_DEBUG("VBLANK On");
- } else if (((value & VIGS_REG_INT_VBLANK_ENABLE) == 0) &&
- (s->reg_int & VIGS_REG_INT_VBLANK_ENABLE)) {
- VIGS_LOG_DEBUG("VBLANK Off");
- }
-
s->reg_int = value & VIGS_REG_INT_MASK;
vigs_update_irq(s);
pci_set_irq(&s->dev.pci_dev, 0);
+ s->reg_con = 0;
s->reg_int = 0;
VIGS_LOG_INFO("VIGS reset");
#define _QEMU_VIGS_REGS_H
#define VIGS_REG_EXEC 0
-#define VIGS_REG_INT 8
-#define VIGS_REG_FENCE_LOWER 16
-#define VIGS_REG_FENCE_UPPER 24
+#define VIGS_REG_CON 8
+#define VIGS_REG_INT 16
+#define VIGS_REG_FENCE_LOWER 24
+#define VIGS_REG_FENCE_UPPER 32
-#define VIGS_REG_INT_MASK 7
-#define VIGS_REG_INT_VBLANK_ENABLE 1
-#define VIGS_REG_INT_VBLANK_PENDING 2
-#define VIGS_REG_INT_FENCE_ACK_PENDING 4
+#define VIGS_REG_CON_MASK 1
+#define VIGS_REG_CON_VBLANK_ENABLE 1
+
+#define VIGS_REG_INT_MASK 3
+#define VIGS_REG_INT_VBLANK_PENDING 1
+#define VIGS_REG_INT_FENCE_ACK_PENDING 2
#endif