i8254_common.c (47b5264eb3e1cd2825e48d28fd0d1b239ed53974) | i8254_common.c (db895a1e6a97e919f9b86d60c969377357b05066) |
---|---|
1/* 2 * QEMU 8253/8254 - common bits of emulated and KVM kernel model 3 * 4 * Copyright (c) 2003-2004 Fabrice Bellard 5 * Copyright (c) 2012 Jan Kiszka, Siemens AG 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 152 unchanged lines hidden (view full) --- 161 s->count = 0x10000; 162 if (i == 0 && !s->irq_disabled) { 163 s->next_transition_time = 164 pit_get_next_transition_time(s, s->count_load_time); 165 } 166 } 167} 168 | 1/* 2 * QEMU 8253/8254 - common bits of emulated and KVM kernel model 3 * 4 * Copyright (c) 2003-2004 Fabrice Bellard 5 * Copyright (c) 2012 Jan Kiszka, Siemens AG 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 152 unchanged lines hidden (view full) --- 161 s->count = 0x10000; 162 if (i == 0 && !s->irq_disabled) { 163 s->next_transition_time = 164 pit_get_next_transition_time(s, s->count_load_time); 165 } 166 } 167} 168 |
169static int pit_init_common(ISADevice *dev) | 169static void pit_common_realize(DeviceState *dev, Error **errp) |
170{ | 170{ |
171 ISADevice *isadev = ISA_DEVICE(dev); |
|
171 PITCommonState *pit = PIT_COMMON(dev); 172 PITCommonClass *c = PIT_COMMON_GET_CLASS(pit); 173 int ret; 174 175 ret = c->init(pit); 176 if (ret < 0) { | 172 PITCommonState *pit = PIT_COMMON(dev); 173 PITCommonClass *c = PIT_COMMON_GET_CLASS(pit); 174 int ret; 175 176 ret = c->init(pit); 177 if (ret < 0) { |
177 return ret; | 178 error_setg(errp, "PIT init failed."); 179 return; |
178 } 179 | 180 } 181 |
180 isa_register_ioport(dev, &pit->ioports, pit->iobase); | 182 isa_register_ioport(isadev, &pit->ioports, pit->iobase); |
181 | 183 |
182 qdev_set_legacy_instance_id(&dev->qdev, pit->iobase, 2); 183 184 return 0; | 184 qdev_set_legacy_instance_id(dev, pit->iobase, 2); |
185} 186 187static const VMStateDescription vmstate_pit_channel = { 188 .name = "pit channel", 189 .version_id = 2, 190 .minimum_version_id = 2, 191 .minimum_version_id_old = 2, 192 .fields = (VMStateField[]) { --- 88 unchanged lines hidden (view full) --- 281 VMSTATE_INT64(channels[0].next_transition_time, 282 PITCommonState), /* formerly irq_timer */ 283 VMSTATE_END_OF_LIST() 284 } 285}; 286 287static void pit_common_class_init(ObjectClass *klass, void *data) 288{ | 185} 186 187static const VMStateDescription vmstate_pit_channel = { 188 .name = "pit channel", 189 .version_id = 2, 190 .minimum_version_id = 2, 191 .minimum_version_id_old = 2, 192 .fields = (VMStateField[]) { --- 88 unchanged lines hidden (view full) --- 281 VMSTATE_INT64(channels[0].next_transition_time, 282 PITCommonState), /* formerly irq_timer */ 283 VMSTATE_END_OF_LIST() 284 } 285}; 286 287static void pit_common_class_init(ObjectClass *klass, void *data) 288{ |
289 ISADeviceClass *ic = ISA_DEVICE_CLASS(klass); | |
290 DeviceClass *dc = DEVICE_CLASS(klass); 291 | 289 DeviceClass *dc = DEVICE_CLASS(klass); 290 |
292 ic->init = pit_init_common; | 291 dc->realize = pit_common_realize; |
293 dc->vmsd = &vmstate_pit_common; 294 dc->no_user = 1; 295} 296 297static const TypeInfo pit_common_type = { 298 .name = TYPE_PIT_COMMON, 299 .parent = TYPE_ISA_DEVICE, 300 .instance_size = sizeof(PITCommonState), 301 .class_size = sizeof(PITCommonClass), 302 .class_init = pit_common_class_init, 303 .abstract = true, 304}; 305 306static void register_devices(void) 307{ 308 type_register_static(&pit_common_type); 309} 310 311type_init(register_devices); | 292 dc->vmsd = &vmstate_pit_common; 293 dc->no_user = 1; 294} 295 296static const TypeInfo pit_common_type = { 297 .name = TYPE_PIT_COMMON, 298 .parent = TYPE_ISA_DEVICE, 299 .instance_size = sizeof(PITCommonState), 300 .class_size = sizeof(PITCommonClass), 301 .class_init = pit_common_class_init, 302 .abstract = true, 303}; 304 305static void register_devices(void) 306{ 307 type_register_static(&pit_common_type); 308} 309 310type_init(register_devices); |