* [PATCH v2 RESEND 1/4] arm/exynos: add asynchronous bridge clock bindings
2015-03-12 13:37 [PATCH v2 RESEND 0/4] Fix power domains handling on exynos542x Andrzej Hajda
@ 2015-03-12 13:37 ` Andrzej Hajda
2015-03-12 13:37 ` [PATCH v2 RESEND 2/4] arm/exynos/pm_domains: add support for async-bridge clocks Andrzej Hajda
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Andrzej Hajda @ 2015-03-12 13:37 UTC (permalink / raw)
To: Kukjin Kim
Cc: devicetree, linux-samsung-soc, Liquid.Acid, linux-kernel,
dri-devel, Andrzej Hajda, Kyungmin Park, javier.martinez,
linux-arm-kernel, Marek Szyprowski
The patch adds bindings for clocks required by async-bridges
present in the particular power domain.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
Documentation/devicetree/bindings/arm/exynos/power_domain.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
index 1e09703..5da38c5 100644
--- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
+++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt
@@ -22,6 +22,9 @@ Optional Properties:
- pclkN, clkN: Pairs of parent of input clock and input clock to the
devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
are supported currently.
+ - asbN: Clocks required by asynchronous bridges (ASB) present in
+ the power domain. These clock should be enabled during power
+ domain on/off operations.
- power-domains: phandle pointing to the parent power domain, for more details
see Documentation/devicetree/bindings/power/power_domain.txt
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 RESEND 2/4] arm/exynos/pm_domains: add support for async-bridge clocks
2015-03-12 13:37 [PATCH v2 RESEND 0/4] Fix power domains handling on exynos542x Andrzej Hajda
2015-03-12 13:37 ` [PATCH v2 RESEND 1/4] arm/exynos: add asynchronous bridge clock bindings Andrzej Hajda
@ 2015-03-12 13:37 ` Andrzej Hajda
2015-03-12 13:37 ` [PATCH v2 RESEND 3/4] ARM: dts: exynos5420: add async-bridge clocks to disp1 power domain Andrzej Hajda
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Andrzej Hajda @ 2015-03-12 13:37 UTC (permalink / raw)
To: Kukjin Kim
Cc: devicetree, linux-samsung-soc, Liquid.Acid, linux-kernel,
dri-devel, Andrzej Hajda, Kyungmin Park, javier.martinez,
linux-arm-kernel, Marek Szyprowski
Since Exynos5420 there are async-bridges (ASB) between different IPs. These
bridges must be operational during power domain on/off, ie. clocks used
by these bridges should be enabled.
This patch enabled these clocks during domain on/off.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
---
arch/arm/mach-exynos/pm_domains.c | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c
index 37266a8..507dad0 100644
--- a/arch/arm/mach-exynos/pm_domains.c
+++ b/arch/arm/mach-exynos/pm_domains.c
@@ -37,6 +37,7 @@ struct exynos_pm_domain {
struct clk *oscclk;
struct clk *clk[MAX_CLK_PER_DOMAIN];
struct clk *pclk[MAX_CLK_PER_DOMAIN];
+ struct clk *asb_clk[MAX_CLK_PER_DOMAIN];
};
static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
@@ -45,14 +46,19 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
void __iomem *base;
u32 timeout, pwr;
char *op;
+ int i;
pd = container_of(domain, struct exynos_pm_domain, pd);
base = pd->base;
+ for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+ if (IS_ERR(pd->asb_clk[i]))
+ break;
+ clk_prepare_enable(pd->asb_clk[i]);
+ }
+
/* Set oscclk before powering off a domain*/
if (!power_on) {
- int i;
-
for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
if (IS_ERR(pd->clk[i]))
break;
@@ -81,8 +87,6 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
/* Restore clocks after powering on a domain*/
if (power_on) {
- int i;
-
for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
if (IS_ERR(pd->clk[i]))
break;
@@ -92,6 +96,12 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
}
}
+ for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+ if (IS_ERR(pd->asb_clk[i]))
+ break;
+ clk_disable_unprepare(pd->asb_clk[i]);
+ }
+
return 0;
}
@@ -131,6 +141,15 @@ static __init int exynos4_pm_init_power_domain(void)
pd->pd.power_off = exynos_pd_power_off;
pd->pd.power_on = exynos_pd_power_on;
+ for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+ char clk_name[8];
+
+ snprintf(clk_name, sizeof(clk_name), "asb%d", i);
+ pd->asb_clk[i] = clk_get(dev, clk_name);
+ if (IS_ERR(pd->asb_clk[i]))
+ break;
+ }
+
pd->oscclk = clk_get(dev, "oscclk");
if (IS_ERR(pd->oscclk))
goto no_clk;
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 RESEND 3/4] ARM: dts: exynos5420: add async-bridge clocks to disp1 power domain
2015-03-12 13:37 [PATCH v2 RESEND 0/4] Fix power domains handling on exynos542x Andrzej Hajda
2015-03-12 13:37 ` [PATCH v2 RESEND 1/4] arm/exynos: add asynchronous bridge clock bindings Andrzej Hajda
2015-03-12 13:37 ` [PATCH v2 RESEND 2/4] arm/exynos/pm_domains: add support for async-bridge clocks Andrzej Hajda
@ 2015-03-12 13:37 ` Andrzej Hajda
2015-03-12 13:37 ` [PATCH v2 RESEND 4/4] ARM: dts: exynos5420: add async-bridge clocks to gsc " Andrzej Hajda
[not found] ` <1426167431-24470-1-git-send-email-a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
4 siblings, 0 replies; 6+ messages in thread
From: Andrzej Hajda @ 2015-03-12 13:37 UTC (permalink / raw)
To: Kukjin Kim
Cc: devicetree, linux-samsung-soc, Liquid.Acid, linux-kernel,
dri-devel, Andrzej Hajda, Kyungmin Park, javier.martinez,
linux-arm-kernel, Marek Szyprowski
FIMD and MIXER IPs in disp1 power domain have async-bridges (to GSCALER),
therefore their clocks should be enabled during power domain switch.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
---
arch/arm/boot/dts/exynos5420.dtsi | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
index c0e98cf..55e3887 100644
--- a/arch/arm/boot/dts/exynos5420.dtsi
+++ b/arch/arm/boot/dts/exynos5420.dtsi
@@ -283,9 +283,11 @@
<&clock CLK_MOUT_SW_ACLK300>,
<&clock CLK_MOUT_USER_ACLK300_DISP1>,
<&clock CLK_MOUT_SW_ACLK400>,
- <&clock CLK_MOUT_USER_ACLK400_DISP1>;
+ <&clock CLK_MOUT_USER_ACLK400_DISP1>,
+ <&clock CLK_FIMD1>, <&clock CLK_MIXER>;
clock-names = "oscclk", "pclk0", "clk0",
- "pclk1", "clk1", "pclk2", "clk2";
+ "pclk1", "clk1", "pclk2", "clk2",
+ "asb0", "asb1";
};
pinctrl_0: pinctrl@13400000 {
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 RESEND 4/4] ARM: dts: exynos5420: add async-bridge clocks to gsc power domain
2015-03-12 13:37 [PATCH v2 RESEND 0/4] Fix power domains handling on exynos542x Andrzej Hajda
` (2 preceding siblings ...)
2015-03-12 13:37 ` [PATCH v2 RESEND 3/4] ARM: dts: exynos5420: add async-bridge clocks to disp1 power domain Andrzej Hajda
@ 2015-03-12 13:37 ` Andrzej Hajda
[not found] ` <1426167431-24470-1-git-send-email-a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
4 siblings, 0 replies; 6+ messages in thread
From: Andrzej Hajda @ 2015-03-12 13:37 UTC (permalink / raw)
To: Kukjin Kim
Cc: devicetree, linux-samsung-soc, Liquid.Acid, linux-kernel,
dri-devel, Andrzej Hajda, Kyungmin Park, javier.martinez,
linux-arm-kernel, Marek Szyprowski
Both GSCALER IPs in gsc power domain have async-bridges (to FIMD and MIXER),
therefore their clocks should be enabled during power domain switch.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
arch/arm/boot/dts/exynos5420.dtsi | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
index 55e3887..4eaeabe 100644
--- a/arch/arm/boot/dts/exynos5420.dtsi
+++ b/arch/arm/boot/dts/exynos5420.dtsi
@@ -251,6 +251,8 @@
compatible = "samsung,exynos4210-pd";
reg = <0x10044000 0x20>;
#power-domain-cells = <0>;
+ clocks = <&clock CLK_GSCL0>, <&clock CLK_GSCL1>;
+ clock-names = "asb0", "asb1";
};
isp_pd: power-domain@10044020 {
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <1426167431-24470-1-git-send-email-a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH v2 RESEND 0/4] Fix power domains handling on exynos542x
[not found] ` <1426167431-24470-1-git-send-email-a.hajda-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
@ 2015-03-17 17:14 ` Kukjin Kim
0 siblings, 0 replies; 6+ messages in thread
From: Kukjin Kim @ 2015-03-17 17:14 UTC (permalink / raw)
To: Andrzej Hajda
Cc: Kukjin Kim, Marek Szyprowski, Kyungmin Park,
javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ, Liquid.Acid-hi6Y0CQ0nG0,
devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
On 03/12/15 22:37, Andrzej Hajda wrote:
> Hi Kukjin,
>
Hi,
> This is resend of my patchset with added (Reviewed|Tested)-by tags and removed RFC
> prefix.
>
> Exynos chipsets since 542x have asynchronous bridges connecting different IPs.
> These bridges should be operational during power domain switching, ie associated
> clocks cannot be gated.
> This patchset adds binding to provide such clocks per power domain and adds code
> which enables them during domain on/off operation.
>
> This patchset fixes power domain issues with disp1 domain and HDMI (some of them)
> on Odroid XU3:
> - disp1 power domain can be turned off,
> - no more "imprecise external abort" faults.
>
> The patchset is based on samsung-fixes-dt tag from kgene/linux-samsung.
>
> It was successfully tested on OdroidXU3.
>
Thanks, applied whole this series.
- Kukjin
> Andrzej Hajda (4):
> arm/exynos: add asynchronous bridge clock bindings
> arm/exynos/pm_domains: add support for async-bridge clocks
> ARM: dts: exynos5420: add async-bridge clocks to disp1 power domain
> ARM: dts: exynos5420: add async-bridge clocks to gsc power domain
>
> .../bindings/arm/exynos/power_domain.txt | 3 +++
> arch/arm/boot/dts/exynos5420.dtsi | 8 +++++--
> arch/arm/mach-exynos/pm_domains.c | 27 ++++++++++++++++++----
> 3 files changed, 32 insertions(+), 6 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread