Lines Matching refs:data

107 	struct ltc2952_poweroff *data = to_ltc2952(timer, timer_wde);  in ltc2952_poweroff_timer_wde()  local
109 if (data->kernel_panic) in ltc2952_poweroff_timer_wde()
112 state = gpiod_get_value(data->gpio_watchdog); in ltc2952_poweroff_timer_wde()
113 gpiod_set_value(data->gpio_watchdog, !state); in ltc2952_poweroff_timer_wde()
116 overruns = hrtimer_forward(timer, now, data->wde_interval); in ltc2952_poweroff_timer_wde()
121 static void ltc2952_poweroff_start_wde(struct ltc2952_poweroff *data) in ltc2952_poweroff_start_wde() argument
123 hrtimer_start(&data->timer_wde, data->wde_interval, HRTIMER_MODE_REL); in ltc2952_poweroff_start_wde()
129 struct ltc2952_poweroff *data = to_ltc2952(timer, timer_trigger); in ltc2952_poweroff_timer_trigger() local
131 ltc2952_poweroff_start_wde(data); in ltc2952_poweroff_timer_trigger()
132 dev_info(data->dev, "executing shutdown\n"); in ltc2952_poweroff_timer_trigger()
149 struct ltc2952_poweroff *data = dev_id; in ltc2952_poweroff_handler() local
151 if (data->kernel_panic || hrtimer_active(&data->timer_wde)) { in ltc2952_poweroff_handler()
156 if (gpiod_get_value(data->gpio_trigger)) { in ltc2952_poweroff_handler()
157 hrtimer_start(&data->timer_trigger, data->trigger_delay, in ltc2952_poweroff_handler()
160 hrtimer_cancel(&data->timer_trigger); in ltc2952_poweroff_handler()
171 static void ltc2952_poweroff_default(struct ltc2952_poweroff *data) in ltc2952_poweroff_default() argument
173 data->wde_interval = ktime_set(0, 300L*1E6L); in ltc2952_poweroff_default()
174 data->trigger_delay = ktime_set(2, 500L*1E6L); in ltc2952_poweroff_default()
176 hrtimer_init(&data->timer_trigger, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in ltc2952_poweroff_default()
177 data->timer_trigger.function = ltc2952_poweroff_timer_trigger; in ltc2952_poweroff_default()
179 hrtimer_init(&data->timer_wde, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in ltc2952_poweroff_default()
180 data->timer_wde.function = ltc2952_poweroff_timer_wde; in ltc2952_poweroff_default()
186 struct ltc2952_poweroff *data = platform_get_drvdata(pdev); in ltc2952_poweroff_init() local
188 ltc2952_poweroff_default(data); in ltc2952_poweroff_init()
190 data->gpio_watchdog = devm_gpiod_get(&pdev->dev, "watchdog", in ltc2952_poweroff_init()
192 if (IS_ERR(data->gpio_watchdog)) { in ltc2952_poweroff_init()
193 ret = PTR_ERR(data->gpio_watchdog); in ltc2952_poweroff_init()
198 data->gpio_kill = devm_gpiod_get(&pdev->dev, "kill", GPIOD_OUT_LOW); in ltc2952_poweroff_init()
199 if (IS_ERR(data->gpio_kill)) { in ltc2952_poweroff_init()
200 ret = PTR_ERR(data->gpio_kill); in ltc2952_poweroff_init()
205 data->gpio_trigger = devm_gpiod_get(&pdev->dev, "trigger", GPIOD_IN); in ltc2952_poweroff_init()
206 if (IS_ERR(data->gpio_trigger)) { in ltc2952_poweroff_init()
212 if (PTR_ERR(data->gpio_trigger) != -ENOENT) in ltc2952_poweroff_init()
215 data->gpio_trigger = NULL; in ltc2952_poweroff_init()
218 if (devm_request_irq(&pdev->dev, gpiod_to_irq(data->gpio_trigger), in ltc2952_poweroff_init()
222 data)) { in ltc2952_poweroff_init()
238 if (data->gpio_trigger) { in ltc2952_poweroff_init()
241 devm_gpiod_put(&pdev->dev, data->gpio_trigger); in ltc2952_poweroff_init()
242 data->gpio_trigger = NULL; in ltc2952_poweroff_init()
246 ltc2952_poweroff_start_wde(data); in ltc2952_poweroff_init()
255 struct ltc2952_poweroff *data = to_ltc2952(nb, panic_notifier); in ltc2952_poweroff_notify_panic() local
257 data->kernel_panic = true; in ltc2952_poweroff_notify_panic()
264 struct ltc2952_poweroff *data; in ltc2952_poweroff_probe() local
271 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in ltc2952_poweroff_probe()
272 if (!data) in ltc2952_poweroff_probe()
275 data->dev = &pdev->dev; in ltc2952_poweroff_probe()
276 platform_set_drvdata(pdev, data); in ltc2952_poweroff_probe()
283 ltc2952_data = data; in ltc2952_poweroff_probe()
286 data->panic_notifier.notifier_call = ltc2952_poweroff_notify_panic; in ltc2952_poweroff_probe()
288 &data->panic_notifier); in ltc2952_poweroff_probe()
296 struct ltc2952_poweroff *data = platform_get_drvdata(pdev); in ltc2952_poweroff_remove() local
299 hrtimer_cancel(&data->timer_trigger); in ltc2952_poweroff_remove()
300 hrtimer_cancel(&data->timer_wde); in ltc2952_poweroff_remove()
302 &data->panic_notifier); in ltc2952_poweroff_remove()