* [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver
@ 2015-11-30 10:41 Sascha Hauer
2015-11-30 10:41 ` [PATCH 1/2] dt-bindings: soc: Add supplies for Mediatek SCPSYS unit Sascha Hauer
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Sascha Hauer @ 2015-11-30 10:41 UTC (permalink / raw)
To: linux-arm-kernel
Some power domains on the MT8173 are supplied by controllable external
regulators that must be handled properly. This series adds support for
them.
Sascha
----------------------------------------------------------------
Sascha Hauer (2):
dt-bindings: soc: Add supplies for Mediatek SCPSYS unit
soc: mediatek: SCPSYS: Add regulator support
.../devicetree/bindings/soc/mediatek/scpsys.txt | 12 ++++++++++
drivers/soc/mediatek/mtk-scpsys.c | 27 ++++++++++++++++++++++
2 files changed, 39 insertions(+)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] dt-bindings: soc: Add supplies for Mediatek SCPSYS unit
2015-11-30 10:41 [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver Sascha Hauer
@ 2015-11-30 10:41 ` Sascha Hauer
2015-11-30 16:52 ` Rob Herring
2015-11-30 10:41 ` [PATCH 2/2] soc: mediatek: SCPSYS: Add regulator support Sascha Hauer
2015-12-09 11:30 ` [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver Matthias Brugger
2 siblings, 1 reply; 5+ messages in thread
From: Sascha Hauer @ 2015-11-30 10:41 UTC (permalink / raw)
To: linux-arm-kernel
The power domains in the SCPSYS unit are supplied by regulators. Add the
properties for them to the binding document.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Cc: devicetree at vger.kernel.org
---
Documentation/devicetree/bindings/soc/mediatek/scpsys.txt | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
index a6c8afc..e8f15e3 100644
--- a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
+++ b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
@@ -21,6 +21,18 @@ Required properties:
These are the clocks which hardware needs to be enabled
before enabling certain power domains.
+Optional properties:
+- vdec-supply: Power supply for the vdec power domain
+- venc-supply: Power supply for the venc power domain
+- isp-supply: Power supply for the isp power domain
+- mm-supply: Power supply for the mm power domain
+- venc_lt-supply: Power supply for the venc_lt power domain
+- audio-supply: Power supply for the audio power domain
+- usb-supply: Power supply for the usb power domain
+- mfg_async-supply: Power supply for the mfg_async power domain
+- mfg_2d-supply: Power supply for the mfg_2d power domain
+- mfg-supply: Power supply for the mfg power domain
+
Example:
scpsys: scpsys at 10006000 {
--
2.6.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] soc: mediatek: SCPSYS: Add regulator support
2015-11-30 10:41 [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver Sascha Hauer
2015-11-30 10:41 ` [PATCH 1/2] dt-bindings: soc: Add supplies for Mediatek SCPSYS unit Sascha Hauer
@ 2015-11-30 10:41 ` Sascha Hauer
2015-12-09 11:30 ` [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver Matthias Brugger
2 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2015-11-30 10:41 UTC (permalink / raw)
To: linux-arm-kernel
The power domains are supplied by regulators. Add support for them so
that the regulators are properly turned on before a domain is powered up
and turned off when a domain is powered down.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
drivers/soc/mediatek/mtk-scpsys.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c
index 4d4203c..e425619 100644
--- a/drivers/soc/mediatek/mtk-scpsys.c
+++ b/drivers/soc/mediatek/mtk-scpsys.c
@@ -21,6 +21,7 @@
#include <linux/pm_domain.h>
#include <linux/regmap.h>
#include <linux/soc/mediatek/infracfg.h>
+#include <linux/regulator/consumer.h>
#include <dt-bindings/power/mt8173-power.h>
#define SPM_VDE_PWR_CON 0x0210
@@ -179,6 +180,7 @@ struct scp_domain {
u32 sram_pdn_ack_bits;
u32 bus_prot_mask;
bool active_wakeup;
+ struct regulator *supply;
};
struct scp {
@@ -221,6 +223,12 @@ static int scpsys_power_on(struct generic_pm_domain *genpd)
int ret;
int i;
+ if (scpd->supply) {
+ ret = regulator_enable(scpd->supply);
+ if (ret)
+ return ret;
+ }
+
for (i = 0; i < MAX_CLKS && scpd->clk[i]; i++) {
ret = clk_prepare_enable(scpd->clk[i]);
if (ret) {
@@ -299,6 +307,9 @@ err_pwr_ack:
clk_disable_unprepare(scpd->clk[i]);
}
err_clk:
+ if (scpd->supply)
+ regulator_disable(scpd->supply);
+
dev_err(scp->dev, "Failed to power on domain %s\n", genpd->name);
return ret;
@@ -379,6 +390,9 @@ static int scpsys_power_off(struct generic_pm_domain *genpd)
for (i = 0; i < MAX_CLKS && scpd->clk[i]; i++)
clk_disable_unprepare(scpd->clk[i]);
+ if (scpd->supply)
+ regulator_disable(scpd->supply);
+
return 0;
out:
@@ -448,6 +462,19 @@ static int __init scpsys_probe(struct platform_device *pdev)
return PTR_ERR(scp->infracfg);
}
+ for (i = 0; i < NUM_DOMAINS; i++) {
+ struct scp_domain *scpd = &scp->domains[i];
+ const struct scp_domain_data *data = &scp_domain_data[i];
+
+ scpd->supply = devm_regulator_get_optional(&pdev->dev, data->name);
+ if (IS_ERR(scpd->supply)) {
+ if (PTR_ERR(scpd->supply) == -ENODEV)
+ scpd->supply = NULL;
+ else
+ return PTR_ERR(scpd->supply);
+ }
+ }
+
pd_data->num_domains = NUM_DOMAINS;
for (i = 0; i < NUM_DOMAINS; i++) {
--
2.6.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 1/2] dt-bindings: soc: Add supplies for Mediatek SCPSYS unit
2015-11-30 10:41 ` [PATCH 1/2] dt-bindings: soc: Add supplies for Mediatek SCPSYS unit Sascha Hauer
@ 2015-11-30 16:52 ` Rob Herring
0 siblings, 0 replies; 5+ messages in thread
From: Rob Herring @ 2015-11-30 16:52 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Nov 30, 2015 at 11:41:39AM +0100, Sascha Hauer wrote:
> The power domains in the SCPSYS unit are supplied by regulators. Add the
> properties for them to the binding document.
>
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: devicetree at vger.kernel.org
Acked-by: Rob Herring <robh@kernel.org>
> ---
> Documentation/devicetree/bindings/soc/mediatek/scpsys.txt | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
> index a6c8afc..e8f15e3 100644
> --- a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
> +++ b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
> @@ -21,6 +21,18 @@ Required properties:
> These are the clocks which hardware needs to be enabled
> before enabling certain power domains.
>
> +Optional properties:
> +- vdec-supply: Power supply for the vdec power domain
> +- venc-supply: Power supply for the venc power domain
> +- isp-supply: Power supply for the isp power domain
> +- mm-supply: Power supply for the mm power domain
> +- venc_lt-supply: Power supply for the venc_lt power domain
> +- audio-supply: Power supply for the audio power domain
> +- usb-supply: Power supply for the usb power domain
> +- mfg_async-supply: Power supply for the mfg_async power domain
> +- mfg_2d-supply: Power supply for the mfg_2d power domain
> +- mfg-supply: Power supply for the mfg power domain
> +
> Example:
>
> scpsys: scpsys at 10006000 {
> --
> 2.6.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe devicetree" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver
2015-11-30 10:41 [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver Sascha Hauer
2015-11-30 10:41 ` [PATCH 1/2] dt-bindings: soc: Add supplies for Mediatek SCPSYS unit Sascha Hauer
2015-11-30 10:41 ` [PATCH 2/2] soc: mediatek: SCPSYS: Add regulator support Sascha Hauer
@ 2015-12-09 11:30 ` Matthias Brugger
2 siblings, 0 replies; 5+ messages in thread
From: Matthias Brugger @ 2015-12-09 11:30 UTC (permalink / raw)
To: linux-arm-kernel
On 30/11/15 11:41, Sascha Hauer wrote:
> Some power domains on the MT8173 are supplied by controllable external
> regulators that must be handled properly. This series adds support for
> them.
>
> Sascha
>
> ----------------------------------------------------------------
> Sascha Hauer (2):
> dt-bindings: soc: Add supplies for Mediatek SCPSYS unit
> soc: mediatek: SCPSYS: Add regulator support
>
> .../devicetree/bindings/soc/mediatek/scpsys.txt | 12 ++++++++++
> drivers/soc/mediatek/mtk-scpsys.c | 27 ++++++++++++++++++++++
> 2 files changed, 39 insertions(+)
>
Applied, thanks a lot.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2015-12-09 11:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-30 10:41 [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver Sascha Hauer
2015-11-30 10:41 ` [PATCH 1/2] dt-bindings: soc: Add supplies for Mediatek SCPSYS unit Sascha Hauer
2015-11-30 16:52 ` Rob Herring
2015-11-30 10:41 ` [PATCH 2/2] soc: mediatek: SCPSYS: Add regulator support Sascha Hauer
2015-12-09 11:30 ` [PATCH) soc: mediatek: scpsys: Add regulator support to power domain driver Matthias Brugger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).