Lines Matching +full:wakeup +full:- +full:source
1 // SPDX-License-Identifier: GPL-2.0
3 // rcpm.c - Freescale QorIQ RCPM driver
5 // Copyright 2019-2020 NXP
34 np = of_find_compatible_node(NULL, NULL, "fsl,ls1021a-scfg"); in copy_ippdexpcr1_setting()
49 * rcpm_pm_prepare - performs device-level tasks associated with power
50 * management, such as programming related to the wakeup source control.
60 struct device_node *np = dev->of_node; in rcpm_pm_prepare()
66 return -EINVAL; in rcpm_pm_prepare()
68 base = rcpm->ippdexpcr_base; in rcpm_pm_prepare()
71 /* Begin with first registered wakeup source */ in rcpm_pm_prepare()
75 if (!ws->dev || !ws->dev->parent) in rcpm_pm_prepare()
78 ret = device_property_read_u32_array(ws->dev->parent, in rcpm_pm_prepare()
79 "fsl,rcpm-wakeup", value, in rcpm_pm_prepare()
80 rcpm->wakeup_cells + 1); in rcpm_pm_prepare()
86 * For DT mode, would handle devices with "fsl,rcpm-wakeup" in rcpm_pm_prepare()
92 if (is_of_node(dev->fwnode)) in rcpm_pm_prepare()
93 if (np->phandle != value[0]) in rcpm_pm_prepare()
96 /* Property "#fsl,rcpm-wakeup-cells" of rcpm node defines the in rcpm_pm_prepare()
97 * number of IPPDEXPCR register cells, and "fsl,rcpm-wakeup" in rcpm_pm_prepare()
98 * of wakeup source IP contains an integer array: <phandle to in rcpm_pm_prepare()
104 for (i = 0; i < rcpm->wakeup_cells; i++) in rcpm_pm_prepare()
111 for (i = 0; i < rcpm->wakeup_cells; i++) { in rcpm_pm_prepare()
119 if (rcpm->little_endian) { in rcpm_pm_prepare()
127 * Workaround of errata A-008646 on SoC LS1021A: in rcpm_pm_prepare()
135 if (of_device_is_compatible(np, "fsl,ls1021a-rcpm")) in rcpm_pm_prepare()
148 struct device *dev = &pdev->dev; in rcpm_probe()
154 return -ENOMEM; in rcpm_probe()
156 rcpm->ippdexpcr_base = devm_platform_ioremap_resource(pdev, 0); in rcpm_probe()
157 if (IS_ERR(rcpm->ippdexpcr_base)) { in rcpm_probe()
158 ret = PTR_ERR(rcpm->ippdexpcr_base); in rcpm_probe()
162 rcpm->little_endian = device_property_read_bool( in rcpm_probe()
163 &pdev->dev, "little-endian"); in rcpm_probe()
165 ret = device_property_read_u32(&pdev->dev, in rcpm_probe()
166 "#fsl,rcpm-wakeup-cells", &rcpm->wakeup_cells); in rcpm_probe()
170 dev_set_drvdata(&pdev->dev, rcpm); in rcpm_probe()
176 { .compatible = "fsl,qoriq-rcpm-2.1+", },