virtio-hwkey, virtio-keyboard: modified for 1.5.1 upgrade
authorsungmin ha <sungmin82.ha@samsung.com>
Wed, 10 Jul 2013 02:48:51 +0000 (11:48 +0900)
committersungmin ha <sungmin82.ha@samsung.com>
Wed, 10 Jul 2013 02:48:51 +0000 (11:48 +0900)
Change-Id: I17fa1c1cb25c827e0bc82828eda2883e5c8ff947
Signed-off-by: Sungmin Ha <sungmin82.ha@samsung.com>
tizen/src/hw/maru_virtio_hwkey.c
tizen/src/hw/maru_virtio_keyboard.c
tizen/src/hw/maru_virtio_keyboard.h

index 3bafa6150d8790323217c2da94039961d354c8a3..3389e398978a6c09835d3764c303cb3d16d7283e 100644 (file)
@@ -218,23 +218,22 @@ static void maru_hwkey_bh(void *opaque)
     maru_virtio_hwkey_notify();
 }
 
-VirtIODevice *maru_virtio_hwkey_init(DeviceState *dev)
+static int virtio_hwkey_device_init(VirtIODevice *vdev)
 {
     INFO("initialize the hwkey device\n");
+    DeviceState *qdev = DEVICE(vdev);
+    vhk = VIRTIO_HWKEY(vdev);
 
-    vhk = g_malloc0(sizeof(VirtIOHWKey));
-    virtio_init(&vhk->vdev, TYPE_VIRTIO_HWKEY, VIRTIO_ID_HWKEY, 0);
+    virtio_init(vdev, TYPE_VIRTIO_HWKEY, VIRTIO_ID_HWKEY, 0);
 
-    if (&vhk->vdev == NULL) {
+    if (vdev == NULL) {
         ERR("failed to initialize the hwkey device\n");
-        return NULL;
+        return -1;
     }
 
-    VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(&vhk->vdev);
-    vdc->get_features = virtio_hwkey_get_features;
-    vhk->vq = virtio_add_queue(&vhk->vdev, 64, maru_virtio_hwkey_handle);
+    vhk->vq = virtio_add_queue(vdev, 64, maru_virtio_hwkey_handle);
 
-    vhk->qdev = dev;
+    vhk->qdev = qdev;
 
     /* reset the counters */
     event_queue_cnt = event_ringbuf_cnt = 0;
@@ -243,12 +242,12 @@ VirtIODevice *maru_virtio_hwkey_init(DeviceState *dev)
     /* bottom-half */
     vhk->bh = qemu_bh_new(maru_hwkey_bh, vhk);
 
-    return &(vhk->vdev);
+    return 0;
 }
 
-void maru_virtio_hwkey_exit(VirtIODevice *vdev)
+static int virtio_hwkey_device_exit(DeviceState *qdev)
 {
-    VirtIOHWKey *vhk = (VirtIOHWKey *)vdev;
+    VirtIODevice *vdev = VIRTIO_DEVICE(qdev);
 
     INFO("exit the hwkey device\n");
 
@@ -259,5 +258,30 @@ void maru_virtio_hwkey_exit(VirtIODevice *vdev)
     virtio_cleanup(vdev);
 
     pthread_mutex_destroy(&event_mutex);
+
+    return 0;
+}
+
+static void virtio_hwkey_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
+    dc->exit = virtio_hwkey_device_exit;
+    vdc->init = virtio_hwkey_device_init;
+    vdc->get_features = virtio_hwkey_get_features;
 }
 
+static const TypeInfo virtio_hwkey_info = {
+    .name = TYPE_VIRTIO_HWKEY,
+    .parent = TYPE_VIRTIO_DEVICE,
+    .instance_size = sizeof(VirtIOHWKey),
+    .class_init = virtio_hwkey_class_init,
+};
+
+static void virtio_register_types(void)
+{
+    type_register_static(&virtio_hwkey_info);
+}
+
+type_init(virtio_register_types)
+
index 30f559faaae1c529b00ad91e8bb353d6c27fa2c2..52a82866d08e5678c381b9f255cb5f3b26b8dbb2 100644 (file)
@@ -218,27 +218,26 @@ static void virtio_keyboard_bh(void *opaque)
     virtio_keyboard_notify(opaque);
 }
 
-VirtIODevice *virtio_keyboard_init(DeviceState *dev)
+static int virtio_keyboard_device_init(VirtIODevice *vdev)
 {
     VirtIOKeyboard *vkbd;
-    INFO("initialize virtio-keyboard device\n");
+    DeviceState *qdev = DEVICE(vdev);
+    vkbd = VIRTIO_KEYBOARD(vdev);
 
-    vkbd = g_malloc0(sizeof(VirtIOKeyboard));
-    virtio_init(&vkbd->vdev, TYPE_VIRTIO_KEYBOARD, VIRTIO_ID_KEYBOARD, 0);
+    INFO("initialize virtio-keyboard device\n");
+    virtio_init(vdev, TYPE_VIRTIO_KEYBOARD, VIRTIO_ID_KEYBOARD, 0);
 
-    if (&vkbd->vdev == NULL) {
+    if (vdev == NULL) {
         ERR("failed to initialize device\n");
-        return NULL;
+        return -1;
     }
 
     memset(&vkbd->kbdqueue, 0x00, sizeof(vkbd->kbdqueue));
     vkbd->extension_key = 0;
     qemu_mutex_init(&vkbd->event_mutex);
 
-    VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(&vkbd->vdev);
-    vdc->get_features = virtio_keyboard_get_features;
-    vkbd->vq = virtio_add_queue(&vkbd->vdev, 128, virtio_keyboard_handle);
-    vkbd->qdev = dev;
+    vkbd->vq = virtio_add_queue(vdev, 128, virtio_keyboard_handle);
+    vkbd->qdev = qdev;
 
     /* bottom half */
     vkbd->bh = qemu_bh_new(virtio_keyboard_bh, vkbd);
@@ -246,12 +245,14 @@ VirtIODevice *virtio_keyboard_init(DeviceState *dev)
     /* register keyboard handler */
     vkbd->eh_entry = qemu_add_kbd_event_handler(virtio_keyboard_event, vkbd);
  
-    return &vkbd->vdev;
+    return 0;
 }
 
-void virtio_keyboard_exit(VirtIODevice *vdev)
+static int virtio_keyboard_device_exit(DeviceState *qdev)
 {
+    VirtIODevice *vdev = VIRTIO_DEVICE(qdev);
     VirtIOKeyboard *vkbd = (VirtIOKeyboard *)vdev;
+
     INFO("destroy device\n");
 
     qemu_remove_kbd_event_handler(vkbd->eh_entry);
@@ -263,4 +264,30 @@ void virtio_keyboard_exit(VirtIODevice *vdev)
     qemu_mutex_destroy(&vkbd->event_mutex);
 
     virtio_cleanup(vdev);
+
+    return 0;
 }
+
+static void virtio_keyboard_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+    VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
+    dc->exit = virtio_keyboard_device_exit;
+    vdc->init = virtio_keyboard_device_init;
+    vdc->get_features = virtio_keyboard_get_features;
+}
+
+static const TypeInfo virtio_keyboard_info = {
+    .name = TYPE_VIRTIO_KEYBOARD,
+    .parent = TYPE_VIRTIO_DEVICE,
+    .instance_size = sizeof(VirtIOKeyboard),
+    .class_init = virtio_keyboard_class_init,
+};
+
+static void virtio_register_types(void)
+{
+    type_register_static(&virtio_keyboard_info);
+}
+
+type_init(virtio_register_types)
+
index ba861846f56f9f8db1c5414cb3f18dbb4f9436b0..9a976b4f141ba6b0eed0ac575f91ee49355cb456 100644 (file)
@@ -40,6 +40,8 @@ extern "C" {
 #include "hw/virtio/virtio.h"
 
 #define TYPE_VIRTIO_KEYBOARD "virtio-keyboard-device"
+#define VIRTIO_KEYBOARD(obj) \
+        OBJECT_CHECK(VirtIOKeyboard, (obj), TYPE_VIRTIO_KEYBOARD)
 #define VIRTIO_KBD_QUEUE_SIZE  100
 
 typedef struct EmulKbdEvent {