On Mon, Jan 26, 2026 at 09:29:36PM +0530, Balaji Selvanathan wrote:
> 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 <[email protected]>
> ---
>  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(-)

Reviewed-by: Sumit Garg <[email protected]>

-Sumit

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

Reply via email to