Lines Matching +full:pm8916 +full:- +full:pon

1 // SPDX-License-Identifier: GPL-2.0
2 // Copyright (c) 2017-18 Linaro Limited
12 #include <linux/reboot-mode.h>
31 struct pm8916_pon *pon = container_of in pm8916_reboot_mode_write() local
35 ret = regmap_update_bits(pon->regmap, in pm8916_reboot_mode_write()
36 pon->baseaddr + PON_SOFT_RB_SPARE, in pm8916_reboot_mode_write()
37 GENMASK(7, pon->reason_shift), in pm8916_reboot_mode_write()
38 magic << pon->reason_shift); in pm8916_reboot_mode_write()
40 dev_err(pon->dev, "update reboot mode bits failed\n"); in pm8916_reboot_mode_write()
47 struct pm8916_pon *pon; in pm8916_pon_probe() local
50 pon = devm_kzalloc(&pdev->dev, sizeof(*pon), GFP_KERNEL); in pm8916_pon_probe()
51 if (!pon) in pm8916_pon_probe()
52 return -ENOMEM; in pm8916_pon_probe()
54 pon->dev = &pdev->dev; in pm8916_pon_probe()
56 pon->regmap = dev_get_regmap(pdev->dev.parent, NULL); in pm8916_pon_probe()
57 if (!pon->regmap) { in pm8916_pon_probe()
58 dev_err(&pdev->dev, "failed to locate regmap\n"); in pm8916_pon_probe()
59 return -ENODEV; in pm8916_pon_probe()
62 error = of_property_read_u32(pdev->dev.of_node, "reg", in pm8916_pon_probe()
63 &pon->baseaddr); in pm8916_pon_probe()
67 pon->reboot_mode.dev = &pdev->dev; in pm8916_pon_probe()
68 pon->reason_shift = (long)of_device_get_match_data(&pdev->dev); in pm8916_pon_probe()
69 pon->reboot_mode.write = pm8916_reboot_mode_write; in pm8916_pon_probe()
70 error = devm_reboot_mode_register(&pdev->dev, &pon->reboot_mode); in pm8916_pon_probe()
72 dev_err(&pdev->dev, "can't register reboot mode\n"); in pm8916_pon_probe()
76 platform_set_drvdata(pdev, pon); in pm8916_pon_probe()
78 return devm_of_platform_populate(&pdev->dev); in pm8916_pon_probe()
82 { .compatible = "qcom,pm8916-pon", .data = (void *)GEN1_REASON_SHIFT },
83 { .compatible = "qcom,pms405-pon", .data = (void *)GEN1_REASON_SHIFT },
84 { .compatible = "qcom,pm8998-pon", .data = (void *)GEN2_REASON_SHIFT },
85 { .compatible = "qcom,pmk8350-pon", .data = (void *)GEN2_REASON_SHIFT },
93 .name = "pm8916-pon",
99 MODULE_DESCRIPTION("pm8916 Power On driver");