Lines Matching +full:secure +full:- +full:monitor
1 // SPDX-License-Identifier: GPL-2.0-only
3 * ARM Secure Monitor Call watchdog driver
10 #include <linux/arm-smccc.h>
45 if (res->a0 == PSCI_RET_NOT_SUPPORTED) in smcwd_call()
46 return -ENODEV; in smcwd_call()
47 if (res->a0 == PSCI_RET_INVALID_PARAMS) in smcwd_call()
48 return -EINVAL; in smcwd_call()
49 if (res->a0 != PSCI_RET_SUCCESS) in smcwd_call()
50 return -EIO; in smcwd_call()
75 wdd->timeout = timeout; in smcwd_set_timeout()
118 wdd = devm_kzalloc(&pdev->dev, sizeof(*wdd), GFP_KERNEL); in smcwd_probe()
120 return -ENOMEM; in smcwd_probe()
123 if (of_property_read_u32(pdev->dev.of_node, "arm,smc-id", in smcwd_probe()
132 wdd->info = &smcwd_info; in smcwd_probe()
135 wdd->ops = &smcwd_ops; in smcwd_probe()
137 wdd->ops = &smcwd_timeleft_ops; in smcwd_probe()
138 wdd->timeout = res.a2; in smcwd_probe()
139 wdd->max_timeout = res.a2; in smcwd_probe()
140 wdd->min_timeout = res.a1; in smcwd_probe()
141 wdd->parent = &pdev->dev; in smcwd_probe()
146 watchdog_init_timeout(wdd, timeout, &pdev->dev); in smcwd_probe()
147 err = smcwd_set_timeout(wdd, wdd->timeout); in smcwd_probe()
151 err = devm_watchdog_register_device(&pdev->dev, wdd); in smcwd_probe()
155 dev_info(&pdev->dev, in smcwd_probe()
157 wdd->timeout, nowayout); in smcwd_probe()
163 { .compatible = "arm,smc-wdt" },
187 MODULE_DESCRIPTION("ARM Secure Monitor Call Watchdog Driver");