[PATCH v1 1/3] clk: qcom: Add QCS615 SDCC clock support and RPMH-CLK compatibility
Balaji Selvanathan
balaji.selvanathan at oss.qualcomm.com
Mon Jan 26 16:59:36 CET 2026
Add SDCC (SD Card Controller) clock support for QCS615 platform to
enable eMMC functionality. This includes adding SDCC1 and SDCC2 clock
gates, implementing SDCC1 apps clock rate configuration
and adding QCS615 RPMH clock compatibility to the stub
driver to handle device tree clock controller references.
Signed-off-by: Balaji Selvanathan <balaji.selvanathan at oss.qualcomm.com>
---
drivers/clk/clk-stub.c | 2 +-
drivers/clk/qcom/clock-qcom.h | 1 +
drivers/clk/qcom/clock-qcs615.c | 10 ++++++++++
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/clk-stub.c b/drivers/clk/clk-stub.c
index 117266ac778..1bc749e47b3 100644
--- a/drivers/clk/clk-stub.c
+++ b/drivers/clk/clk-stub.c
@@ -50,6 +50,7 @@ static struct clk_ops stub_clk_ops = {
static const struct udevice_id stub_clk_ids[] = {
{ .compatible = "qcom,rpmcc" },
+ { .compatible = "qcom,qcs615-rpmh-clk" },
{ .compatible = "qcom,sdm670-rpmh-clk" },
{ .compatible = "qcom,sdm845-rpmh-clk" },
{ .compatible = "qcom,sc7180-rpmh-clk" },
@@ -69,4 +70,3 @@ U_BOOT_DRIVER(clk_stub) = {
.of_match = stub_clk_ids,
.flags = DM_FLAG_DEFAULT_PD_CTRL_OFF,
};
-
diff --git a/drivers/clk/qcom/clock-qcom.h b/drivers/clk/qcom/clock-qcom.h
index 3a4550d8536..bc7e0453cba 100644
--- a/drivers/clk/qcom/clock-qcom.h
+++ b/drivers/clk/qcom/clock-qcom.h
@@ -14,6 +14,7 @@
#define CFG_CLK_SRC_GPLL0_AUX2 (2 << 8)
#define CFG_CLK_SRC_GPLL2 (2 << 8)
#define CFG_CLK_SRC_GPLL2_MAIN (2 << 8)
+#define CFG_CLK_SRC_GPLL6_OUT_MAIN (2 << 8)
#define CFG_CLK_SRC_GPLL9 (2 << 8)
#define CFG_CLK_SRC_GPLL0_ODD (3 << 8)
#define CFG_CLK_SRC_GPLL6 (4 << 8)
diff --git a/drivers/clk/qcom/clock-qcs615.c b/drivers/clk/qcom/clock-qcs615.c
index 4700baba8c9..483642531ef 100644
--- a/drivers/clk/qcom/clock-qcs615.c
+++ b/drivers/clk/qcom/clock-qcs615.c
@@ -18,6 +18,7 @@
#define USB30_PRIM_MOCK_UTMI_CLK_CMD_RCGR 0xf034
#define USB30_PRIM_MASTER_CLK_CMD_RCGR 0xf01c
#define USB3_PRIM_PHY_AUX_CMD_RCGR 0xf060
+#define SDCC1_APPS_CLK_CMD_RCGR 0x12028
#define GCC_QUPV3_WRAP0_S0_CLK_ENA_BIT BIT(10)
#define GCC_QUPV3_WRAP0_S1_CLK_ENA_BIT BIT(11)
@@ -52,6 +53,10 @@ static ulong qcs615_set_rate(struct clk *clk, ulong rate)
5, 0, 0, CFG_CLK_SRC_GPLL0, 8);
clk_rcg_set_rate(priv->base, USB3_PRIM_PHY_AUX_CMD_RCGR, 0, 0);
return rate;
+ case GCC_SDCC1_APPS_CLK:
+ clk_rcg_set_rate(priv->base, SDCC1_APPS_CLK_CMD_RCGR,
+ 1, CFG_CLK_SRC_GPLL6_OUT_MAIN);
+ return rate;
default:
return 0;
}
@@ -66,6 +71,11 @@ static const struct gate_clk qcs615_clks[] = {
GATE_CLK(GCC_USB3_PRIM_PHY_AUX_CLK, 0xf050, BIT(0)),
GATE_CLK(GCC_USB3_PRIM_PHY_COM_AUX_CLK, 0xf054, BIT(0)),
GATE_CLK(GCC_USB3_PRIM_PHY_PIPE_CLK, 0xf058, BIT(0)),
+ GATE_CLK(GCC_SDCC1_AHB_CLK, 0x12008, BIT(0)),
+ GATE_CLK(GCC_SDCC1_APPS_CLK, 0x12004, BIT(0)),
+ GATE_CLK(GCC_SDCC1_ICE_CORE_CLK, 0x1200c, BIT(0)),
+ GATE_CLK(GCC_SDCC2_AHB_CLK, 0x14008, BIT(0)),
+ GATE_CLK(GCC_SDCC2_APPS_CLK, 0x14004, BIT(0)),
GATE_CLK(GCC_QUPV3_WRAP0_S0_CLK, 0x5200c, GCC_QUPV3_WRAP0_S0_CLK_ENA_BIT),
GATE_CLK(GCC_QUPV3_WRAP0_S1_CLK, 0x5200c, GCC_QUPV3_WRAP0_S1_CLK_ENA_BIT),
GATE_CLK(GCC_QUPV3_WRAP0_S2_CLK, 0x5200c, GCC_QUPV3_WRAP0_S2_CLK_ENA_BIT),
--
2.34.1
More information about the U-Boot
mailing list