* [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
@ 2015-09-23 19:09 Stephen Boyd
2015-10-01 8:23 ` Rajendra Nayak
0 siblings, 1 reply; 8+ messages in thread
From: Stephen Boyd @ 2015-09-23 19:09 UTC (permalink / raw)
To: Mike Turquette, Stephen Boyd
Cc: linux-kernel, linux-clk, linux-arm-msm, linux-pm, Rajendra Nayak
The oxili_cx GDSC is inside the power domain of the oxili GDSC.
Add the dependency so that the CX domain can properly power up.
Reported-by: Rob Clark <robdclark@gmail.com>
Cc: Rajendra Nayak <rnayak@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
drivers/clk/qcom/mmcc-msm8974.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
index fe8320dc41db..3613db0a73e3 100644
--- a/drivers/clk/qcom/mmcc-msm8974.c
+++ b/drivers/clk/qcom/mmcc-msm8974.c
@@ -2615,6 +2615,7 @@ MODULE_DEVICE_TABLE(of, mmcc_msm8974_match_table);
static int mmcc_msm8974_probe(struct platform_device *pdev)
{
struct regmap *regmap;
+ int ret;
regmap = qcom_cc_map(pdev, &mmcc_msm8974_desc);
if (IS_ERR(regmap))
@@ -2623,7 +2624,14 @@ static int mmcc_msm8974_probe(struct platform_device *pdev)
clk_pll_configure_sr_hpm_lp(&mmpll1, regmap, &mmpll1_config, true);
clk_pll_configure_sr_hpm_lp(&mmpll3, regmap, &mmpll3_config, false);
- return qcom_cc_really_probe(pdev, &mmcc_msm8974_desc, regmap);
+ ret = qcom_cc_really_probe(pdev, &mmcc_msm8974_desc, regmap);
+ if (ret)
+ return ret;
+
+ ret = pm_genpd_add_subdomain(&oxili_gdsc.pd, &oxilicx_gdsc.pd);
+ if (ret)
+ qcom_cc_remove(pdev);
+ return ret;
}
static int mmcc_msm8974_remove(struct platform_device *pdev)
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
2015-09-23 19:09 [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC Stephen Boyd
@ 2015-10-01 8:23 ` Rajendra Nayak
2015-10-01 17:52 ` Stephen Boyd
0 siblings, 1 reply; 8+ messages in thread
From: Rajendra Nayak @ 2015-10-01 8:23 UTC (permalink / raw)
To: Stephen Boyd, Mike Turquette
Cc: linux-kernel, linux-clk, linux-arm-msm, linux-pm
On 09/24/2015 12:39 AM, Stephen Boyd wrote:
> The oxili_cx GDSC is inside the power domain of the oxili GDSC.
> Add the dependency so that the CX domain can properly power up.
>
> Reported-by: Rob Clark <robdclark@gmail.com>
> Cc: Rajendra Nayak <rnayak@codeaurora.org>
> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
> ---
> drivers/clk/qcom/mmcc-msm8974.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
> index fe8320dc41db..3613db0a73e3 100644
> --- a/drivers/clk/qcom/mmcc-msm8974.c
> +++ b/drivers/clk/qcom/mmcc-msm8974.c
> @@ -2615,6 +2615,7 @@ MODULE_DEVICE_TABLE(of, mmcc_msm8974_match_table);
> static int mmcc_msm8974_probe(struct platform_device *pdev)
> {
> struct regmap *regmap;
> + int ret;
>
> regmap = qcom_cc_map(pdev, &mmcc_msm8974_desc);
> if (IS_ERR(regmap))
> @@ -2623,7 +2624,14 @@ static int mmcc_msm8974_probe(struct platform_device *pdev)
> clk_pll_configure_sr_hpm_lp(&mmpll1, regmap, &mmpll1_config, true);
> clk_pll_configure_sr_hpm_lp(&mmpll3, regmap, &mmpll3_config, false);
>
> - return qcom_cc_really_probe(pdev, &mmcc_msm8974_desc, regmap);
> + ret = qcom_cc_really_probe(pdev, &mmcc_msm8974_desc, regmap);
> + if (ret)
> + return ret;
> +
> + ret = pm_genpd_add_subdomain(&oxili_gdsc.pd, &oxilicx_gdsc.pd);
We'll need pm_genpd_add_subdomain() to be EXPORT_SYMBOL_GPL'ed so
clk-qcom can be built as a module.
It would also be nicer if this parent/child relationship can
somehow be represented in data (struct gdsc) that gets passed to
the gdsc driver which then sets it up, instead of individual
clock drivers doing it.
> + if (ret)
> + qcom_cc_remove(pdev);
> + return ret;
> }
>
> static int mmcc_msm8974_remove(struct platform_device *pdev)
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
2015-10-01 8:23 ` Rajendra Nayak
@ 2015-10-01 17:52 ` Stephen Boyd
2015-10-01 19:06 ` Stephen Boyd
0 siblings, 1 reply; 8+ messages in thread
From: Stephen Boyd @ 2015-10-01 17:52 UTC (permalink / raw)
To: Rajendra Nayak
Cc: Mike Turquette, linux-kernel, linux-clk, linux-arm-msm, linux-pm
On 10/01, Rajendra Nayak wrote:
> On 09/24/2015 12:39 AM, Stephen Boyd wrote:
> >The oxili_cx GDSC is inside the power domain of the oxili GDSC.
> >Add the dependency so that the CX domain can properly power up.
> >
> >Reported-by: Rob Clark <robdclark@gmail.com>
> >Cc: Rajendra Nayak <rnayak@codeaurora.org>
> >Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
> >---
> > drivers/clk/qcom/mmcc-msm8974.c | 10 +++++++++-
> > 1 file changed, 9 insertions(+), 1 deletion(-)
> >
> >diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
> >index fe8320dc41db..3613db0a73e3 100644
> >--- a/drivers/clk/qcom/mmcc-msm8974.c
> >+++ b/drivers/clk/qcom/mmcc-msm8974.c
> >@@ -2615,6 +2615,7 @@ MODULE_DEVICE_TABLE(of, mmcc_msm8974_match_table);
> > static int mmcc_msm8974_probe(struct platform_device *pdev)
> > {
> > struct regmap *regmap;
> >+ int ret;
> >
> > regmap = qcom_cc_map(pdev, &mmcc_msm8974_desc);
> > if (IS_ERR(regmap))
> >@@ -2623,7 +2624,14 @@ static int mmcc_msm8974_probe(struct platform_device *pdev)
> > clk_pll_configure_sr_hpm_lp(&mmpll1, regmap, &mmpll1_config, true);
> > clk_pll_configure_sr_hpm_lp(&mmpll3, regmap, &mmpll3_config, false);
> >
> >- return qcom_cc_really_probe(pdev, &mmcc_msm8974_desc, regmap);
> >+ ret = qcom_cc_really_probe(pdev, &mmcc_msm8974_desc, regmap);
> >+ if (ret)
> >+ return ret;
> >+
> >+ ret = pm_genpd_add_subdomain(&oxili_gdsc.pd, &oxilicx_gdsc.pd);
>
> We'll need pm_genpd_add_subdomain() to be EXPORT_SYMBOL_GPL'ed so
> clk-qcom can be built as a module.
Good catch! Do we need to call pm_genpd_remove_subdomain() too?
>
> It would also be nicer if this parent/child relationship can
> somehow be represented in data (struct gdsc) that gets passed to
> the gdsc driver which then sets it up, instead of individual
> clock drivers doing it.
Agreed. I'd rather that we do nothing besides register domains
and then let the core code handle hooking up domains and
subdomains.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
2015-10-01 17:52 ` Stephen Boyd
@ 2015-10-01 19:06 ` Stephen Boyd
2015-10-05 5:07 ` Rajendra Nayak
0 siblings, 1 reply; 8+ messages in thread
From: Stephen Boyd @ 2015-10-01 19:06 UTC (permalink / raw)
To: Rajendra Nayak
Cc: Mike Turquette, linux-kernel, linux-clk, linux-arm-msm, linux-pm
On 10/01, Stephen Boyd wrote:
> On 10/01, Rajendra Nayak wrote:
> > On 09/24/2015 12:39 AM, Stephen Boyd wrote:
> > >+
> > >+ ret = pm_genpd_add_subdomain(&oxili_gdsc.pd, &oxilicx_gdsc.pd);
> >
> > We'll need pm_genpd_add_subdomain() to be EXPORT_SYMBOL_GPL'ed so
> > clk-qcom can be built as a module.
>
> Good catch! Do we need to call pm_genpd_remove_subdomain() too?
Looks like yes.
>
> >
> > It would also be nicer if this parent/child relationship can
> > somehow be represented in data (struct gdsc) that gets passed to
> > the gdsc driver which then sets it up, instead of individual
> > clock drivers doing it.
>
> Agreed. I'd rather that we do nothing besides register domains
> and then let the core code handle hooking up domains and
> subdomains.
A little closer inspection makes me want to skip this. PM domains
can have multiple "master" domains, and pm_genpd_init() is the
only API that would be able to do the linking. That API is mostly
about initializing things to default values, so it doesn't seem
like a good fit. I'll send a v2 with the remove part and the
exports.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
2015-10-01 19:06 ` Stephen Boyd
@ 2015-10-05 5:07 ` Rajendra Nayak
2015-10-05 5:45 ` kbuild test robot
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Rajendra Nayak @ 2015-10-05 5:07 UTC (permalink / raw)
To: Stephen Boyd
Cc: Mike Turquette, linux-kernel, linux-clk, linux-arm-msm, linux-pm
[]...
>>> It would also be nicer if this parent/child relationship can
>>> somehow be represented in data (struct gdsc) that gets passed to
>>> the gdsc driver which then sets it up, instead of individual
>>> clock drivers doing it.
>>
>> Agreed. I'd rather that we do nothing besides register domains
>> and then let the core code handle hooking up domains and
>> subdomains.
>
> A little closer inspection makes me want to skip this. PM domains
> can have multiple "master" domains, and pm_genpd_init() is the
> only API that would be able to do the linking. That API is mostly
> about initializing things to default values, so it doesn't seem
> like a good fit. I'll send a v2 with the remove part and the
> exports.
What I was suggesting is that the qcom gdsc driver handle this
instead of the qcom clock drivers.
Something like..
diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index da9fad8..00edb2d 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -226,6 +226,8 @@ int gdsc_register(struct device *dev, struct gdsc **scs, size_t num,
if (ret)
return ret;
data->domains[i] = &scs[i]->pd;
+ if (scs[i]->parent)
+ pm_genpd_add_subdomain(scs[i]->parent, &scs[i]->pd);
}
return of_genpd_add_provider_onecell(dev->of_node, data);
diff --git a/drivers/clk/qcom/gdsc.h b/drivers/clk/qcom/gdsc.h
index 5ded268..bc5791f 100644
--- a/drivers/clk/qcom/gdsc.h
+++ b/drivers/clk/qcom/gdsc.h
@@ -49,6 +49,7 @@ struct gdsc {
struct reset_controller_dev *rcdev;
unsigned int *resets;
unsigned int reset_count;
+ struct generic_pm_domain *parent;
};
#ifdef CONFIG_QCOM_GDSC
diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c
index fe8320d..51ad8de 100644
--- a/drivers/clk/qcom/mmcc-msm8974.c
+++ b/drivers/clk/qcom/mmcc-msm8974.c
@@ -2400,6 +2400,7 @@ static struct gdsc oxilicx_gdsc = {
.pd = {
.name = "oxilicx",
},
+ .parent = &oxili_gdsc.pd,
.pwrsts = PWRSTS_OFF_ON,
};
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Re: [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
2015-10-05 5:07 ` Rajendra Nayak
@ 2015-10-05 5:45 ` kbuild test robot
2015-10-05 14:24 ` kbuild test robot
2015-10-05 18:13 ` Stephen Boyd
2 siblings, 0 replies; 8+ messages in thread
From: kbuild test robot @ 2015-10-05 5:45 UTC (permalink / raw)
To: Rajendra Nayak
Cc: kbuild-all, Stephen Boyd, Mike Turquette, linux-kernel, linux-clk,
linux-arm-msm, linux-pm
[-- Attachment #1: Type: text/plain, Size: 487 bytes --]
Hi Rajendra,
[auto build test ERROR on next-20151002 -- if it's inappropriate base, please ignore]
config: i386-allmodconfig (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
>> ERROR: "pm_genpd_add_subdomain" undefined!
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 51904 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Re: [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
2015-10-05 5:07 ` Rajendra Nayak
2015-10-05 5:45 ` kbuild test robot
@ 2015-10-05 14:24 ` kbuild test robot
2015-10-05 18:13 ` Stephen Boyd
2 siblings, 0 replies; 8+ messages in thread
From: kbuild test robot @ 2015-10-05 14:24 UTC (permalink / raw)
To: Rajendra Nayak
Cc: kbuild-all, Stephen Boyd, Mike Turquette, linux-kernel, linux-clk,
linux-arm-msm, linux-pm
[-- Attachment #1: Type: text/plain, Size: 532 bytes --]
Hi Rajendra,
[auto build test ERROR on next-20151002 -- if it's inappropriate base, please ignore]
config: x86_64-randconfig-r0-10051645 (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
>> ERROR: "pm_genpd_add_subdomain" [drivers/clk/qcom/clk-qcom.ko] undefined!
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 30187 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC
2015-10-05 5:07 ` Rajendra Nayak
2015-10-05 5:45 ` kbuild test robot
2015-10-05 14:24 ` kbuild test robot
@ 2015-10-05 18:13 ` Stephen Boyd
2 siblings, 0 replies; 8+ messages in thread
From: Stephen Boyd @ 2015-10-05 18:13 UTC (permalink / raw)
To: Rajendra Nayak
Cc: Mike Turquette, linux-kernel, linux-clk, linux-arm-msm, linux-pm
On 10/05, Rajendra Nayak wrote:
> []...
>
> >>> It would also be nicer if this parent/child relationship can
> >>> somehow be represented in data (struct gdsc) that gets passed to
> >>> the gdsc driver which then sets it up, instead of individual
> >>> clock drivers doing it.
> >>
> >> Agreed. I'd rather that we do nothing besides register domains
> >> and then let the core code handle hooking up domains and
> >> subdomains.
> >
> > A little closer inspection makes me want to skip this. PM domains
> > can have multiple "master" domains, and pm_genpd_init() is the
> > only API that would be able to do the linking. That API is mostly
> > about initializing things to default values, so it doesn't seem
> > like a good fit. I'll send a v2 with the remove part and the
> > exports.
>
> What I was suggesting is that the qcom gdsc driver handle this
> instead of the qcom clock drivers.
> Something like..
Ah ok. This patch will still need the gdscs to be in a certain
order though so that we don't add a subdomain on an uninitialized
domain. So I guess some list of pointer pairs to call the
function on could be done in the qcom_cc_desc structure if we
need to do this more than a couple times.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-10-05 18:13 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-23 19:09 [PATCH] clk: qcom: Make oxili GDSC parent of oxili_cx GDSC Stephen Boyd
2015-10-01 8:23 ` Rajendra Nayak
2015-10-01 17:52 ` Stephen Boyd
2015-10-01 19:06 ` Stephen Boyd
2015-10-05 5:07 ` Rajendra Nayak
2015-10-05 5:45 ` kbuild test robot
2015-10-05 14:24 ` kbuild test robot
2015-10-05 18:13 ` Stephen Boyd
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).