]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/clk/clk-si5351.c
Merge tag 'clk-for-linus-3.11' of git://git.linaro.org/people/mturquette/linux
[karo-tx-linux.git] / drivers / clk / clk-si5351.c
index e4460d3bf599920bf2f15eca94a98ff874d29522..c50e83744b0aec3a0a8841f068bbbe05adc5ef8d 100644 (file)
@@ -967,7 +967,7 @@ static unsigned long si5351_clkout_recalc_rate(struct clk_hw *hw,
        unsigned char reg;
        unsigned char rdiv;
 
-       if (hwdata->num > 5)
+       if (hwdata->num <= 5)
                reg = si5351_msynth_params_address(hwdata->num) + 2;
        else
                reg = SI5351_CLK6_7_OUTPUT_DIVIDER;
@@ -1545,6 +1545,16 @@ static int si5351_i2c_probe(struct i2c_client *client,
                        return -EINVAL;
                }
                drvdata->onecell.clks[n] = clk;
+
+               /* set initial clkout rate */
+               if (pdata->clkout[n].rate != 0) {
+                       int ret;
+                       ret = clk_set_rate(clk, pdata->clkout[n].rate);
+                       if (ret != 0) {
+                               dev_err(&client->dev, "Cannot set rate : %d\n",
+                                       ret);
+                       }
+               }
        }
 
        ret = of_clk_add_provider(client->dev.of_node, of_clk_src_onecell_get,