linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix and enable camcc-sm8250
@ 2021-07-08  1:08 Bryan O'Donoghue
  2021-07-08  1:08 ` [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference Bryan O'Donoghue
  2021-07-08  1:08 ` [PATCH 2/2] arm64: dts: qcom: sm8250: Add camcc DT node Bryan O'Donoghue
  0 siblings, 2 replies; 6+ messages in thread
From: Bryan O'Donoghue @ 2021-07-08  1:08 UTC (permalink / raw)
  To: agross, bjorn.andersson, mturquette, sboyd, linux-arm-msm, linux-clk
  Cc: dmitry.baryshkov, jonathan, robert.foss, bryan.odonoghue

This series contains two patches.

First up the fix, we are missing the mmcx regulator for the camcc-sm8250
block, so if you run minus X you'll find mmcx hasn't been switched on and
camcc register access resets the board.

Second is a bog standard enablement for the camcc in the sm8250 dtsi its
nearly a 1:1 mapping with the videocc node.

Bryan O'Donoghue (2):
  clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference
  arm64: dts: qcom: sm8250: Add camcc DT node

 arch/arm64/boot/dts/qcom/sm8250.dtsi | 14 ++++++++++++++
 drivers/clk/qcom/camcc-sm8250.c      |  6 ++++++
 2 files changed, 20 insertions(+)

-- 
2.30.1


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

* [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference
  2021-07-08  1:08 [PATCH 0/2] Fix and enable camcc-sm8250 Bryan O'Donoghue
@ 2021-07-08  1:08 ` Bryan O'Donoghue
  2021-07-08  4:03   ` Bjorn Andersson
  2021-07-08  1:08 ` [PATCH 2/2] arm64: dts: qcom: sm8250: Add camcc DT node Bryan O'Donoghue
  1 sibling, 1 reply; 6+ messages in thread
From: Bryan O'Donoghue @ 2021-07-08  1:08 UTC (permalink / raw)
  To: agross, bjorn.andersson, mturquette, sboyd, linux-arm-msm, linux-clk
  Cc: dmitry.baryshkov, jonathan, robert.foss, bryan.odonoghue

The current implementation omits the necessary mmcx supply, which means if
you are running the code for this block and a prior clock driver, like say
the videocc hasn't run, then a reset will be generated the first time we
touch these registers.

Fixes: 5d66ca79b58c ("clk: qcom: Add camera clock controller driver for SM8250")
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 drivers/clk/qcom/camcc-sm8250.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/clk/qcom/camcc-sm8250.c b/drivers/clk/qcom/camcc-sm8250.c
index 439eaafdcc86..c51112546bfc 100644
--- a/drivers/clk/qcom/camcc-sm8250.c
+++ b/drivers/clk/qcom/camcc-sm8250.c
@@ -2212,6 +2212,7 @@ static struct gdsc bps_gdsc = {
 	},
 	.flags = HW_CTRL | POLL_CFG_GDSCR,
 	.pwrsts = PWRSTS_OFF_ON,
+	.supply = "mmcx",
 };
 
 static struct gdsc ipe_0_gdsc = {
@@ -2221,6 +2222,7 @@ static struct gdsc ipe_0_gdsc = {
 	},
 	.flags = HW_CTRL | POLL_CFG_GDSCR,
 	.pwrsts = PWRSTS_OFF_ON,
+	.supply = "mmcx",
 };
 
 static struct gdsc sbi_gdsc = {
@@ -2230,6 +2232,7 @@ static struct gdsc sbi_gdsc = {
 	},
 	.flags = HW_CTRL | POLL_CFG_GDSCR,
 	.pwrsts = PWRSTS_OFF_ON,
+	.supply = "mmcx",
 };
 
 static struct gdsc ife_0_gdsc = {
@@ -2239,6 +2242,7 @@ static struct gdsc ife_0_gdsc = {
 	},
 	.flags = POLL_CFG_GDSCR,
 	.pwrsts = PWRSTS_OFF_ON,
+	.supply = "mmcx",
 };
 
 static struct gdsc ife_1_gdsc = {
@@ -2248,6 +2252,7 @@ static struct gdsc ife_1_gdsc = {
 	},
 	.flags = POLL_CFG_GDSCR,
 	.pwrsts = PWRSTS_OFF_ON,
+	.supply = "mmcx",
 };
 
 static struct gdsc titan_top_gdsc = {
@@ -2257,6 +2262,7 @@ static struct gdsc titan_top_gdsc = {
 	},
 	.flags = POLL_CFG_GDSCR,
 	.pwrsts = PWRSTS_OFF_ON,
+	.supply = "mmcx",
 };
 
 static struct clk_regmap *cam_cc_sm8250_clocks[] = {
-- 
2.30.1


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

* [PATCH 2/2] arm64: dts: qcom: sm8250: Add camcc DT node
  2021-07-08  1:08 [PATCH 0/2] Fix and enable camcc-sm8250 Bryan O'Donoghue
  2021-07-08  1:08 ` [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference Bryan O'Donoghue
@ 2021-07-08  1:08 ` Bryan O'Donoghue
  1 sibling, 0 replies; 6+ messages in thread
From: Bryan O'Donoghue @ 2021-07-08  1:08 UTC (permalink / raw)
  To: agross, bjorn.andersson, mturquette, sboyd, linux-arm-msm, linux-clk
  Cc: dmitry.baryshkov, jonathan, robert.foss, bryan.odonoghue

Add the camcc DT node for the Camera Clock Controller on sm8250.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 arch/arm64/boot/dts/qcom/sm8250.dtsi | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index 4c0de12aaba6..7ac6ae50779c 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -18,6 +18,7 @@
 #include <dt-bindings/sound/qcom,q6afe.h>
 #include <dt-bindings/thermal/thermal.h>
 #include <dt-bindings/clock/qcom,videocc-sm8250.h>
+#include <dt-bindings/clock/qcom,camcc-sm8250.h>
 
 / {
 	interrupt-parent = <&intc>;
@@ -2369,6 +2370,19 @@ videocc: clock-controller@abf0000 {
 			#power-domain-cells = <1>;
 		};
 
+		clock_camcc: clock-controller@ad00000 {
+			compatible = "qcom,sm8250-camcc";
+			reg = <0 0x0ad00000 0 0x10000>;
+			clocks = <&gcc GCC_VIDEO_AHB_CLK>,
+				 <&rpmhcc RPMH_CXO_CLK>,
+				 <&rpmhcc RPMH_CXO_CLK_A>;
+			clock-names = "iface", "bi_tcxo", "bi_tcxo_ao";
+			mmcx-supply = <&mmcx_reg>;
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+			#power-domain-cells = <1>;
+		};
+
 		mdss: mdss@ae00000 {
 			compatible = "qcom,sdm845-mdss";
 			reg = <0 0x0ae00000 0 0x1000>;
-- 
2.30.1


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

* Re: [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference
  2021-07-08  1:08 ` [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference Bryan O'Donoghue
@ 2021-07-08  4:03   ` Bjorn Andersson
  2021-07-27 18:29     ` Stephen Boyd
  0 siblings, 1 reply; 6+ messages in thread
From: Bjorn Andersson @ 2021-07-08  4:03 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, mturquette, sboyd, linux-arm-msm, linux-clk,
	dmitry.baryshkov, jonathan, robert.foss

On Wed 07 Jul 20:08 CDT 2021, Bryan O'Donoghue wrote:

> The current implementation omits the necessary mmcx supply, which means if
> you are running the code for this block and a prior clock driver, like say
> the videocc hasn't run, then a reset will be generated the first time we
> touch these registers.
> 
> Fixes: 5d66ca79b58c ("clk: qcom: Add camera clock controller driver for SM8250")
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>

camcc isn't enabled in the upstream dts yet and I expect that we're
going to conclude on defining these GDSCs as subdomains of the cc's
power-domain in time for v5.15.

I don't mind if Stephen picks this to make sure the driver is
functional, but I will hold off on the dts change.

Regards,
Bjorn

> ---
>  drivers/clk/qcom/camcc-sm8250.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/clk/qcom/camcc-sm8250.c b/drivers/clk/qcom/camcc-sm8250.c
> index 439eaafdcc86..c51112546bfc 100644
> --- a/drivers/clk/qcom/camcc-sm8250.c
> +++ b/drivers/clk/qcom/camcc-sm8250.c
> @@ -2212,6 +2212,7 @@ static struct gdsc bps_gdsc = {
>  	},
>  	.flags = HW_CTRL | POLL_CFG_GDSCR,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.supply = "mmcx",
>  };
>  
>  static struct gdsc ipe_0_gdsc = {
> @@ -2221,6 +2222,7 @@ static struct gdsc ipe_0_gdsc = {
>  	},
>  	.flags = HW_CTRL | POLL_CFG_GDSCR,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.supply = "mmcx",
>  };
>  
>  static struct gdsc sbi_gdsc = {
> @@ -2230,6 +2232,7 @@ static struct gdsc sbi_gdsc = {
>  	},
>  	.flags = HW_CTRL | POLL_CFG_GDSCR,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.supply = "mmcx",
>  };
>  
>  static struct gdsc ife_0_gdsc = {
> @@ -2239,6 +2242,7 @@ static struct gdsc ife_0_gdsc = {
>  	},
>  	.flags = POLL_CFG_GDSCR,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.supply = "mmcx",
>  };
>  
>  static struct gdsc ife_1_gdsc = {
> @@ -2248,6 +2252,7 @@ static struct gdsc ife_1_gdsc = {
>  	},
>  	.flags = POLL_CFG_GDSCR,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.supply = "mmcx",
>  };
>  
>  static struct gdsc titan_top_gdsc = {
> @@ -2257,6 +2262,7 @@ static struct gdsc titan_top_gdsc = {
>  	},
>  	.flags = POLL_CFG_GDSCR,
>  	.pwrsts = PWRSTS_OFF_ON,
> +	.supply = "mmcx",
>  };
>  
>  static struct clk_regmap *cam_cc_sm8250_clocks[] = {
> -- 
> 2.30.1
> 

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

* Re: [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference
  2021-07-08  4:03   ` Bjorn Andersson
@ 2021-07-27 18:29     ` Stephen Boyd
  2021-07-27 18:31       ` Bryan O'Donoghue
  0 siblings, 1 reply; 6+ messages in thread
From: Stephen Boyd @ 2021-07-27 18:29 UTC (permalink / raw)
  To: Bjorn Andersson, Bryan O'Donoghue
  Cc: agross, mturquette, linux-arm-msm, linux-clk, dmitry.baryshkov,
	jonathan, robert.foss

Quoting Bjorn Andersson (2021-07-07 21:03:06)
> On Wed 07 Jul 20:08 CDT 2021, Bryan O'Donoghue wrote:
> 
> > The current implementation omits the necessary mmcx supply, which means if
> > you are running the code for this block and a prior clock driver, like say
> > the videocc hasn't run, then a reset will be generated the first time we
> > touch these registers.
> > 
> > Fixes: 5d66ca79b58c ("clk: qcom: Add camera clock controller driver for SM8250")
> > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> 
> camcc isn't enabled in the upstream dts yet and I expect that we're
> going to conclude on defining these GDSCs as subdomains of the cc's
> power-domain in time for v5.15.
> 
> I don't mind if Stephen picks this to make sure the driver is
> functional, but I will hold off on the dts change.
> 

Seems like this is superseded by the GDSC patches that use subdomains
instead of a fake supply?

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

* Re: [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference
  2021-07-27 18:29     ` Stephen Boyd
@ 2021-07-27 18:31       ` Bryan O'Donoghue
  0 siblings, 0 replies; 6+ messages in thread
From: Bryan O'Donoghue @ 2021-07-27 18:31 UTC (permalink / raw)
  To: Stephen Boyd, Bjorn Andersson
  Cc: agross, mturquette, linux-arm-msm, linux-clk, dmitry.baryshkov,
	jonathan, robert.foss

On 27/07/2021 19:29, Stephen Boyd wrote:
> Quoting Bjorn Andersson (2021-07-07 21:03:06)
>> On Wed 07 Jul 20:08 CDT 2021, Bryan O'Donoghue wrote:
>>
>>> The current implementation omits the necessary mmcx supply, which means if
>>> you are running the code for this block and a prior clock driver, like say
>>> the videocc hasn't run, then a reset will be generated the first time we
>>> touch these registers.
>>>
>>> Fixes: 5d66ca79b58c ("clk: qcom: Add camera clock controller driver for SM8250")
>>> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
>>
>> camcc isn't enabled in the upstream dts yet and I expect that we're
>> going to conclude on defining these GDSCs as subdomains of the cc's
>> power-domain in time for v5.15.
>>
>> I don't mind if Stephen picks this to make sure the driver is
>> functional, but I will hold off on the dts change.
>>
> 
> Seems like this is superseded by the GDSC patches that use subdomains
> instead of a fake supply?
> 
yep

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

end of thread, other threads:[~2021-07-27 18:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-08  1:08 [PATCH 0/2] Fix and enable camcc-sm8250 Bryan O'Donoghue
2021-07-08  1:08 ` [PATCH 1/2] clk: qcom: camcc-sm8250: Fix absent mmcx regulator reference Bryan O'Donoghue
2021-07-08  4:03   ` Bjorn Andersson
2021-07-27 18:29     ` Stephen Boyd
2021-07-27 18:31       ` Bryan O'Donoghue
2021-07-08  1:08 ` [PATCH 2/2] arm64: dts: qcom: sm8250: Add camcc DT node Bryan O'Donoghue

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