linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Add rpmcc and rpmpd for SM4250/6115
@ 2021-07-31 16:48 Iskren Chernev
  2021-07-31 16:48 ` [PATCH v3 1/2] clk: qcom: smd: Add support for SM6115 rpm clocks Iskren Chernev
  2021-07-31 16:48 ` [PATCH v3 2/2] soc: qcom: smd-rpm: Add SM6115 compatible Iskren Chernev
  0 siblings, 2 replies; 5+ messages in thread
From: Iskren Chernev @ 2021-07-31 16:48 UTC (permalink / raw)
  To: Bjorn Andersson, Stephen Boyd
  Cc: Andy Gross, Michael Turquette, linux-arm-msm, linux-clk,
	linux-kernel, phone-devel, ~postmarketos/upstreaming,
	Iskren Chernev

This patch adds support for the RPM clocks and power domains on QCom SM4250 and
SM6115, codename bengal. The rpmcc code is converted from downstream code
(OnePlus repo [1]), and the rpmpd is converted from downstream DT extracted
from OnePlus Nord N100.

The downstream code has additional voter clocks, which let consumers vote and
the driver to select the highest desired clock rate for a given (real) parent
clock [2]. I might port that as well in the near future, let me know if there
is a more elegant solution.

[1]: https://github.com/OnePlusOSS/android_kernel_oneplus_sm4250
[2]: https://source.codeaurora.org/quic/server/kernel/commit/?h=v4.9.137&id=6a4951a8308c5729ae8e502787cb705477c94251

v1: https://lkml.org/lkml/2021/6/22/1171
v2: https://lkml.org/lkml/2021/6/27/169

Changes from v2:
- note that all except patch 3/5 of the v2 patches were merged in next, and
  patch 3/5 was split in 2
- split smd-rpm compat string addition in it's own patch

Changes from v1:
- remove 4250 compatible, both platforms will share one dtsi
- reuse existing clocks as per a0384ecfe2aa ("clk: qcom: smd-rpm: De-duplicate identical entries")

Iskren Chernev (2):
  clk: qcom: smd: Add support for SM6115 rpm clocks
  soc: qcom: smd-rpm: Add SM6115 compatible

 drivers/clk/qcom/clk-smd-rpm.c   | 54 ++++++++++++++++++++++++++++++++
 drivers/soc/qcom/smd-rpm.c       |  1 +
 include/linux/soc/qcom/smd-rpm.h |  1 +
 3 files changed, 56 insertions(+)


base-commit: 8d4b477da1a807199ca60e0829357ce7aa6758d5
--
2.32.0


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

* [PATCH v3 1/2] clk: qcom: smd: Add support for SM6115 rpm clocks
  2021-07-31 16:48 [PATCH v3 0/2] Add rpmcc and rpmpd for SM4250/6115 Iskren Chernev
@ 2021-07-31 16:48 ` Iskren Chernev
  2021-08-06  1:42   ` Stephen Boyd
  2021-07-31 16:48 ` [PATCH v3 2/2] soc: qcom: smd-rpm: Add SM6115 compatible Iskren Chernev
  1 sibling, 1 reply; 5+ messages in thread
From: Iskren Chernev @ 2021-07-31 16:48 UTC (permalink / raw)
  To: Bjorn Andersson, Stephen Boyd
  Cc: Andy Gross, Michael Turquette, linux-arm-msm, linux-clk,
	linux-kernel, phone-devel, ~postmarketos/upstreaming,
	Iskren Chernev

Add rpm smd clocks, PMIC and bus clocks which are required on
SM4250/6115 for clients to vote on.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 drivers/clk/qcom/clk-smd-rpm.c   | 54 ++++++++++++++++++++++++++++++++
 include/linux/soc/qcom/smd-rpm.h |  1 +
 2 files changed, 55 insertions(+)

diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
index b2c142f3a649..074bda407edf 100644
--- a/drivers/clk/qcom/clk-smd-rpm.c
+++ b/drivers/clk/qcom/clk-smd-rpm.c
@@ -913,6 +913,59 @@ static const struct rpm_smd_clk_desc rpm_clk_sdm660 = {
 	.num_clks = ARRAY_SIZE(sdm660_clks),
 };
 
+/* sm6115 */
+DEFINE_CLK_SMD_RPM(sm6115, cnoc_clk, cnoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 1);
+DEFINE_CLK_SMD_RPM(sm6115, snoc_clk, snoc_a_clk, QCOM_SMD_RPM_BUS_CLK, 2);
+DEFINE_CLK_SMD_RPM_BRANCH(sm6115, qdss_clk, qdss_a_clk,
+					QCOM_SMD_RPM_MISC_CLK, 1, 19200000);
+DEFINE_CLK_SMD_RPM(sm6115, qup_clk, qup_a_clk, QCOM_SMD_RPM_QUP_CLK, 0);
+DEFINE_CLK_SMD_RPM(sm6115, mmnrt_clk, mmnrt_a_clk, QCOM_SMD_RPM_MMAXI_CLK, 0);
+DEFINE_CLK_SMD_RPM(sm6115, mmrt_clk, mmrt_a_clk, QCOM_SMD_RPM_MMAXI_CLK, 1);
+DEFINE_CLK_SMD_RPM(sm6115, snoc_periph_clk, snoc_periph_a_clk,
+						QCOM_SMD_RPM_BUS_CLK, 0);
+DEFINE_CLK_SMD_RPM(sm6115, snoc_lpass_clk, snoc_lpass_a_clk,
+						QCOM_SMD_RPM_BUS_CLK, 5);
+
+static struct clk_smd_rpm *sm6115_clks[] = {
+	[RPM_SMD_XO_CLK_SRC] = &sdm660_bi_tcxo,
+	[RPM_SMD_XO_A_CLK_SRC] = &sdm660_bi_tcxo_a,
+	[RPM_SMD_SNOC_CLK] = &sm6115_snoc_clk,
+	[RPM_SMD_SNOC_A_CLK] = &sm6115_snoc_a_clk,
+	[RPM_SMD_BIMC_CLK] = &msm8916_bimc_clk,
+	[RPM_SMD_BIMC_A_CLK] = &msm8916_bimc_a_clk,
+	[RPM_SMD_QDSS_CLK] = &sm6115_qdss_clk,
+	[RPM_SMD_QDSS_A_CLK] = &sm6115_qdss_a_clk,
+	[RPM_SMD_RF_CLK1] = &msm8916_rf_clk1,
+	[RPM_SMD_RF_CLK1_A] = &msm8916_rf_clk1_a,
+	[RPM_SMD_RF_CLK2] = &msm8916_rf_clk2,
+	[RPM_SMD_RF_CLK2_A] = &msm8916_rf_clk2_a,
+	[RPM_SMD_CNOC_CLK] = &sm6115_cnoc_clk,
+	[RPM_SMD_CNOC_A_CLK] = &sm6115_cnoc_a_clk,
+	[RPM_SMD_IPA_CLK] = &msm8976_ipa_clk,
+	[RPM_SMD_IPA_A_CLK] = &msm8976_ipa_a_clk,
+	[RPM_SMD_QUP_CLK] = &sm6115_qup_clk,
+	[RPM_SMD_QUP_A_CLK] = &sm6115_qup_a_clk,
+	[RPM_SMD_MMRT_CLK] = &sm6115_mmrt_clk,
+	[RPM_SMD_MMRT_A_CLK] = &sm6115_mmrt_a_clk,
+	[RPM_SMD_MMNRT_CLK] = &sm6115_mmnrt_clk,
+	[RPM_SMD_MMNRT_A_CLK] = &sm6115_mmnrt_a_clk,
+	[RPM_SMD_SNOC_PERIPH_CLK] = &sm6115_snoc_periph_clk,
+	[RPM_SMD_SNOC_PERIPH_A_CLK] = &sm6115_snoc_periph_a_clk,
+	[RPM_SMD_SNOC_LPASS_CLK] = &sm6115_snoc_lpass_clk,
+	[RPM_SMD_SNOC_LPASS_A_CLK] = &sm6115_snoc_lpass_a_clk,
+	[RPM_SMD_CE1_CLK] = &msm8992_ce1_clk,
+	[RPM_SMD_CE1_A_CLK] = &msm8992_ce1_a_clk,
+	[RPM_SMD_RF_CLK1_PIN] = &msm8916_rf_clk1_pin,
+	[RPM_SMD_RF_CLK1_A_PIN] = &msm8916_rf_clk1_a_pin,
+	[RPM_SMD_RF_CLK2_PIN] = &msm8916_rf_clk2_pin,
+	[RPM_SMD_RF_CLK2_A_PIN] = &msm8916_rf_clk2_a_pin,
+};
+
+static const struct rpm_smd_clk_desc rpm_clk_sm6115 = {
+	.clks = sm6115_clks,
+	.num_clks = ARRAY_SIZE(sm6115_clks),
+};
+
 static const struct of_device_id rpm_smd_clk_match_table[] = {
 	{ .compatible = "qcom,rpmcc-msm8226", .data = &rpm_clk_msm8974 },
 	{ .compatible = "qcom,rpmcc-msm8916", .data = &rpm_clk_msm8916 },
@@ -925,6 +978,7 @@ static const struct of_device_id rpm_smd_clk_match_table[] = {
 	{ .compatible = "qcom,rpmcc-msm8998", .data = &rpm_clk_msm8998 },
 	{ .compatible = "qcom,rpmcc-qcs404",  .data = &rpm_clk_qcs404  },
 	{ .compatible = "qcom,rpmcc-sdm660",  .data = &rpm_clk_sdm660  },
+	{ .compatible = "qcom,rpmcc-sm6115",  .data = &rpm_clk_sm6115  },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, rpm_smd_clk_match_table);
diff --git a/include/linux/soc/qcom/smd-rpm.h b/include/linux/soc/qcom/smd-rpm.h
index f2645ec52520..d350685039ad 100644
--- a/include/linux/soc/qcom/smd-rpm.h
+++ b/include/linux/soc/qcom/smd-rpm.h
@@ -37,6 +37,7 @@ struct qcom_smd_rpm;
 #define QCOM_SMD_RPM_IPA_CLK	0x617069
 #define QCOM_SMD_RPM_CE_CLK	0x6563
 #define QCOM_SMD_RPM_AGGR_CLK	0x72676761
+#define QCOM_SMD_RPM_QUP_CLK    0x00707571
 
 int qcom_rpm_smd_write(struct qcom_smd_rpm *rpm,
 		       int state,
-- 
2.32.0


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

* [PATCH v3 2/2] soc: qcom: smd-rpm: Add SM6115 compatible
  2021-07-31 16:48 [PATCH v3 0/2] Add rpmcc and rpmpd for SM4250/6115 Iskren Chernev
  2021-07-31 16:48 ` [PATCH v3 1/2] clk: qcom: smd: Add support for SM6115 rpm clocks Iskren Chernev
@ 2021-07-31 16:48 ` Iskren Chernev
  1 sibling, 0 replies; 5+ messages in thread
From: Iskren Chernev @ 2021-07-31 16:48 UTC (permalink / raw)
  To: Bjorn Andersson, Stephen Boyd
  Cc: Andy Gross, Michael Turquette, linux-arm-msm, linux-clk,
	linux-kernel, phone-devel, ~postmarketos/upstreaming,
	Iskren Chernev

Add a compatible for SM6115

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 drivers/soc/qcom/smd-rpm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/soc/qcom/smd-rpm.c b/drivers/soc/qcom/smd-rpm.c
index bc0be1d4be5f..dfdd4f20f5fd 100644
--- a/drivers/soc/qcom/smd-rpm.c
+++ b/drivers/soc/qcom/smd-rpm.c
@@ -242,6 +242,7 @@ static const struct of_device_id qcom_smd_rpm_of_match[] = {
 	{ .compatible = "qcom,rpm-msm8996" },
 	{ .compatible = "qcom,rpm-msm8998" },
 	{ .compatible = "qcom,rpm-sdm660" },
+	{ .compatible = "qcom,rpm-sm6115" },
 	{ .compatible = "qcom,rpm-sm6125" },
 	{ .compatible = "qcom,rpm-qcs404" },
 	{}
-- 
2.32.0


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

* Re: [PATCH v3 1/2] clk: qcom: smd: Add support for SM6115 rpm clocks
  2021-07-31 16:48 ` [PATCH v3 1/2] clk: qcom: smd: Add support for SM6115 rpm clocks Iskren Chernev
@ 2021-08-06  1:42   ` Stephen Boyd
  2021-08-06 17:03     ` Iskren Chernev
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Boyd @ 2021-08-06  1:42 UTC (permalink / raw)
  To: Bjorn Andersson, Iskren Chernev
  Cc: Andy Gross, Michael Turquette, linux-arm-msm, linux-clk,
	linux-kernel, phone-devel, ~postmarketos/upstreaming,
	Iskren Chernev

Quoting Iskren Chernev (2021-07-31 09:48:26)
> Add rpm smd clocks, PMIC and bus clocks which are required on
> SM4250/6115 for clients to vote on.
> 
> Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
> ---

Applied to clk-next with lots of effort

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

* Re: [PATCH v3 1/2] clk: qcom: smd: Add support for SM6115 rpm clocks
  2021-08-06  1:42   ` Stephen Boyd
@ 2021-08-06 17:03     ` Iskren Chernev
  0 siblings, 0 replies; 5+ messages in thread
From: Iskren Chernev @ 2021-08-06 17:03 UTC (permalink / raw)
  To: Stephen Boyd, Bjorn Andersson
  Cc: Andy Gross, Michael Turquette, linux-arm-msm, linux-clk,
	linux-kernel, phone-devel, ~postmarketos/upstreaming



On 8/6/21 4:42 AM, Stephen Boyd wrote:
> Quoting Iskren Chernev (2021-07-31 09:48:26)
>> Add rpm smd clocks, PMIC and bus clocks which are required on
>> SM4250/6115 for clients to vote on.
>>
>> Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
>> ---
> 
> Applied to clk-next with lots of effort
> 

Thank you! Now I see - the clock defs align perfectly with 6125, you can thank
Konrad for suggesting to reuse the defs, therefore making any 2 patches
conflict due to clock reuse.

Regards,
Iskren

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

end of thread, other threads:[~2021-08-06 17:03 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-31 16:48 [PATCH v3 0/2] Add rpmcc and rpmpd for SM4250/6115 Iskren Chernev
2021-07-31 16:48 ` [PATCH v3 1/2] clk: qcom: smd: Add support for SM6115 rpm clocks Iskren Chernev
2021-08-06  1:42   ` Stephen Boyd
2021-08-06 17:03     ` Iskren Chernev
2021-07-31 16:48 ` [PATCH v3 2/2] soc: qcom: smd-rpm: Add SM6115 compatible Iskren Chernev

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