Lines Matching refs:data
265 struct sch56xx_watchdog_data *data = in watchdog_release_resources() local
267 kfree(data); in watchdog_release_resources()
273 struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev); in watchdog_set_timeout() local
288 control = data->watchdog_control | SCH56XX_WDOG_TIME_BASE_SEC; in watchdog_set_timeout()
290 control = data->watchdog_control & ~SCH56XX_WDOG_TIME_BASE_SEC; in watchdog_set_timeout()
292 if (data->watchdog_control != control) { in watchdog_set_timeout()
293 mutex_lock(data->io_lock); in watchdog_set_timeout()
294 ret = sch56xx_write_virtual_reg(data->addr, in watchdog_set_timeout()
297 mutex_unlock(data->io_lock); in watchdog_set_timeout()
301 data->watchdog_control = control; in watchdog_set_timeout()
308 data->watchdog_preset = DIV_ROUND_UP(timeout, resolution); in watchdog_set_timeout()
309 wddev->timeout = data->watchdog_preset * resolution; in watchdog_set_timeout()
316 struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev); in watchdog_start() local
339 mutex_lock(data->io_lock); in watchdog_start()
342 ret = sch56xx_write_virtual_reg(data->addr, SCH56XX_REG_WDOG_PRESET, in watchdog_start()
343 data->watchdog_preset); in watchdog_start()
348 val = data->watchdog_output_enable | SCH56XX_WDOG_OUTPUT_ENABLE; in watchdog_start()
349 ret = sch56xx_write_virtual_reg(data->addr, in watchdog_start()
354 data->watchdog_output_enable = val; in watchdog_start()
357 val = inb(data->addr + 9); in watchdog_start()
359 outb(0x01, data->addr + 9); in watchdog_start()
362 mutex_unlock(data->io_lock); in watchdog_start()
368 struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev); in watchdog_trigger() local
372 mutex_lock(data->io_lock); in watchdog_trigger()
373 ret = sch56xx_write_virtual_reg(data->addr, SCH56XX_REG_WDOG_PRESET, in watchdog_trigger()
374 data->watchdog_preset); in watchdog_trigger()
375 mutex_unlock(data->io_lock); in watchdog_trigger()
382 struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev); in watchdog_stop() local
386 val = data->watchdog_output_enable & ~SCH56XX_WDOG_OUTPUT_ENABLE; in watchdog_stop()
387 mutex_lock(data->io_lock); in watchdog_stop()
388 ret = sch56xx_write_virtual_reg(data->addr, in watchdog_stop()
390 mutex_unlock(data->io_lock); in watchdog_stop()
394 data->watchdog_output_enable = val; in watchdog_stop()
400 struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev); in watchdog_ref() local
402 kref_get(&data->kref); in watchdog_ref()
407 struct sch56xx_watchdog_data *data = watchdog_get_drvdata(wddev); in watchdog_unref() local
409 kref_put(&data->kref, watchdog_release_resources); in watchdog_unref()
425 struct sch56xx_watchdog_data *data; in sch56xx_watchdog_register() local
445 data = kzalloc(sizeof(struct sch56xx_watchdog_data), GFP_KERNEL); in sch56xx_watchdog_register()
446 if (!data) in sch56xx_watchdog_register()
449 data->addr = addr; in sch56xx_watchdog_register()
450 data->io_lock = io_lock; in sch56xx_watchdog_register()
451 kref_init(&data->kref); in sch56xx_watchdog_register()
453 strlcpy(data->wdinfo.identity, "sch56xx watchdog", in sch56xx_watchdog_register()
454 sizeof(data->wdinfo.identity)); in sch56xx_watchdog_register()
455 data->wdinfo.firmware_version = revision; in sch56xx_watchdog_register()
456 data->wdinfo.options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT; in sch56xx_watchdog_register()
458 data->wdinfo.options |= WDIOF_MAGICCLOSE; in sch56xx_watchdog_register()
460 data->wddev.info = &data->wdinfo; in sch56xx_watchdog_register()
461 data->wddev.ops = &watchdog_ops; in sch56xx_watchdog_register()
462 data->wddev.parent = parent; in sch56xx_watchdog_register()
463 data->wddev.timeout = 60; in sch56xx_watchdog_register()
464 data->wddev.min_timeout = 1; in sch56xx_watchdog_register()
465 data->wddev.max_timeout = 255 * 60; in sch56xx_watchdog_register()
467 set_bit(WDOG_NO_WAY_OUT, &data->wddev.status); in sch56xx_watchdog_register()
469 set_bit(WDOG_ACTIVE, &data->wddev.status); in sch56xx_watchdog_register()
475 data->watchdog_preset = 60; /* seconds */ in sch56xx_watchdog_register()
477 data->watchdog_preset = 1; /* minute */ in sch56xx_watchdog_register()
479 data->watchdog_control = control; in sch56xx_watchdog_register()
480 data->watchdog_output_enable = output_enable; in sch56xx_watchdog_register()
482 watchdog_set_drvdata(&data->wddev, data); in sch56xx_watchdog_register()
483 err = watchdog_register_device(&data->wddev); in sch56xx_watchdog_register()
486 kfree(data); in sch56xx_watchdog_register()
490 return data; in sch56xx_watchdog_register()
494 void sch56xx_watchdog_unregister(struct sch56xx_watchdog_data *data) in sch56xx_watchdog_unregister() argument
496 watchdog_unregister_device(&data->wddev); in sch56xx_watchdog_unregister()
497 kref_put(&data->kref, watchdog_release_resources); in sch56xx_watchdog_unregister()