Lines Matching refs:edev
114 static inline void esb_unlock_registers(struct esb_dev *edev) in esb_unlock_registers() argument
116 writew(ESB_UNLOCK1, ESB_RELOAD_REG(edev)); in esb_unlock_registers()
117 writew(ESB_UNLOCK2, ESB_RELOAD_REG(edev)); in esb_unlock_registers()
122 struct esb_dev *edev = to_esb_dev(wdd); in esb_timer_start() local
126 esb_unlock_registers(edev); in esb_timer_start()
127 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG(edev)); in esb_timer_start()
130 pci_write_config_byte(edev->pdev, ESB_LOCK_REG, val); in esb_timer_start()
136 struct esb_dev *edev = to_esb_dev(wdd); in esb_timer_stop() local
140 esb_unlock_registers(edev); in esb_timer_stop()
141 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG(edev)); in esb_timer_stop()
143 pci_write_config_byte(edev->pdev, ESB_LOCK_REG, 0x0); in esb_timer_stop()
144 pci_read_config_byte(edev->pdev, ESB_LOCK_REG, &val); in esb_timer_stop()
152 struct esb_dev *edev = to_esb_dev(wdd); in esb_timer_keepalive() local
154 esb_unlock_registers(edev); in esb_timer_keepalive()
155 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG(edev)); in esb_timer_keepalive()
163 struct esb_dev *edev = to_esb_dev(wdd); in esb_timer_set_heartbeat() local
173 esb_unlock_registers(edev); in esb_timer_set_heartbeat()
174 writel(val, ESB_TIMER1_REG(edev)); in esb_timer_set_heartbeat()
177 esb_unlock_registers(edev); in esb_timer_set_heartbeat()
178 writel(val, ESB_TIMER2_REG(edev)); in esb_timer_set_heartbeat()
181 esb_unlock_registers(edev); in esb_timer_set_heartbeat()
182 writew(ESB_WDT_RELOAD, ESB_RELOAD_REG(edev)); in esb_timer_set_heartbeat()
221 static unsigned char esb_getdevice(struct esb_dev *edev) in esb_getdevice() argument
223 if (pci_enable_device(edev->pdev)) { in esb_getdevice()
224 dev_err(&edev->pdev->dev, "failed to enable device\n"); in esb_getdevice()
228 if (pci_request_region(edev->pdev, 0, ESB_MODULE_NAME)) { in esb_getdevice()
229 dev_err(&edev->pdev->dev, "failed to request region\n"); in esb_getdevice()
233 edev->base = pci_ioremap_bar(edev->pdev, 0); in esb_getdevice()
234 if (edev->base == NULL) { in esb_getdevice()
236 dev_err(&edev->pdev->dev, "failed to get BASEADDR\n"); in esb_getdevice()
241 dev_set_drvdata(&edev->pdev->dev, edev); in esb_getdevice()
245 pci_release_region(edev->pdev, 0); in esb_getdevice()
247 pci_disable_device(edev->pdev); in esb_getdevice()
252 static void esb_initdevice(struct esb_dev *edev) in esb_initdevice() argument
269 pci_write_config_word(edev->pdev, ESB_CONFIG_REG, 0x0003); in esb_initdevice()
272 pci_read_config_byte(edev->pdev, ESB_LOCK_REG, &val1); in esb_initdevice()
274 dev_warn(&edev->pdev->dev, "nowayout already set\n"); in esb_initdevice()
277 pci_write_config_byte(edev->pdev, ESB_LOCK_REG, 0x00); in esb_initdevice()
280 esb_unlock_registers(edev); in esb_initdevice()
281 val2 = readw(ESB_RELOAD_REG(edev)); in esb_initdevice()
283 edev->wdd.bootstatus = WDIOF_CARDRESET; in esb_initdevice()
286 esb_unlock_registers(edev); in esb_initdevice()
287 writew((ESB_WDT_TIMEOUT | ESB_WDT_RELOAD), ESB_RELOAD_REG(edev)); in esb_initdevice()
290 esb_timer_set_heartbeat(&edev->wdd, edev->wdd.timeout); in esb_initdevice()
296 struct esb_dev *edev; in esb_probe() local
299 edev = devm_kzalloc(&pdev->dev, sizeof(*edev), GFP_KERNEL); in esb_probe()
300 if (!edev) in esb_probe()
304 edev->pdev = pdev; in esb_probe()
305 if (!esb_getdevice(edev)) in esb_probe()
309 edev->wdd.info = &esb_info; in esb_probe()
310 edev->wdd.ops = &esb_ops; in esb_probe()
311 edev->wdd.min_timeout = ESB_HEARTBEAT_MIN; in esb_probe()
312 edev->wdd.max_timeout = ESB_HEARTBEAT_MAX; in esb_probe()
313 edev->wdd.timeout = ESB_HEARTBEAT_DEFAULT; in esb_probe()
314 if (watchdog_init_timeout(&edev->wdd, heartbeat, NULL)) in esb_probe()
317 ", using %u\n", edev->wdd.timeout); in esb_probe()
318 watchdog_set_nowayout(&edev->wdd, nowayout); in esb_probe()
319 watchdog_stop_on_reboot(&edev->wdd); in esb_probe()
320 watchdog_stop_on_unregister(&edev->wdd); in esb_probe()
321 esb_initdevice(edev); in esb_probe()
324 ret = watchdog_register_device(&edev->wdd); in esb_probe()
332 edev->base, edev->wdd.timeout, nowayout); in esb_probe()
336 iounmap(edev->base); in esb_probe()
337 pci_release_region(edev->pdev, 0); in esb_probe()
338 pci_disable_device(edev->pdev); in esb_probe()
344 struct esb_dev *edev = dev_get_drvdata(&pdev->dev); in esb_remove() local
346 watchdog_unregister_device(&edev->wdd); in esb_remove()
347 iounmap(edev->base); in esb_remove()
348 pci_release_region(edev->pdev, 0); in esb_remove()
349 pci_disable_device(edev->pdev); in esb_remove()