mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 07:04:24 +00:00
firmware: imx: scu-pd: do not power off console domain
Do not power off console domain in runtime pm. Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
parent
1168935b96
commit
893cfb9973
1 changed files with 27 additions and 1 deletions
|
@ -86,6 +86,8 @@ struct imx_sc_pd_soc {
|
|||
u8 num_ranges;
|
||||
};
|
||||
|
||||
static int imx_con_rsrc;
|
||||
|
||||
static const struct imx_sc_pd_range imx8qxp_scu_pd_ranges[] = {
|
||||
/* LSIO SS */
|
||||
{ "pwm", IMX_SC_R_PWM_0, 8, true, 0 },
|
||||
|
@ -207,6 +209,23 @@ to_imx_sc_pd(struct generic_pm_domain *genpd)
|
|||
return container_of(genpd, struct imx_sc_pm_domain, pd);
|
||||
}
|
||||
|
||||
static void imx_sc_pd_get_console_rsrc(void)
|
||||
{
|
||||
struct of_phandle_args specs;
|
||||
int ret;
|
||||
|
||||
if (!of_stdout)
|
||||
return;
|
||||
|
||||
ret = of_parse_phandle_with_args(of_stdout, "power-domains",
|
||||
"#power-domain-cells",
|
||||
0, &specs);
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
imx_con_rsrc = specs.args[0];
|
||||
}
|
||||
|
||||
static int imx_sc_pd_power(struct generic_pm_domain *domain, bool power_on)
|
||||
{
|
||||
struct imx_sc_msg_req_set_resource_power_mode msg;
|
||||
|
@ -267,6 +286,7 @@ imx_scu_add_pm_domain(struct device *dev, int idx,
|
|||
const struct imx_sc_pd_range *pd_ranges)
|
||||
{
|
||||
struct imx_sc_pm_domain *sc_pd;
|
||||
bool is_off = true;
|
||||
int ret;
|
||||
|
||||
if (!imx_sc_rm_is_resource_owned(pm_ipc_handle, pd_ranges->rsrc + idx))
|
||||
|
@ -288,6 +308,10 @@ imx_scu_add_pm_domain(struct device *dev, int idx,
|
|||
"%s", pd_ranges->name);
|
||||
|
||||
sc_pd->pd.name = sc_pd->name;
|
||||
if (imx_con_rsrc == sc_pd->rsrc) {
|
||||
sc_pd->pd.flags = GENPD_FLAG_RPM_ALWAYS_ON;
|
||||
is_off = false;
|
||||
}
|
||||
|
||||
if (sc_pd->rsrc >= IMX_SC_R_LAST) {
|
||||
dev_warn(dev, "invalid pd %s rsrc id %d found",
|
||||
|
@ -297,7 +321,7 @@ imx_scu_add_pm_domain(struct device *dev, int idx,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ret = pm_genpd_init(&sc_pd->pd, NULL, true);
|
||||
ret = pm_genpd_init(&sc_pd->pd, NULL, is_off);
|
||||
if (ret) {
|
||||
dev_warn(dev, "failed to init pd %s rsrc id %d",
|
||||
sc_pd->name, sc_pd->rsrc);
|
||||
|
@ -363,6 +387,8 @@ static int imx_sc_pd_probe(struct platform_device *pdev)
|
|||
if (!pd_soc)
|
||||
return -ENODEV;
|
||||
|
||||
imx_sc_pd_get_console_rsrc();
|
||||
|
||||
return imx_scu_init_pm_domains(&pdev->dev, pd_soc);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue