linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for ipq806x
@ 2020-03-30 20:56 Ansuel Smith
  2020-04-03  1:34 ` Stephen Boyd
  0 siblings, 1 reply; 5+ messages in thread
From: Ansuel Smith @ 2020-03-30 20:56 UTC (permalink / raw)
  To: Andy Gross
  Cc: Ansuel Smith, Mathieu Olivari, Bjorn Andersson, Rob Herring,
	Mark Rutland, Michael Turquette, Stephen Boyd, linux-arm-msm,
	devicetree, linux-kernel, linux-clk

Disable the i2c device on gsbi4, mark gsbi4_h as unused and gsbi4_qup
and src clks as protected. gsbi4_h can't be set to protected as it's
used by both gsbi and rpm and making it protected creates some problem
with gsbi4 uart function.
Without this fix, clock framework will turn them off at end
of probe. On ipq806x by design gsbi4_qup, gsbi4_h clks and i2c on gsbi4
are meant for RPM usage. So turning them off in kernel is incorrect.

Signed-off-by: Mathieu Olivari <mathieu@codeaurora.org>
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
 arch/arm/boot/dts/qcom-ipq8064-ap148.dts | 9 ---------
 arch/arm/boot/dts/qcom-ipq8064.dtsi      | 3 +++
 drivers/clk/qcom/gcc-ipq806x.c           | 1 +
 3 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/arch/arm/boot/dts/qcom-ipq8064-ap148.dts b/arch/arm/boot/dts/qcom-ipq8064-ap148.dts
index 554c65e7aa0e..580aec63030d 100644
--- a/arch/arm/boot/dts/qcom-ipq8064-ap148.dts
+++ b/arch/arm/boot/dts/qcom-ipq8064-ap148.dts
@@ -21,14 +21,5 @@ mux {
 				};
 			};
 		};
-
-		gsbi@16300000 {
-			i2c@16380000 {
-				status = "ok";
-				clock-frequency = <200000>;
-				pinctrl-0 = <&i2c4_pins>;
-				pinctrl-names = "default";
-			};
-		};
 	};
 };
diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
index 16c0da97932c..d9a803c8a59b 100644
--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
@@ -421,6 +421,9 @@ qcom,ssbi@500000 {
 		gcc: clock-controller@900000 {
 			compatible = "qcom,gcc-ipq8064";
 			reg = <0x00900000 0x4000>;
+
+			protected-clocks = <GSBI4_QUP_SRC>, <GSBI4_QUP_CLK>;
+
 			#clock-cells = <1>;
 			#reset-cells = <1>;
 		};
diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-ipq806x.c
index b0eee0903807..f7d7a2bc84c1 100644
--- a/drivers/clk/qcom/gcc-ipq806x.c
+++ b/drivers/clk/qcom/gcc-ipq806x.c
@@ -991,6 +991,7 @@ static struct clk_branch gsbi4_h_clk = {
 		.hw.init = &(struct clk_init_data){
 			.name = "gsbi4_h_clk",
 			.ops = &clk_branch_ops,
+			.flags = CLK_IGNORE_UNUSED,
 		},
 	},
 };
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for ipq806x
  2020-03-30 20:56 [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for ipq806x Ansuel Smith
@ 2020-04-03  1:34 ` Stephen Boyd
  2020-04-03  1:39   ` R: " ansuelsmth
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Boyd @ 2020-04-03  1:34 UTC (permalink / raw)
  To: Andy Gross, Ansuel Smith
  Cc: Ansuel Smith, Mathieu Olivari, Bjorn Andersson, Rob Herring,
	Mark Rutland, Michael Turquette, linux-arm-msm, devicetree,
	linux-kernel, linux-clk

Quoting Ansuel Smith (2020-03-30 13:56:46)
> diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-ipq806x.c
> index b0eee0903807..f7d7a2bc84c1 100644
> --- a/drivers/clk/qcom/gcc-ipq806x.c
> +++ b/drivers/clk/qcom/gcc-ipq806x.c
> @@ -991,6 +991,7 @@ static struct clk_branch gsbi4_h_clk = {
>                 .hw.init = &(struct clk_init_data){
>                         .name = "gsbi4_h_clk",
>                         .ops = &clk_branch_ops,
> +                       .flags = CLK_IGNORE_UNUSED,

Is this necessary? Shouldn't we skip clks that are protected during the
unused phase?

>                 },
>         },
>  };
> -- 
> 2.25.1
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* R: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for ipq806x
  2020-04-03  1:34 ` Stephen Boyd
@ 2020-04-03  1:39   ` ansuelsmth
  2020-04-05  3:10     ` Stephen Boyd
  0 siblings, 1 reply; 5+ messages in thread
From: ansuelsmth @ 2020-04-03  1:39 UTC (permalink / raw)
  To: 'Stephen Boyd', 'Andy Gross'
  Cc: 'Mathieu Olivari', 'Bjorn Andersson',
	'Rob Herring', 'Mark Rutland',
	'Michael Turquette',
	linux-arm-msm, devicetree, linux-kernel, linux-clk



> -----Messaggio originale-----
> Da: Stephen Boyd <sboyd@kernel.org>
> Inviato: venerdì 3 aprile 2020 03:34
> A: Andy Gross <agross@kernel.org>; Ansuel Smith
> <ansuelsmth@gmail.com>
> Cc: Ansuel Smith <ansuelsmth@gmail.com>; Mathieu Olivari
> <mathieu@codeaurora.org>; Bjorn Andersson
> <bjorn.andersson@linaro.org>; Rob Herring <robh+dt@kernel.org>; Mark
> Rutland <mark.rutland@arm.com>; Michael Turquette
> <mturquette@baylibre.com>; linux-arm-msm@vger.kernel.org;
> devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; linux-
> clk@vger.kernel.org
> Oggetto: Re: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for
> ipq806x
> 
> Quoting Ansuel Smith (2020-03-30 13:56:46)
> > diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-
> ipq806x.c
> > index b0eee0903807..f7d7a2bc84c1 100644
> > --- a/drivers/clk/qcom/gcc-ipq806x.c
> > +++ b/drivers/clk/qcom/gcc-ipq806x.c
> > @@ -991,6 +991,7 @@ static struct clk_branch gsbi4_h_clk = {
> >                 .hw.init = &(struct clk_init_data){
> >                         .name = "gsbi4_h_clk",
> >                         .ops = &clk_branch_ops,
> > +                       .flags = CLK_IGNORE_UNUSED,
> 
> Is this necessary? Shouldn't we skip clks that are protected during the
> unused phase?
> 

gsbi4_h_clk is not protected. gsbi4_h_clk needs to not be disabled if unused
(as it's used by rpm) but can't be protected since it's used by uart gsbi4.
(With some test protecting also this clk cause the malfunction of uart gsb4)

> >                 },
> >         },
> >  };
> > --
> > 2.25.1
> >


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: R: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for ipq806x
  2020-04-03  1:39   ` R: " ansuelsmth
@ 2020-04-05  3:10     ` Stephen Boyd
  2020-04-15 23:12       ` R: " ansuelsmth
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Boyd @ 2020-04-05  3:10 UTC (permalink / raw)
  To: 'Andy Gross', ansuelsmth
  Cc: 'Mathieu Olivari', 'Bjorn Andersson',
	'Rob Herring', 'Mark Rutland',
	'Michael Turquette',
	linux-arm-msm, devicetree, linux-kernel, linux-clk

Quoting ansuelsmth@gmail.com (2020-04-02 18:39:04)
> 
> 
> > -----Messaggio originale-----
> > Da: Stephen Boyd <sboyd@kernel.org>
> > Inviato: venerdì 3 aprile 2020 03:34
> > A: Andy Gross <agross@kernel.org>; Ansuel Smith
> > <ansuelsmth@gmail.com>
> > Cc: Ansuel Smith <ansuelsmth@gmail.com>; Mathieu Olivari
> > <mathieu@codeaurora.org>; Bjorn Andersson
> > <bjorn.andersson@linaro.org>; Rob Herring <robh+dt@kernel.org>; Mark
> > Rutland <mark.rutland@arm.com>; Michael Turquette
> > <mturquette@baylibre.com>; linux-arm-msm@vger.kernel.org;
> > devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; linux-
> > clk@vger.kernel.org
> > Oggetto: Re: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for
> > ipq806x
> > 
> > Quoting Ansuel Smith (2020-03-30 13:56:46)
> > > diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-
> > ipq806x.c
> > > index b0eee0903807..f7d7a2bc84c1 100644
> > > --- a/drivers/clk/qcom/gcc-ipq806x.c
> > > +++ b/drivers/clk/qcom/gcc-ipq806x.c
> > > @@ -991,6 +991,7 @@ static struct clk_branch gsbi4_h_clk = {
> > >                 .hw.init = &(struct clk_init_data){
> > >                         .name = "gsbi4_h_clk",
> > >                         .ops = &clk_branch_ops,
> > > +                       .flags = CLK_IGNORE_UNUSED,
> > 
> > Is this necessary? Shouldn't we skip clks that are protected during the
> > unused phase?
> > 
> 
> gsbi4_h_clk is not protected. gsbi4_h_clk needs to not be disabled if unused
> (as it's used by rpm) but can't be protected since it's used by uart gsbi4.
> (With some test protecting also this clk cause the malfunction of uart gsb4)
> 

Who owns gsbi4 on this platform? Is it RPM? If so, it should be
protected and we shouldn't touch this clk from the kernel.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* R: R: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for ipq806x
  2020-04-05  3:10     ` Stephen Boyd
@ 2020-04-15 23:12       ` ansuelsmth
  0 siblings, 0 replies; 5+ messages in thread
From: ansuelsmth @ 2020-04-15 23:12 UTC (permalink / raw)
  To: 'Stephen Boyd', 'Andy Gross'
  Cc: 'Mathieu Olivari', 'Bjorn Andersson',
	'Rob Herring', 'Mark Rutland',
	'Michael Turquette',
	linux-arm-msm, devicetree, linux-kernel, linux-clk



> -----Messaggio originale-----
> Da: Stephen Boyd <sboyd@kernel.org>
> Inviato: domenica 5 aprile 2020 05:11
> A: 'Andy Gross' <agross@kernel.org>; ansuelsmth@gmail.com
> Cc: 'Mathieu Olivari' <mathieu@codeaurora.org>; 'Bjorn Andersson'
> <bjorn.andersson@linaro.org>; 'Rob Herring' <robh+dt@kernel.org>; 'Mark
> Rutland' <mark.rutland@arm.com>; 'Michael Turquette'
> <mturquette@baylibre.com>; linux-arm-msm@vger.kernel.org;
> devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; linux-
> clk@vger.kernel.org
> Oggetto: Re: R: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for
> ipq806x
> 
> Quoting ansuelsmth@gmail.com (2020-04-02 18:39:04)
> >
> >
> > > -----Messaggio originale-----
> > > Da: Stephen Boyd <sboyd@kernel.org>
> > > Inviato: venerdì 3 aprile 2020 03:34
> > > A: Andy Gross <agross@kernel.org>; Ansuel Smith
> > > <ansuelsmth@gmail.com>
> > > Cc: Ansuel Smith <ansuelsmth@gmail.com>; Mathieu Olivari
> > > <mathieu@codeaurora.org>; Bjorn Andersson
> > > <bjorn.andersson@linaro.org>; Rob Herring <robh+dt@kernel.org>;
> Mark
> > > Rutland <mark.rutland@arm.com>; Michael Turquette
> > > <mturquette@baylibre.com>; linux-arm-msm@vger.kernel.org;
> > > devicetree@vger.kernel.org; linux-kernel@vger.kernel.org; linux-
> > > clk@vger.kernel.org
> > > Oggetto: Re: [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for
> > > ipq806x
> > >
> > > Quoting Ansuel Smith (2020-03-30 13:56:46)
> > > > diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-
> > > ipq806x.c
> > > > index b0eee0903807..f7d7a2bc84c1 100644
> > > > --- a/drivers/clk/qcom/gcc-ipq806x.c
> > > > +++ b/drivers/clk/qcom/gcc-ipq806x.c
> > > > @@ -991,6 +991,7 @@ static struct clk_branch gsbi4_h_clk = {
> > > >                 .hw.init = &(struct clk_init_data){
> > > >                         .name = "gsbi4_h_clk",
> > > >                         .ops = &clk_branch_ops,
> > > > +                       .flags = CLK_IGNORE_UNUSED,
> > >
> > > Is this necessary? Shouldn't we skip clks that are protected during the
> > > unused phase?
> > >
> >
> > gsbi4_h_clk is not protected. gsbi4_h_clk needs to not be disabled if
> unused
> > (as it's used by rpm) but can't be protected since it's used by uart gsbi4.
> > (With some test protecting also this clk cause the malfunction of uart
> gsb4)
> >
> 
> Who owns gsbi4 on this platform? Is it RPM? If so, it should be
> protected and we shouldn't touch this clk from the kernel.

Sorry for the late replay. Trying to protect gsbi4 clk cause the uart serial to
not work at all as it can't be used by the driver. If for some 
reason some dev decide to not use gsbi4 uart, GSBI4_CLK gets disabled 
(as it would be not used), this is the reason of the IGNORE_UNUSED. 
I really can't find another way to keep both gsbi4 protected and and permit
gsbi4 uart to use it.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-04-15 23:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-30 20:56 [PATCH v2] ARM: qcom: Disable i2c device on gsbi4 for ipq806x Ansuel Smith
2020-04-03  1:34 ` Stephen Boyd
2020-04-03  1:39   ` R: " ansuelsmth
2020-04-05  3:10     ` Stephen Boyd
2020-04-15 23:12       ` R: " ansuelsmth

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).