qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH][RFC 11/14] pckbd: refactor pckbd's power callbacks


From: liguang
Subject: [Qemu-devel] [PATCH][RFC 11/14] pckbd: refactor pckbd's power callbacks
Date: Wed, 13 Mar 2013 16:01:18 +0800

Signed-off-by: liguang <address@hidden>
---
 hw/pckbd.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/hw/pckbd.c b/hw/pckbd.c
index 3bad09b..1ab8ada 100644
--- a/hw/pckbd.c
+++ b/hw/pckbd.c
@@ -142,6 +142,12 @@ typedef struct KBDState {
     hwaddr mask;
 } KBDState;
 
+typedef struct ISAKBDState {
+    ISADevice dev;
+    KBDState kbd;
+    MemoryRegion io[2];
+} ISAKBDState;
+
 /* update irq and KBD_STAT_[MOUSE_]OBF */
 /* XXX: not generating the irqs if KBD_MODE_DISABLE_KBD is set may be
    incorrect, but it avoids having to simulate exact delays */
@@ -360,9 +366,10 @@ static void kbd_write_data(void *opaque, hwaddr addr,
     s->write_cmd = 0;
 }
 
-static void kbd_reset(void *opaque)
+static void kbd_reset(DeviceState *dev)
 {
-    KBDState *s = opaque;
+    ISADevice *isadev = ISA_DEVICE(dev);
+    KBDState *s = &(DO_UPCAST(ISAKBDState, dev, isadev)->kbd);
 
     s->mode = KBD_MODE_KBD_INT | KBD_MODE_MOUSE_INT;
     s->status = KBD_STAT_CMD | KBD_STAT_UNLOCKED;
@@ -428,15 +435,8 @@ void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq,
 
     s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
     s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
-    qemu_register_reset(kbd_reset, s);
 }
 
-typedef struct ISAKBDState {
-    ISADevice dev;
-    KBDState kbd;
-    MemoryRegion io[2];
-} ISAKBDState;
-
 void i8042_isa_mouse_fake_event(void *opaque)
 {
     ISADevice *dev = opaque;
@@ -499,7 +499,7 @@ static int i8042_initfn(ISADevice *dev)
 
     s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
     s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
-    qemu_register_reset(kbd_reset, s);
+
     return 0;
 }
 
@@ -510,6 +510,8 @@ static void i8042_class_initfn(ObjectClass *klass, void 
*data)
     ic->init = i8042_initfn;
     dc->no_user = 1;
     dc->vmsd = &vmstate_kbd_isa;
+    dc->reset = kbd_reset;
+    dc->on = kbd_reset;
 }
 
 static const TypeInfo i8042_info = {
-- 
1.7.2.5




reply via email to

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