+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;
+       }
+}
+

Reply via email to