clk: at91: clk-system: add set/get_rate operations
authorWenyou Yang <wenyou.yang@microchip.com>
Fri, 9 Feb 2018 03:34:52 +0000 (11:34 +0800)
committerTom Rini <trini@konsulko.com>
Fri, 16 Mar 2018 11:30:04 +0000 (07:30 -0400)
To support set/get the clock rate, add set/get_rate operations.

Signed-off-by: Wenyou Yang <wenyou.yang@microchip.com>
drivers/clk/at91/clk-system.c

index 24b271aa181587faff717ea74a606b5b54e105d8..81fe47a9d7b3a649d4d811810e4aeddfdb1157b2 100644 (file)
@@ -44,6 +44,30 @@ static inline int is_pck(int id)
        return (id >= 8) && (id <= 15);
 }
 
+static ulong system_clk_get_rate(struct clk *clk)
+{
+       struct clk clk_dev;
+       int ret;
+
+       ret = clk_get_by_index(clk->dev, 0, &clk_dev);
+       if (ret)
+               return -EINVAL;
+
+       return clk_get_rate(&clk_dev);
+}
+
+static ulong system_clk_set_rate(struct clk *clk, ulong rate)
+{
+       struct clk clk_dev;
+       int ret;
+
+       ret = clk_get_by_index(clk->dev, 0, &clk_dev);
+       if (ret)
+               return -EINVAL;
+
+       return clk_set_rate(&clk_dev, rate);
+}
+
 static int system_clk_enable(struct clk *clk)
 {
        struct pmc_platdata *plat = dev_get_platdata(clk->dev);
@@ -73,6 +97,8 @@ static int system_clk_enable(struct clk *clk)
 
 static struct clk_ops system_clk_ops = {
        .of_xlate = at91_clk_of_xlate,
+       .get_rate = system_clk_get_rate,
+       .set_rate = system_clk_set_rate,
        .enable = system_clk_enable,
 };