wdt_ib700.c (61e477f4c731c4ff3f1a44dbfc55c8a5903c8d52) wdt_ib700.c (db895a1e6a97e919f9b86d60c969377357b05066)
1/*
2 * Virtual hardware watchdog.
3 *
4 * Copyright (C) 2009 Red Hat Inc.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2

--- 83 unchanged lines hidden (view full) ---

92 .minimum_version_id = 0,
93 .minimum_version_id_old = 0,
94 .fields = (VMStateField []) {
95 VMSTATE_TIMER(timer, IB700State),
96 VMSTATE_END_OF_LIST()
97 }
98};
99
1/*
2 * Virtual hardware watchdog.
3 *
4 * Copyright (C) 2009 Red Hat Inc.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2

--- 83 unchanged lines hidden (view full) ---

92 .minimum_version_id = 0,
93 .minimum_version_id_old = 0,
94 .fields = (VMStateField []) {
95 VMSTATE_TIMER(timer, IB700State),
96 VMSTATE_END_OF_LIST()
97 }
98};
99
100static int wdt_ib700_init(ISADevice *dev)
100static void wdt_ib700_realize(DeviceState *dev, Error **errp)
101{
102 IB700State *s = IB700(dev);
103
104 ib700_debug("watchdog init\n");
105
106 s->timer = qemu_new_timer_ns(vm_clock, ib700_timer_expired, s);
107 register_ioport_write(0x441, 2, 1, ib700_write_disable_reg, s);
108 register_ioport_write(0x443, 2, 1, ib700_write_enable_reg, s);
101{
102 IB700State *s = IB700(dev);
103
104 ib700_debug("watchdog init\n");
105
106 s->timer = qemu_new_timer_ns(vm_clock, ib700_timer_expired, s);
107 register_ioport_write(0x441, 2, 1, ib700_write_disable_reg, s);
108 register_ioport_write(0x443, 2, 1, ib700_write_enable_reg, s);
109
110 return 0;
111}
112
113static void wdt_ib700_reset(DeviceState *dev)
114{
115 IB700State *s = IB700(dev);
116
117 ib700_debug("watchdog reset\n");
118
119 qemu_del_timer(s->timer);
120}
121
122static WatchdogTimerModel model = {
123 .wdt_name = "ib700",
124 .wdt_description = "iBASE 700",
125};
126
127static void wdt_ib700_class_init(ObjectClass *klass, void *data)
128{
129 DeviceClass *dc = DEVICE_CLASS(klass);
109}
110
111static void wdt_ib700_reset(DeviceState *dev)
112{
113 IB700State *s = IB700(dev);
114
115 ib700_debug("watchdog reset\n");
116
117 qemu_del_timer(s->timer);
118}
119
120static WatchdogTimerModel model = {
121 .wdt_name = "ib700",
122 .wdt_description = "iBASE 700",
123};
124
125static void wdt_ib700_class_init(ObjectClass *klass, void *data)
126{
127 DeviceClass *dc = DEVICE_CLASS(klass);
130 ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
131 ic->init = wdt_ib700_init;
128
129 dc->realize = wdt_ib700_realize;
132 dc->reset = wdt_ib700_reset;
133 dc->vmsd = &vmstate_ib700;
134}
135
136static const TypeInfo wdt_ib700_info = {
137 .name = TYPE_IB700,
138 .parent = TYPE_ISA_DEVICE,
139 .instance_size = sizeof(IB700State),
140 .class_init = wdt_ib700_class_init,
141};
142
143static void wdt_ib700_register_types(void)
144{
145 watchdog_add_model(&model);
146 type_register_static(&wdt_ib700_info);
147}
148
149type_init(wdt_ib700_register_types)
130 dc->reset = wdt_ib700_reset;
131 dc->vmsd = &vmstate_ib700;
132}
133
134static const TypeInfo wdt_ib700_info = {
135 .name = TYPE_IB700,
136 .parent = TYPE_ISA_DEVICE,
137 .instance_size = sizeof(IB700State),
138 .class_init = wdt_ib700_class_init,
139};
140
141static void wdt_ib700_register_types(void)
142{
143 watchdog_add_model(&model);
144 type_register_static(&wdt_ib700_info);
145}
146
147type_init(wdt_ib700_register_types)