Lines Matching +full:wakeup +full:- +full:source
1 // SPDX-License-Identifier: GPL-2.0
3 // rcpm.c - Freescale QorIQ RCPM driver
26 * rcpm_pm_prepare - performs device-level tasks associated with power
27 * management, such as programming related to the wakeup source control.
37 struct device_node *np = dev->of_node; in rcpm_pm_prepare()
43 return -EINVAL; in rcpm_pm_prepare()
45 base = rcpm->ippdexpcr_base; in rcpm_pm_prepare()
48 /* Begin with first registered wakeup source */ in rcpm_pm_prepare()
52 if (!ws->dev || !ws->dev->parent) in rcpm_pm_prepare()
55 ret = device_property_read_u32_array(ws->dev->parent, in rcpm_pm_prepare()
56 "fsl,rcpm-wakeup", value, in rcpm_pm_prepare()
57 rcpm->wakeup_cells + 1); in rcpm_pm_prepare()
59 /* Wakeup source should refer to current rcpm device */ in rcpm_pm_prepare()
60 if (ret || (np->phandle != value[0])) in rcpm_pm_prepare()
63 /* Property "#fsl,rcpm-wakeup-cells" of rcpm node defines the in rcpm_pm_prepare()
64 * number of IPPDEXPCR register cells, and "fsl,rcpm-wakeup" in rcpm_pm_prepare()
65 * of wakeup source IP contains an integer array: <phandle to in rcpm_pm_prepare()
71 for (i = 0; i < rcpm->wakeup_cells; i++) in rcpm_pm_prepare()
78 for (i = 0; i < rcpm->wakeup_cells; i++) { in rcpm_pm_prepare()
86 if (rcpm->little_endian) { in rcpm_pm_prepare()
104 struct device *dev = &pdev->dev; in rcpm_probe()
111 return -ENOMEM; in rcpm_probe()
115 return -ENODEV; in rcpm_probe()
117 rcpm->ippdexpcr_base = devm_ioremap_resource(&pdev->dev, r); in rcpm_probe()
118 if (IS_ERR(rcpm->ippdexpcr_base)) { in rcpm_probe()
119 ret = PTR_ERR(rcpm->ippdexpcr_base); in rcpm_probe()
123 rcpm->little_endian = device_property_read_bool( in rcpm_probe()
124 &pdev->dev, "little-endian"); in rcpm_probe()
126 ret = device_property_read_u32(&pdev->dev, in rcpm_probe()
127 "#fsl,rcpm-wakeup-cells", &rcpm->wakeup_cells); in rcpm_probe()
131 dev_set_drvdata(&pdev->dev, rcpm); in rcpm_probe()
137 { .compatible = "fsl,qoriq-rcpm-2.1+", },