staging: board: Migrate away from __pm_genpd_name_add_device()
The named genpd APIs are deprecated. Hence convert the board staging code from using genpd names to DT node paths. For now this supports PM domains with "#power-domain-cells = <0>" only. Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
30e7a65b3f
commit
f33b77408a
2 changed files with 36 additions and 2 deletions
|
@ -91,7 +91,7 @@ static const struct board_staging_dev armadillo800eva_devices[] __initconst = {
|
||||||
.pdev = &lcdc0_device,
|
.pdev = &lcdc0_device,
|
||||||
.clocks = lcdc0_clocks,
|
.clocks = lcdc0_clocks,
|
||||||
.nclocks = ARRAY_SIZE(lcdc0_clocks),
|
.nclocks = ARRAY_SIZE(lcdc0_clocks),
|
||||||
.domain = "a4lc",
|
.domain = "/system-controller@e6180000/pm-domains/c5/a4lc@1"
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -135,6 +135,40 @@ int __init board_staging_register_clock(const struct board_staging_clk *bsc)
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM_GENERIC_DOMAINS_OF
|
||||||
|
static int board_staging_add_dev_domain(struct platform_device *pdev,
|
||||||
|
const char *domain)
|
||||||
|
{
|
||||||
|
struct of_phandle_args pd_args;
|
||||||
|
struct generic_pm_domain *pd;
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
|
np = of_find_node_by_path(domain);
|
||||||
|
if (!np) {
|
||||||
|
pr_err("Cannot find domain node %s\n", domain);
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
pd_args.np = np;
|
||||||
|
pd_args.args_count = 0;
|
||||||
|
pd = of_genpd_get_from_provider(&pd_args);
|
||||||
|
if (IS_ERR(pd)) {
|
||||||
|
pr_err("Cannot find genpd %s (%ld)\n", domain, PTR_ERR(pd));
|
||||||
|
return PTR_ERR(pd);
|
||||||
|
|
||||||
|
}
|
||||||
|
pr_debug("Found genpd %s for device %s\n", pd->name, pdev->name);
|
||||||
|
|
||||||
|
return pm_genpd_add_device(pd, &pdev->dev);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline int board_staging_add_dev_domain(struct platform_device *pdev,
|
||||||
|
const char *domain)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int __init board_staging_register_device(const struct board_staging_dev *dev)
|
int __init board_staging_register_device(const struct board_staging_dev *dev)
|
||||||
{
|
{
|
||||||
struct platform_device *pdev = dev->pdev;
|
struct platform_device *pdev = dev->pdev;
|
||||||
|
@ -161,7 +195,7 @@ int __init board_staging_register_device(const struct board_staging_dev *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev->domain)
|
if (dev->domain)
|
||||||
__pm_genpd_name_add_device(dev->domain, &pdev->dev, NULL);
|
board_staging_add_dev_domain(pdev, dev->domain);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue