+static ulong sm8150_clk_set_rate(struct clk *clk, ulong rate)
+{
+ struct msm_clk_priv *priv = dev_get_priv(clk->dev);
+ const struct freq_tbl *freq;
+
+ switch (clk->id) {
+ case GCC_QUPV3_WRAP1_S4_CLK: /* UART2 aka debug-uart */
+ freq = qcom_find_freq(ftbl_gcc_qupv3_wrap0_s0_clk_src, rate);
+ clk_rcg_set_rate_mnd(priv->base, QUPV3_WRAP0_S0_CLK_CMD_RCGR,
+ freq->pre_div, freq->m, freq->n,
freq->src, 16);
+ return freq->freq;
+ case GCC_EMAC_RGMII_CLK:
+ freq = qcom_find_freq(ftbl_gcc_emac_rgmii_clk_src, rate);
+ clk_rcg_set_rate_mnd(priv->base, EMAC_RGMII_CLK_CMD_RCGR,
+ freq->pre_div, freq->m, freq->n,
freq->src, 8);
+ return freq->freq;
+ case GCC_USB30_PRIM_MASTER_CLK:
+ freq = qcom_find_freq(ftbl_gcc_usb30_prim_master_clk_src, rate);
+ clk_rcg_set_rate_mnd(priv->base, USB30_PRIM_MASTER_CLK_CMD_RCGR,
+ freq->pre_div, freq->m, freq->n,
freq->src, 8);
+ return freq->freq;
+ case GCC_USB30_PRIM_MOCK_UTMI_CLK:
+ freq = qcom_find_freq(ftbl_gcc_usb30_prim_mock_utmi_clk_src,
rate);
+ clk_rcg_set_rate_mnd(priv->base,
USB30_PRIM_MOCK_UTMI_CLK_CMD_RCGR,
+ freq->pre_div, freq->m, freq->n,
freq->src, 8);
+ return freq->freq;
+ case GCC_USB3_PRIM_PHY_AUX_CLK_SRC:
+ freq = qcom_find_freq(ftbl_gcc_usb30_prim_mock_utmi_clk_src,
rate);
+ clk_rcg_set_rate_mnd(priv->base,
USB30_PRIM_MOCK_UTMI_CLK_CMD_RCGR,
this doesn't seem right, should probably be a different CMD_RCGR
+ freq->pre_div, freq->m, freq->n,
freq->src, 8);
+ return freq->freq;
+ case GCC_USB30_SEC_MASTER_CLK:
+ freq = qcom_find_freq(ftbl_gcc_usb30_prim_master_clk_src, rate);
+ clk_rcg_set_rate_mnd(priv->base, USB30_SEC_MASTER_CLK_CMD_RCGR,
+ freq->pre_div, freq->m, freq->n,
freq->src, 8);
+ return freq->freq;
+ case GCC_USB30_SEC_MOCK_UTMI_CLK:
+ freq = qcom_find_freq(ftbl_gcc_usb30_prim_mock_utmi_clk_src,
rate);
+ clk_rcg_set_rate_mnd(priv->base,
USB30_SEC_MOCK_UTMI_CLK_CMD_RCGR,
+ freq->pre_div, freq->m, freq->n,
freq->src, 8);
+ return freq->freq;
+ case GCC_USB3_SEC_PHY_AUX_CLK_SRC:
+ freq = qcom_find_freq(ftbl_gcc_usb30_prim_mock_utmi_clk_src,
rate);
+ clk_rcg_set_rate_mnd(priv->base,
USB30_SEC_MOCK_UTMI_CLK_CMD_RCGR,
same here
+ freq->pre_div, freq->m, freq->n,
freq->src, 8);
+ return freq->freq;
+ default:
+ return 0;
+ }
+}
+