Lines Matching +full:reboot +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0
2 // Copyright (c) 2017-18 Linaro Limited
11 #include <linux/reboot.h>
12 #include <linux/reboot-mode.h>
24 static int pm8916_reboot_mode_write(struct reboot_mode_driver *reboot, in pm8916_reboot_mode_write() argument
28 (reboot, struct pm8916_pon, reboot_mode); in pm8916_reboot_mode_write()
31 ret = regmap_update_bits(pon->regmap, in pm8916_reboot_mode_write()
32 pon->baseaddr + PON_SOFT_RB_SPARE, in pm8916_reboot_mode_write()
35 dev_err(pon->dev, "update reboot mode bits failed\n"); in pm8916_reboot_mode_write()
45 pon = devm_kzalloc(&pdev->dev, sizeof(*pon), GFP_KERNEL); in pm8916_pon_probe()
47 return -ENOMEM; in pm8916_pon_probe()
49 pon->dev = &pdev->dev; in pm8916_pon_probe()
51 pon->regmap = dev_get_regmap(pdev->dev.parent, NULL); in pm8916_pon_probe()
52 if (!pon->regmap) { in pm8916_pon_probe()
53 dev_err(&pdev->dev, "failed to locate regmap\n"); in pm8916_pon_probe()
54 return -ENODEV; in pm8916_pon_probe()
57 error = of_property_read_u32(pdev->dev.of_node, "reg", in pm8916_pon_probe()
58 &pon->baseaddr); in pm8916_pon_probe()
62 pon->reboot_mode.dev = &pdev->dev; in pm8916_pon_probe()
63 pon->reboot_mode.write = pm8916_reboot_mode_write; in pm8916_pon_probe()
64 error = devm_reboot_mode_register(&pdev->dev, &pon->reboot_mode); in pm8916_pon_probe()
66 dev_err(&pdev->dev, "can't register reboot mode\n"); in pm8916_pon_probe()
72 return devm_of_platform_populate(&pdev->dev); in pm8916_pon_probe()
76 { .compatible = "qcom,pm8916-pon" },
84 .name = "pm8916-pon",