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()
50 * rcpm_pm_prepare - performs device-level tasks associated with power
51 * management, such as programming related to the wakeup source control.
61 struct device_node *np = dev->of_node; in rcpm_pm_prepare()
67 return -EINVAL; in rcpm_pm_prepare()
69 base = rcpm->ippdexpcr_base; in rcpm_pm_prepare()
72 /* Begin with first registered wakeup source */ in rcpm_pm_prepare()
76 if (!ws->dev || !ws->dev->parent) in rcpm_pm_prepare()
79 ret = device_property_read_u32_array(ws->dev->parent, in rcpm_pm_prepare()
80 "fsl,rcpm-wakeup", value, in rcpm_pm_prepare()
81 rcpm->wakeup_cells + 1); in rcpm_pm_prepare()
87 * For DT mode, would handle devices with "fsl,rcpm-wakeup" in rcpm_pm_prepare()
93 if (is_of_node(dev->fwnode)) in rcpm_pm_prepare()
94 if (np->phandle != value[0]) in rcpm_pm_prepare()
97 /* Property "#fsl,rcpm-wakeup-cells" of rcpm node defines the in rcpm_pm_prepare()
98 * number of IPPDEXPCR register cells, and "fsl,rcpm-wakeup" in rcpm_pm_prepare()
99 * of wakeup source IP contains an integer array: <phandle to in rcpm_pm_prepare()
105 for (i = 0; i < rcpm->wakeup_cells; i++) in rcpm_pm_prepare()
112 for (i = 0; i < rcpm->wakeup_cells; i++) { in rcpm_pm_prepare()
120 if (rcpm->little_endian) { in rcpm_pm_prepare()
128 * Workaround of errata A-008646 on SoC LS1021A: in rcpm_pm_prepare()
136 if (of_device_is_compatible(np, "fsl,ls1021a-rcpm")) in rcpm_pm_prepare()
149 struct device *dev = &pdev->dev; in rcpm_probe()
155 return -ENOMEM; in rcpm_probe()
157 rcpm->ippdexpcr_base = devm_platform_ioremap_resource(pdev, 0); in rcpm_probe()
158 if (IS_ERR(rcpm->ippdexpcr_base)) { in rcpm_probe()
159 ret = PTR_ERR(rcpm->ippdexpcr_base); in rcpm_probe()
163 rcpm->little_endian = device_property_read_bool( in rcpm_probe()
164 &pdev->dev, "little-endian"); in rcpm_probe()
166 ret = device_property_read_u32(&pdev->dev, in rcpm_probe()
167 "#fsl,rcpm-wakeup-cells", &rcpm->wakeup_cells); in rcpm_probe()
171 dev_set_drvdata(&pdev->dev, rcpm); in rcpm_probe()
177 { .compatible = "fsl,qoriq-rcpm-2.1+", },