From: Sascha Hauer <s.hauer@pengutronix.de> To: linux-rockchip@lists.infradead.org Cc: linux-arm-kernel@lists.infradead.org, Heiko Stuebner <heiko@sntech.de>, Michael Riesch <michael.riesch@wolfvision.net>, kernel@pengutronix.de, Sascha Hauer <s.hauer@pengutronix.de> Subject: [PATCH 3/4] soc: rockchip: power-domain: Add regulator support Date: Fri, 17 Dec 2021 14:09:18 +0100 [thread overview] Message-ID: <20211217130919.3035788-4-s.hauer@pengutronix.de> (raw) In-Reply-To: <20211217130919.3035788-1-s.hauer@pengutronix.de> This patch allows to let a domain be supplied by a regulator which is needed for the GPU on the rk3568-EVB board. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- drivers/soc/rockchip/pm_domains.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c index dcfd3db649f58..e7db888cc226c 100644 --- a/drivers/soc/rockchip/pm_domains.c +++ b/drivers/soc/rockchip/pm_domains.c @@ -15,6 +15,7 @@ #include <linux/of_platform.h> #include <linux/clk.h> #include <linux/regmap.h> +#include <linux/regulator/consumer.h> #include <linux/mfd/syscon.h> #include <dt-bindings/power/px30-power.h> #include <dt-bindings/power/rk3036-power.h> @@ -80,6 +81,7 @@ struct rockchip_pm_domain { u32 *qos_save_regs[MAX_QOS_REGS_NUM]; int num_clks; struct clk_bulk_data *clks; + struct regulator *regulator; }; struct rockchip_pmu { @@ -344,6 +346,14 @@ static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) static int rockchip_pd_power_on(struct generic_pm_domain *domain) { struct rockchip_pm_domain *pd = to_rockchip_pd(domain); + struct rockchip_pmu *pmu = pd->pmu; + int ret; + + ret = regulator_enable(pd->regulator); + if (ret) { + dev_err(pmu->dev, "failed to enable regulator: %d\n", ret); + return ret; + } return rockchip_pd_power(pd, true); } @@ -351,8 +361,15 @@ static int rockchip_pd_power_on(struct generic_pm_domain *domain) static int rockchip_pd_power_off(struct generic_pm_domain *domain) { struct rockchip_pm_domain *pd = to_rockchip_pd(domain); + int ret; - return rockchip_pd_power(pd, false); + ret = rockchip_pd_power(pd, false); + if (ret) + return ret; + + regulator_disable(pd->regulator); + + return 0; } static int rockchip_pd_attach_dev(struct generic_pm_domain *genpd, @@ -500,6 +517,11 @@ static int rockchip_domain_probe(struct platform_device *pdev) pd->info = pd_info; pd->pmu = pd_info->pmu; + pd->regulator = devm_regulator_get(&pdev->dev, "power"); + + if (IS_ERR(pd->regulator)) + return PTR_ERR(pd->regulator); + pd->num_clks = devm_clk_bulk_get_all(&pdev->dev, &pd->clks); if (pd->num_clks < 0) return pd->num_clks; -- 2.30.2 _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip
WARNING: multiple messages have this Message-ID
From: Sascha Hauer <s.hauer@pengutronix.de> To: linux-rockchip@lists.infradead.org Cc: linux-arm-kernel@lists.infradead.org, Heiko Stuebner <heiko@sntech.de>, Michael Riesch <michael.riesch@wolfvision.net>, kernel@pengutronix.de, Sascha Hauer <s.hauer@pengutronix.de> Subject: [PATCH 3/4] soc: rockchip: power-domain: Add regulator support Date: Fri, 17 Dec 2021 14:09:18 +0100 [thread overview] Message-ID: <20211217130919.3035788-4-s.hauer@pengutronix.de> (raw) In-Reply-To: <20211217130919.3035788-1-s.hauer@pengutronix.de> This patch allows to let a domain be supplied by a regulator which is needed for the GPU on the rk3568-EVB board. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- drivers/soc/rockchip/pm_domains.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c index dcfd3db649f58..e7db888cc226c 100644 --- a/drivers/soc/rockchip/pm_domains.c +++ b/drivers/soc/rockchip/pm_domains.c @@ -15,6 +15,7 @@ #include <linux/of_platform.h> #include <linux/clk.h> #include <linux/regmap.h> +#include <linux/regulator/consumer.h> #include <linux/mfd/syscon.h> #include <dt-bindings/power/px30-power.h> #include <dt-bindings/power/rk3036-power.h> @@ -80,6 +81,7 @@ struct rockchip_pm_domain { u32 *qos_save_regs[MAX_QOS_REGS_NUM]; int num_clks; struct clk_bulk_data *clks; + struct regulator *regulator; }; struct rockchip_pmu { @@ -344,6 +346,14 @@ static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) static int rockchip_pd_power_on(struct generic_pm_domain *domain) { struct rockchip_pm_domain *pd = to_rockchip_pd(domain); + struct rockchip_pmu *pmu = pd->pmu; + int ret; + + ret = regulator_enable(pd->regulator); + if (ret) { + dev_err(pmu->dev, "failed to enable regulator: %d\n", ret); + return ret; + } return rockchip_pd_power(pd, true); } @@ -351,8 +361,15 @@ static int rockchip_pd_power_on(struct generic_pm_domain *domain) static int rockchip_pd_power_off(struct generic_pm_domain *domain) { struct rockchip_pm_domain *pd = to_rockchip_pd(domain); + int ret; - return rockchip_pd_power(pd, false); + ret = rockchip_pd_power(pd, false); + if (ret) + return ret; + + regulator_disable(pd->regulator); + + return 0; } static int rockchip_pd_attach_dev(struct generic_pm_domain *genpd, @@ -500,6 +517,11 @@ static int rockchip_domain_probe(struct platform_device *pdev) pd->info = pd_info; pd->pmu = pd_info->pmu; + pd->regulator = devm_regulator_get(&pdev->dev, "power"); + + if (IS_ERR(pd->regulator)) + return PTR_ERR(pd->regulator); + pd->num_clks = devm_clk_bulk_get_all(&pdev->dev, &pd->clks); if (pd->num_clks < 0) return pd->num_clks; -- 2.30.2 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-12-17 13:10 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-17 13:09 [PATCH 0/4] " Sascha Hauer 2021-12-17 13:09 ` Sascha Hauer 2021-12-17 13:09 ` [PATCH 1/4] soc: rockchip: power-domain: register device for each domain Sascha Hauer 2021-12-17 13:09 ` Sascha Hauer 2021-12-17 13:09 ` [PATCH 2/4] soc: rockchip: power-domain: Use devm_clk_bulk_get_all() Sascha Hauer 2021-12-17 13:09 ` Sascha Hauer 2021-12-17 13:09 ` Sascha Hauer [this message] 2021-12-17 13:09 ` [PATCH 3/4] soc: rockchip: power-domain: Add regulator support Sascha Hauer 2021-12-20 9:44 ` Sascha Hauer 2021-12-20 9:44 ` Sascha Hauer 2021-12-20 10:46 ` Robin Murphy 2021-12-20 10:46 ` Robin Murphy 2021-12-20 12:56 ` Mark Brown 2021-12-20 12:56 ` Mark Brown 2021-12-20 12:53 ` Mark Brown 2021-12-20 12:53 ` Mark Brown 2021-12-22 10:40 ` Sascha Hauer 2021-12-22 10:40 ` Sascha Hauer 2021-12-22 12:54 ` Robin Murphy 2021-12-22 12:54 ` Robin Murphy 2021-12-22 13:00 ` Mark Brown 2021-12-22 13:00 ` Mark Brown 2021-12-22 13:19 ` Robin Murphy 2021-12-22 13:19 ` Robin Murphy 2021-12-22 13:25 ` Mark Brown 2021-12-22 13:25 ` Mark Brown 2021-12-22 13:29 ` Michael Riesch 2021-12-22 13:29 ` Michael Riesch 2021-12-22 13:37 ` Michael Riesch 2021-12-22 13:40 ` Mark Brown 2021-12-22 13:40 ` Mark Brown 2022-02-23 8:51 ` Michael Riesch 2022-02-23 8:51 ` Michael Riesch 2021-12-17 13:09 ` [PATCH 4/4] dt-bindings: power: rockchip: Add power-supply to domain nodes Sascha Hauer 2021-12-17 13:09 ` Sascha Hauer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211217130919.3035788-4-s.hauer@pengutronix.de \ --to=s.hauer@pengutronix.de \ --cc=heiko@sntech.de \ --cc=kernel@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-rockchip@lists.infradead.org \ --cc=michael.riesch@wolfvision.net \ --subject='Re: [PATCH 3/4] soc: rockchip: power-domain: Add regulator support' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.