Lines Matching refs:d

112 static void i6300esb_restart_timer(I6300State *d, int stage)  in OBJECT_DECLARE_SIMPLE_TYPE()
116 if (!d->enabled) in OBJECT_DECLARE_SIMPLE_TYPE()
119 d->stage = stage; in OBJECT_DECLARE_SIMPLE_TYPE()
121 if (d->stage <= 1) in OBJECT_DECLARE_SIMPLE_TYPE()
122 timeout = d->timer1_preload; in OBJECT_DECLARE_SIMPLE_TYPE()
124 timeout = d->timer2_preload; in OBJECT_DECLARE_SIMPLE_TYPE()
126 if (d->clock_scale == CLOCK_SCALE_1KHZ) in OBJECT_DECLARE_SIMPLE_TYPE()
135 i6300esb_debug("stage %d, timeout %" PRIi64 "\n", d->stage, timeout); in OBJECT_DECLARE_SIMPLE_TYPE()
137 timer_mod(d->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + timeout); in OBJECT_DECLARE_SIMPLE_TYPE()
141 static void i6300esb_disable_timer(I6300State *d) in i6300esb_disable_timer() argument
145 timer_del(d->timer); in i6300esb_disable_timer()
151 I6300State *d = WATCHDOG_I6300ESB_DEVICE(pdev); in i6300esb_reset() local
153 i6300esb_debug("I6300State = %p\n", d); in i6300esb_reset()
155 i6300esb_disable_timer(d); in i6300esb_reset()
159 d->reboot_enabled = 1; in i6300esb_reset()
160 d->clock_scale = CLOCK_SCALE_1KHZ; in i6300esb_reset()
161 d->int_type = INT_TYPE_IRQ; in i6300esb_reset()
162 d->free_run = 0; in i6300esb_reset()
163 d->locked = 0; in i6300esb_reset()
164 d->enabled = 0; in i6300esb_reset()
165 d->timer1_preload = 0xfffff; in i6300esb_reset()
166 d->timer2_preload = 0xfffff; in i6300esb_reset()
167 d->stage = 1; in i6300esb_reset()
168 d->unlock_state = 0; in i6300esb_reset()
180 I6300State *d = vp; in i6300esb_timer_expired() local
182 i6300esb_debug("stage %d\n", d->stage); in i6300esb_timer_expired()
184 if (d->stage == 1) { in i6300esb_timer_expired()
186 switch (d->int_type) { in i6300esb_timer_expired()
196 i6300esb_restart_timer(d, 2); in i6300esb_timer_expired()
199 if (d->reboot_enabled) { in i6300esb_timer_expired()
200 d->previous_reboot_flag = 1; in i6300esb_timer_expired()
202 i6300esb_reset(DEVICE(d)); in i6300esb_timer_expired()
206 if (d->free_run) in i6300esb_timer_expired()
207 i6300esb_restart_timer(d, 1); in i6300esb_timer_expired()
214 I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev); in i6300esb_config_write() local
220 d->reboot_enabled = (data & ESB_WDT_REBOOT) == 0; in i6300esb_config_write()
221 d->clock_scale = in i6300esb_config_write()
223 d->int_type = (data & ESB_WDT_INTTYPE); in i6300esb_config_write()
225 if (!d->locked) { in i6300esb_config_write()
226 d->locked = (data & ESB_WDT_LOCK) != 0; in i6300esb_config_write()
227 d->free_run = (data & ESB_WDT_FUNC) != 0; in i6300esb_config_write()
228 old = d->enabled; in i6300esb_config_write()
229 d->enabled = (data & ESB_WDT_ENABLE) != 0; in i6300esb_config_write()
230 if (!old && d->enabled) /* Enabled transitioned from 0 -> 1 */ in i6300esb_config_write()
231 i6300esb_restart_timer(d, 1); in i6300esb_config_write()
232 else if (!d->enabled) in i6300esb_config_write()
233 i6300esb_disable_timer(d); in i6300esb_config_write()
242 I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev); in i6300esb_config_read() local
249 (d->reboot_enabled ? 0 : ESB_WDT_REBOOT) | in i6300esb_config_read()
250 (d->clock_scale == CLOCK_SCALE_1MHZ ? ESB_WDT_FREQ : 0) | in i6300esb_config_read()
251 d->int_type; in i6300esb_config_read()
255 (d->free_run ? ESB_WDT_FUNC : 0) | in i6300esb_config_read()
256 (d->locked ? ESB_WDT_LOCK : 0) | in i6300esb_config_read()
257 (d->enabled ? ESB_WDT_ENABLE : 0); in i6300esb_config_read()
274 I6300State *d = vp; in i6300esb_mem_readw() local
283 data = d->previous_reboot_flag ? 0x1200 : 0; in i6300esb_mem_readw()
298 I6300State *d = vp; in i6300esb_mem_writeb() local
303 d->unlock_state = 1; in i6300esb_mem_writeb()
304 else if (addr == 0xc && val == 0x86 && d->unlock_state == 1) in i6300esb_mem_writeb()
305 d->unlock_state = 2; in i6300esb_mem_writeb()
310 I6300State *d = vp; in i6300esb_mem_writew() local
315 d->unlock_state = 1; in i6300esb_mem_writew()
316 else if (addr == 0xc && val == 0x86 && d->unlock_state == 1) in i6300esb_mem_writew()
317 d->unlock_state = 2; in i6300esb_mem_writew()
319 if (d->unlock_state == 2) { in i6300esb_mem_writew()
325 i6300esb_restart_timer(d, 1); in i6300esb_mem_writew()
332 d->previous_reboot_flag = 0; in i6300esb_mem_writew()
336 d->unlock_state = 0; in i6300esb_mem_writew()
343 I6300State *d = vp; in i6300esb_mem_writel() local
348 d->unlock_state = 1; in i6300esb_mem_writel()
349 else if (addr == 0xc && val == 0x86 && d->unlock_state == 1) in i6300esb_mem_writel()
350 d->unlock_state = 2; in i6300esb_mem_writel()
352 if (d->unlock_state == 2) { in i6300esb_mem_writel()
354 d->timer1_preload = val & 0xfffff; in i6300esb_mem_writel()
356 d->timer2_preload = val & 0xfffff; in i6300esb_mem_writel()
358 d->unlock_state = 0; in i6300esb_mem_writel()
441 I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev); in i6300esb_realize() local
443 i6300esb_debug("I6300State = %p\n", d); in i6300esb_realize()
445 d->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, i6300esb_timer_expired, d); in i6300esb_realize()
446 d->previous_reboot_flag = 0; in i6300esb_realize()
448 memory_region_init_io(&d->io_mem, OBJECT(d), &i6300esb_ops, d, in i6300esb_realize()
450 pci_register_bar(&d->dev, 0, 0, &d->io_mem); in i6300esb_realize()
455 I6300State *d = WATCHDOG_I6300ESB_DEVICE(dev); in i6300esb_exit() local
457 timer_free(d->timer); in i6300esb_exit()