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);